OSDN Git Service

7392287cd4975cbe8e9858ba7ded8202e74a7c9c
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2008-01-03  Andrew Haley  <aph@redhat.com>
2
3         PR java/17779
4         * jcf-parse.c (parse_zip_file_entries): Unset TYPE_ALIAS_SET if
5         we're about to re-layout the type.
6
7 2007-12-20  Alexandre Oliva  <aoliva@redhat.com>
8
9         * lang.c (java_classify_record): Don't return
10         RECORD_IS_INTERFACE for now.
11
12 2007-12-18  Andrew Haley  <aph@redhat.com>
13
14         PR java/27643
15         * jcf-parse.c (java_parse_file): Remove call to
16         java_mark_class_local.
17         (parse_class_file): Reinstate call to java_mark_class_local here.
18         * decl.c (java_mark_cni_decl_local): If the ASSEMBLER_NAME is
19         already set, call java_mangle_decl() and make_decl_rtl() to
20         rewrite its name as a hidden alias.
21
22 2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
23
24         PR debug/7081
25         * lang.c (java_classify_record): New.
26         (LANG_HOOKS_CLASSIFY_RECORD): Override.
27
28 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
29
30         PR 34081/C++
31         * decl.c (finish_method): Pass 'false' for the new
32         allocate_struct_function parameter.
33
34 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
35
36         * expr.c (build_jni_stub): Use the computed jni func type for
37         variable meth.
38
39 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
40
41         * class.c (JAVA_TREEHASHHASH_H): Use TYPE_UID.
42
43 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
44
45         * expr.c (type_assertion_hash): Hash type uids rather than
46         tree pointers.
47
48 2007-11-17  David Daney  <ddaney@avtrex.com>
49             Andrew Haley  <aph@redhat.com>
50
51         * constants.c (build_constants_constructor):  Use POINTER_SIZE
52         insead of BITS_PER_WORD in big-endian work around.
53
54 2007-11-07  Tom Tromey  <tromey@redhat.com>
55
56         PR java/34019:
57         * gcj.texi (Input Options): Add missing noun.
58
59 2007-11-02  Tom Tromey  <tromey@redhat.com>
60
61         PR java/33765:
62         * jcf-parse.c (java_parse_file): Ignore ZIPEMPTYMAGIC files.
63         * zipfile.h (ZIPEMPTYMAGIC): New define.
64
65 2007-11-01  Tom Tromey  <tromey@redhat.com>
66
67         * Make-lang.in (java/jcf-dump.o): Depend on zipfile.h.
68         (java/jcf-parse.o): Depend on jcf-reader.c, zipfile.h, and jcf.h.
69         (java/jcf-io.o): Depend on zipfile.h.
70
71 2007-10-17  Richard Guenther  <rguenther@suse.de>
72
73         * Make-lang.in (java/builtins.o): Add $(OPTABS_H) and $(EXPR_H)
74         dependencies.
75
76 2007-10-03  Andrew Haley  <aph@redhat.com>
77
78         PR java/33639
79         * class.c (mangled_classname): Detect and replace illegal
80         characters in assembly language symbols.
81         (gen_indirect_dispatch_tables): Call mangled_classname() on
82         the type.
83
84 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
85
86         * lang.c (java_print_error_function): Add third argument.
87
88 2007-09-15  Tom Tromey  <tromey@redhat.com>
89
90         * java-tree.h (struct lang_decl_func) <function_decl_body>:
91         Remove.
92         <init_final>: Likewise.
93         * lang.c (java_dump_tree): Update.
94         * java-tree.h (DECL_FUNCTION_BODY): Remove.
95
96 2007-09-11  Jan Hubicka <jh@suse.cz>
97
98         * decl.c (java_expand_body): Kill.
99         (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
100
101 2007-09-06  Tom Tromey  <tromey@redhat.com>
102
103         * jcf-parse.c (parse_class_file): Re-enter the current file.
104
105 2007-09-07  Roman Zippel  <zippel@linux-m68k.org>
106
107         * boehm.c (mark_reference_fields): Move misaligned pointer check
108         after JREFERENCE_TYPE_P test
109
110 2007-09-06  Roman Zippel  <zippel@linux-m68k.org>
111
112         * boehm.c (mark_reference_fields): Don't use bitmap as gc_descr
113         if pointer is misaligned.
114
115 2007-09-06  Tom Tromey  <tromey@redhat.com>
116
117         * lang.c (java_post_options): Update.
118         * jcf-parse.c (set_source_filename): Update.
119         (give_name_to_class): Update.
120         (jcf_parse): Update.
121         (duplicate_class_warning): Update.
122         (parse_class_file): Update.
123         (java_parse_file): Update.
124         * expr.c (expand_byte_code): Update.
125
126 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
127
128         * decl.c (finish_method): Use set_cfun.
129
130 2007-09-04  Andrew Haley  <aph@redhat.com>
131
132         * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup"
133         when using the ARM EABI.
134
135 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
136
137         * Make-lang.in (jvspec.o): Remove SHLIB_MULTILIB.
138
139 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
140
141         * jcf-parse.c (read_class, java_parse_file): Supply a TYPE for
142         CONST_CAST.
143         * jcf.h (JCF_FINISH): Likewise.
144
145 2007-08-28  Tom Tromey  <tromey@redhat.com>
146
147         * Make-lang.in (java.tags): Don't tag '*.y' files.
148
149 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
150
151         * lang.c (java_decl_ok_for_sibcall): Likewise.
152
153 2007-08-21  Paul Brook  <paul@codesourcery.com>
154             Nathan Sidwell  <nathan@codesourcery.com>
155             Mark Mitchell  <mark@codesourcery.com>
156             Joseph Myers  <joseph@codesourcery.com>
157
158         * jcf-dump.c (version): Use pkgversion_string.  Update copyright
159         date.
160
161 2007-08-20  Richard Guenther  <rguenther@suse.de>
162
163         * lang.c (java_tree_inlining_walk_subtrees): Remove.
164         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove.
165
166 2007-08-17  Tom Tromey  <tromey@redhat.com>
167
168         * typeck.c (find_method_in_interfaces): Update.
169         * jcf-parse.c (load_class): Update.
170         * java-gimplify.c (java_gimplify_component_ref): Removed.
171         (java_gimplify_modify_expr): Update.  Removed pre_p and post_p
172         arguments.
173         (java_gimplify_expr): Update.
174         * decl.c (java_init_decl_processing): Update.
175         * class.c (set_constant_value): Update.
176         (make_class_data): Update.
177         (finish_class): Update.
178         (build_static_field_ref): Update.
179         (is_compiled_class): Update.
180         (maybe_layout_super_class): Update.
181         (layout_class): Update.
182         (layout_class_method): Update.
183         * java-tree.h (CAN_COMPLETE_NORMALLY): Removed.
184         (lang_decl_var) <am, final_iud, cif>: Removed fields.
185         (lang_decl_func) <init_calls_this>: Removed field.
186         (lang_type) <dot_class, verify_method>: Removed fields.
187         (FIELD_NESTED_ACCESS): Removed.
188         (FIELD_NESTED_ACCESS_P): Removed.
189         (DECL_FIELD_FINAL_IUD): Removed.
190         (DECL_LOCAL_FINAL_IUD): Removed
191         (LOCAL_FINAL_P): Removed.
192         (FINAL_VARIABLE_P): Removed.
193         (CLASS_FINAL_VARIABLE_P): Removed.
194         (DECL_BIT_INDEX): Removed.
195         (DECL_INIT_CALLS_THIS): Removed.
196         (FIELD_LOCAL_ALIAS): Removed.
197         (FIELD_LOCAL_ALIAS_USED): Removed.
198         (FIELD_THISN): Removed.
199         (DECL_FUNCTION_INIT_TEST_CLASS): Removed.
200         (LOCAL_CLASS_INITIALIZATION_FLAG): Removed.
201         (LOCAL_CLASS_INITIALIZATION_FLAG_P): Removed.
202         (TYPE_DOT_CLASS): Removed.
203         (TYPE_VERIFY_METHOD): Removed.
204         (ID_CLASSDOLLAR_P): Removed.
205         (enum java_tree_index) <JTI_CLASSDOLLAR_IDENTIFIER_NODE>:
206         Removed.
207         (classdollar_identifier_node): Removed.
208         (TYPE_UNKNOWN): Removed.
209         (CLASS_FROM_SOURCE_P): Removed.
210         * expr.c (build_jni_stub): Update.
211         (force_evaluation_order): Update.
212         (build_java_empty_stmt): Update.
213         (build_class_init): Update.
214         (java_stack_swap): Update.
215         (build_jni_stub): Update.
216
217 2007-08-17  Tom Tromey  <tromey@redhat.com>
218
219         * java-tree.h (LABEL_TYPE_STATE): Removed.
220         (load_type_state): Removed.
221         (LABEL_PC): Removed.
222         (LABEL_VERIFIED): Removed.
223         (type_states): Declare.
224         * expr.c (type_states): New global.
225         (load_type_state): Now static.  Use type_states.  Changed
226         argument.
227         (lookup_label): Don't set LABEL_PC.
228         (expand_byte_code): Don't use LABEL_VERIFIED.
229         (note_instructions): Initialize type_states.
230         * verify-glue.c (vfy_note_stack_depth): Rewrote.
231         (vfy_note_stack_type): Use type_states.
232         (vfy_note_local_type): Likewise.
233
234 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
235
236         * jcf-parse.c (read_class, java_parse_file): Use CONST_CAST.
237         * jcf.h (JCF_FINISH): Likewise.
238
239 2007-07-31  Nick Clifton  <nickc@redhat.com>
240
241         * java-gimplify.c: Change copyright header to refer to version 3
242         of the GNU General Public License and to point readers at the
243         COPYING3 file and the FSF's license web page.
244         * typeck.c, lang-specs.h, mangle_name.c, jcf-dump.c, class.c,
245         decl.c, config-lang.in, jcf-parse.c, constants.c, Make-lang.in,
246         resource.c, except.c, builtins.c, jvspec.c, java-tree.def,
247         javaop.def, jcf-path.c, verify-glue.c, jcf-depend.c, lang.opt,
248         jcf-reader.c, mangle.c, zextract.c, jcf-io.c, jcf.h, zipfile.h,
249         verify.h, java-except.h, win32-host.c, expr.c, jvgenmain.c,
250         parse.h, lang.c, java-tree.h, javaop.h, boehm.c: Likewise.
251
252 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
253
254         * jcf-io.c (find_class): Fix -Wcast-qual warnings.
255
256 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
257
258         * lang.c (java_get_callee_fndecl): Constify.
259
260 2007-07-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
261
262         * mangle.c (set_type_package_list): Constify.
263         * verify-glue.c (vfy_make_string): Delete.
264         * verify.h (vfy_make_string): Likewise.
265
266 2007-07-26  Tom Tromey  <tromey@redhat.com>
267
268         * java-tree.h (push_labeled_block, pop_labeled_block): Remove.
269         (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY,
270         EXIT_BLOCK_LABELED_BLOCK): Likewise.
271         * lang.c (java_tree_inlining_walk_subtrees): Update.
272         (java_dump_tree): Likewise.
273         * java-tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRY_EXPR):
274         Remove.
275         * decl.c (push_labeled_block, pop_labeled_block): Remove.
276         * java-gimplify.c (java_gimplify_labeled_block_expr,
277         java_gimplify_exit_block_expr, java_gimplify_try_expr): Remove.
278         (java_gimplify_expr): Update.
279
280 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
281
282         * class.c (java_treetreehash_hash, java_treetreehash_compare):
283         Constify. 
284         * expr.c (type_assertion_eq): Likewise.
285         * jcf-io.c (compare_path): Likewise.
286         * jcf-parse.c (cmpstringp): Likewise.
287         * verify-impl.c (get_one_type, compute_argument_types,
288         compute_return_type): Likewise. 
289
290 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
291
292         PR target/32462
293         PR libgcj/32465
294         * class.c (hide): Wrap in HAVE_GAS_HIDDEN.
295
296 2007-07-12  Richard Guenther  <rguenther@suse.de>
297
298         * expr.c (expand_java_return): RETURN_EXPR has void type.
299         (build_jni_stub): Likewise.  Use a comparison against zero
300         for null-pointer test in COND_EXPR.
301         (build_field_ref): Build POINTER_PLUS_EXPR with correct
302         type.  Convert result instead.
303         (build_invokevirtual): Likewise.
304
305 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
306
307         PR 32617
308         * lang.c (java_init): Remove setting of force_align_functions_log.
309         * class.c (add_method_1): Set DECL_ALIGN of non-static method
310         to cope with ptrmemfunc_vbit_in_pfn.
311
312 2007-07-03  David Daney  <ddaney@avtrex.com>
313
314         * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to 
315         include path.
316         (doc/gcj.dvi): Same.
317         (doc/gcj.pdf): Same.
318         (java/index.html): Same.
319
320 2007-06-15 Andrew Pinski  <andrew_pinski@playstation.sony.com>
321
322         * class.c (make_class_data): Build the index in sizetype.
323         Use POINTER_PLUS_EXPR instead of PLUS_EXPR when
324         adding to a pointer type.
325         (build_symbol_entry): Likewise.
326         * expr.c (build_java_arrayaccess): Likewise.
327         (build_field_ref): Likewise.
328         (build_known_method_ref): Likewise.
329         (build_invokevirtual): Likewise.
330         * except.c (build_exception_object_ref): Do a
331         NEGATIVE and then a POINTER_PLUS_EXPR instead
332         of a MINUS_EXPR.
333
334 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
335
336         * typeck.c (java_signed_type): Remove.
337         * lang.c (LANG_HOOKS_SIGNED_TYPE): Remove.
338         * java-tree.h (java_signed_type): Remove.
339
340 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
341
342         * jcf-dump.c (HANDLE_MAGIC): Use 'unsigned long' for %lx.
343         (print_constant): Likewise.
344
345 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
346
347         * expr.c (build_java_binop): Use unsigned_type_for instead of
348         java_unsigned_type.
349         * java-tree.h (java_unsigned_type): Remove.
350         * lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
351         * typeck.c (java_unsigned_type): Remove.
352
353 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
354
355         * java-tree.h (lang_tree_node): Use GENERIC_NEXT
356         instead of checking GIMPLE_STMT_P in chain_next.
357
358 2007-04-06  Colin Walters  <walters@redhat.com>
359
360         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161701
361         * jcf-io.c (open_class): Copy 'filename'.
362
363 2007-04-03  Andrew Haley  <aph@redhat.com>
364
365         * jvgenmain.c (main): Change main to use class$, not class$$.
366         (do_mangle_classname): Likewise.
367         * class.c (hide): New function.
368         (add_field): Hide everything that shouldn't be visible outside a
369         DSO.
370         (build_static_class_ref): Likewise.
371         (build_classdollar_field): Likewise.
372         (make_class_data): Likewise.
373         (layout_class_method): Likewise.
374         * expr.c (special_method_p): New function.
375
376         * class.c (push_class): Don't bogusly guess the source filename.
377         * jcf-parse.c (give_name_to_class): Don't set input_location from
378         DECL_ARTIFICIAL decls.
379
380 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
381
382         * typeck.c (java_signed_or_unsigned_type): Removed.
383         (java_signed_type): use get_signed_or_unsigned_type instead of
384         java_signed_or_unsigned_type.
385         (java_unsigned_type): Ditto.
386         * lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Removed.
387         * java-tree.h (java_signed_or_unsigned_type): Removed.
388
389 2007-03-26  Tom Tromey  <tromey@redhat.com>
390
391         * Make-lang.in (JAVA_MANFILES): Removed grmiregistry.1.
392         (java.maintainer-clean): Likewise.
393         (java.install-man): Likewise.
394         (.INTERMEDIATE): Removed grmiregistry.pod.
395         (grmiregistry.pod): Removed.
396         * gcj.texi (Invoking gcjh): Removed.
397         (Invoking gjnih): Likewise.
398         (Invoking grmiregistry): Likewise.
399         (direntry): Updated.
400         (Top): Likewise.
401         (which-gcj): Removed.
402
403 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
404
405         * Make-lang.in: Add install-pdf target as copied from
406         automake v1.10 rules.
407
408 2007-02-27  Brooks Moses  <brooks.moses@codesourcery.com>
409
410         * gcj.texi: Standardize title page.
411
412 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
413
414         * class.c: Fix a comment typo.
415
416 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
417             Brooks Moses  <brooks.moses@codesourcery.com>
418             Lee Millward  <lee.millward@codesourcery.com>
419
420         * java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead
421         of build3.
422         (BUILD_MONITOR_EXIT): Likewise.
423
424         * java-gimplify.c (java_gimplify_component_ref): Use build_call_expr.
425         (java_gimplify_modify_expr): Likewise.
426
427         * class.c (cache_this_class_ref): Use build_call_expr.
428         (build_static_field_ref): Likewise.
429         (emit_indirect_register_classes): Likewise.
430         (emit_register_classes): Likewise.
431
432         * resource.c (write_resource_constructor): Use build_call_expr.
433
434         * builtins.c (builtin_creator_function): Change interpretation of
435         the second parameter to be the whole CALL_EXPR instead of the arglist.
436         (max_builtin): Tweak parameter list.  Use new CALL_EXPR accessors.
437         (min_builtin): Likewise.
438         (abs_builtin): Likewise.
439         (java_build_function_call_expr): Likewise.
440         (convert_real): Likewise.
441         (UNMARSHAL3): Likewise.
442         (UNMARSHAL4): Likewise.
443         (UNMARSHAL5): Likewise.
444         (build_arglist_for_builtin): Delete.  Fix callers to use
445         build_call_expr instead.
446         (putObject_builtin): Tweak parameter list.  Use new CALL_EXPR
447         accessors.
448         (compareAndSwapInt_builtin): Likewise.
449         (compareAndSwapLong_builtin): Likewise.
450         (compareAndSwapObject_builtin): Likewise.
451         (putVolatile_builtin): Likewise.
452         (getVolatile_builtin): Likewise.
453         (VMSupportsCS8_builtin): Likewise.
454         (check_for_builtin): Pass entire CALL_EXPR to builtin expander
455         instead of arglist.
456
457         * expr.c (build_java_athrow): Use build_call_nary instead of build3.
458         (build_java_throw_out_of_bounds_exception): Likewise.
459         (java_check_reference): Likewise.
460         (build_java_arraystore_check): Likewise.
461         (build_newarray): Likewise.
462         (build_anewarray): Likewise.
463         (expand_java_multinewarray): Use build_call_list instead of build3.
464         (build_java_monitor): Use build_call_nary instead of build3.
465         (java_create_object): Likewise.
466         (expand_java_NEW): Likewise.
467         (build_instanceof): Likewise.
468         (expand_java_CHECKCAST): Likewise.
469         (build_java_soft_divmod): Likewise.
470         (build_java_binop): Likewise.
471         (build_field_ref): Likewise.
472         (build_class_init): Likewise.
473         (rewrite_arglist_getcaller): Use build_call_expr.
474         (build_invokeinterface):  Use build_call_nary instead of build3.
475         (expand_invoke): Use build_call_list instead of build3.
476         (build_jni_stub): Use build_call_nary, build_call_list, or
477         build_call_expr instead of build3.
478         (expand_java_field_op): Use build_call_expr instead of build3.
479         (force_evaluation_order): Use new CALL_EXPR accessors.
480
481         * lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors.
482
483 2007-02-15  David Daney  <ddaney@avtrex.com>
484
485         * Make-lang.in (JAVA_MANFILES): Add doc/gc-analyze.1.
486         (java.maintainer-clean):Add gc-analyze.1.
487         (.INTERMEDIATE): Add gc-analyze.pod.
488         (gc-analyze.pod): New rule.
489         (java.install-man): Install gc-analyze.1
490         * gcj.texi: Add new section for the gc-analyze program.
491
492 2007-02-07  Andrew Haley  <aph@redhat.com>
493
494         * class.c (uncache_this_class_ref): New.
495         * expr.c (build_jni_stub): Initialize the class.
496         (expand_byte_code): Call uncache_this_class_ref after generating
497         code.
498
499 2007-02-06  Tom Tromey  <tromey@redhat.com>
500
501         PR java/30714:
502         * jvspec.c (lang_specific_driver): Check for the '-' in '-I'.
503
504 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
505
506         * java-tree.h, javaop.def, jcf-parse.c: Fix comment typos.
507
508 2007-02-02  Andrew Haley  <aph@redhat.com>
509
510         * expr.c (expand_byte_code): Call cache_this_class_ref() and
511         cache_cpool_data_ref().
512         Set TYPE_CPOOL_DATA_REF.
513         (cache_cpool_data_ref): New function.
514         * constants.c (build_ref_from_constant_pool): Remove special-case
515         code for flag_indirect_classes.
516         (build_constant_data_ref): Move special-case code for
517         flag_indirect_classes here from build_ref_from_constant_pool.
518         * decl.c (finish_method): Move class initialization from here to
519         cache_this_class_ref.
520         * class.c (cache_this_class_ref): New function.
521         (build_class_ref): Use this_classdollar for the ouput class.
522
523 2007-02-02  David Daney  <ddaney@avtrex.com>
524
525         * class.c (is_compiled_class): Move check to avoid reloading
526         current class.
527         (layout_class_method): Don't calculate DECL_EXTERNAL if it is
528         already set.
529
530 2007-02-01  Andrew Haley  <aph@redhat.com>
531
532         PR java/30641
533         * jcf-parse.c (jcf_parse): Clear the field_offsets bitmap.
534
535 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
536
537         * class.c, jcf-parse.c: Fix comment typos.
538
539 2007-01-30  Tom Tromey  <tromey@redhat.com>
540
541         * gcj.texi (Strings): Fix documentation for JvNewString.
542
543 2007-01-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
544
545         * gcj.texi (Invoking gcjh, Invoking gjnih, Arrays): Fix some
546         typos.
547
548 2007-01-30  Ben Elliston  <bje@au.ibm.com>
549
550         * jvspec.c (lang_specific_driver): Remove unused classpath_args.
551
552 2007-01-29  Tom Tromey  <tromey@redhat.com>
553
554         PR java/30607:
555         * jvspec.c (lang_specific_driver): Handle separate -I argument.
556         * lang.opt (-I): Add 'Separate'.
557
558 2007-01-29  Andrew Haley  <aph@redhat.com>
559
560         * class.c (add_method_1): Mark fndecl as external unless we are
561         compiling it into this object file.
562
563 2007-01-24  Andrew Haley  <aph@redhat.com>
564
565         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a
566         type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC.
567
568 2007-01-22  Andrew Haley  <aph@redhat.com>
569
570         * builtins.c (VMSupportsCS8_builtin): New function.
571
572 2007-01-23  Andrew Pinski  <pinskia@gmail.com>
573
574         PR java/30454
575         * jcf-io.c (opendir_in_zip): Close the file
576         and free zipf before returning after an error.
577
578 2007-01-16  Tom Tromey  <tromey@redhat.com>
579
580         * java-tree.def: Added copyright header.
581
582 2007-01-15  Tom Tromey  <tromey@redhat.com>
583
584         * lang.c (dump_compound_expr) <EXPR_WITH_FILE_LOCATION>: Removed
585         case.
586         * java-gimplify.c (java_gimplify_expr) <EXPR_WITH_FILE_LOCATION>:
587         Removed case.
588         * java-tree.h (EXPR_WFL_EMIT_LINE_NOTE): Removed.
589         (EXPR_WFL_NODE): Likewise.
590         (EXPR_WFL_LINECOL): Likewise.
591         (EXPR_WFL_FILENAME): Likewise.
592         (EXPR_WFL_LINENO): Likewise.
593         (build_expr_wfl, expr_add_location): Don't declare.
594         (build_unknown_wfl): Removed.
595         (EXPR_WFL_FILENAME_NODE): Removed.
596         (EXPR_WFL_COLNO): Removed.
597         (EXPR_WFL_SET_LINECOL): Removed.
598         (DECL_FUNCTION_WFL): Removed.
599         (DECL_FIELD_FINAL_WFL): Removed.
600         (struct lang_decl_func) <wfl>: Removed field.
601         <called_constructor>: Likewise.
602         <inner_access>: Likewise.
603         (struct lang_decl_var) <wfl>: Removed field.
604         (DECL_CONSTRUCTOR_CALLS): Removed.
605         (DECL_FUNCTION_ACCESS_DECL): Likewise.
606         (DECL_FUNCTION_INNER_ACCESS): Likewise.
607         (DECL_SPECIFIC_COUNT): Likewise.
608         * java-tree.def (EXPR_WITH_FILE_LOCATION): Removed.
609         * expr.c (build_expr_wfl): Removed.
610         (expr_add_location): Likewise.
611
612 2007-01-12  Tom Tromey  <tromey@redhat.com>
613
614         * jcf-dump.c (main): Updated call to find_class.
615         * lang.c (java_init): Removed dead code.
616         * jcf-parse.c (read_class): Don't use java_source field.  Removed
617         dead code.
618         (parse_zip_file_entries): Don't use java_source field.
619         (process_zip_dir): Likewise.
620         (jcf_parse): Removed dead code.
621         (java_parse_file): Likewise.
622         (read_class): Updated call to find_class.
623         * jcf-io.c (find_class): Don't use java_source field.  Removed
624         'source_ok' argument, .java logic.
625         * jcf.h (JCF) <java_source>: Removed field.
626         (JCF_ZERO): Updated.    (find_class): Updated.
627         * decl.c: Removed dead code.
628         * class.c: Removed dead code.
629
630 2007-01-11  Tom Tromey  <tromey@redhat.com>
631
632         * typeck.c (convert): Don't use flag_emit_class_files.
633         * lang.c (java_post_options): Don't use flag_emit_class_files.
634         (java_handle_option): Don't use flag_extraneous_semicolon or
635         flag_redundant.
636         * jcf-parse.c (HANDLE_CONSTANTVALUE): Don't use
637         flag_emit_class_files.
638         (load_class): Likewise.
639         * java-tree.h (flag_emit_class_files): Don't declare.
640         (STATIC_CLASS_INIT_OPT_P): Don't use flag_emit_class_files.
641         (flag_extraneous_semicolon): Don't declare.
642         (flag_not_overriding): Likewise.
643         (flag_static_local_jdk1_1): Likewise.
644         (flag_redundant): Likewise.
645         * expr.c (build_newarray): Don't use flag_emit_class_files.
646         * class.c (DEFAULT_ENABLE_ASSERT): Don't use
647         flag_emit_class_files.
648         (build_class_ref): Likewise.
649         * builtins.c (check_for_builtin): Don't use
650         flag_emit_class_files.
651
652 2007-01-10  Tom Tromey  <tromey@redhat.com>
653
654         * lang.c (java_can_use_bit_fields_p): Removed.
655         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
656
657 2007-01-09  Andrew Haley  <aph@redhat.com>
658
659         * expr.c (build_java_arrayaccess): Rewrite to generate array
660         access in canonical form.
661         (expand_java_arraystore): Use build_fold_addr_expr() on address of
662         array access.
663
664 2007-01-03  Andrew Haley  <aph@redhat.com>
665
666         PR java/28754
667         * expr.c (expand_java_field_op): If we're initializing a field's
668         declaring interface we should not also initialize the class
669         context in which it was referenced.
670
671 2007-01-02  Tom Tromey  <tromey@redhat.com>
672
673         * java-tree.h (compiling_from_source, current_encoding,
674         JTI_FINIT_IDENTIFIER_NODE, JTI_INSTINIT_IDENTIFIER_NODE,
675         JTI_LENGTH_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE,
676         JTI_CONTINUE_IDENTIFIER_NODE, JTI_ACCESS0_IDENTIFIER_NODE,
677         JTI_WFL_OPERATOR): Removed
678         (finit_identifier_node, instinit_identifier_node,
679         length_identifier_node, super_identifier_node,
680         continue_identifier_node, access0_identifier_node, wfl_operator):
681         Removed.
682         (cyclic_inheritance_report,
683         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND,
684         DECL_FUNCTION_NAP, DECL_FUNCTION_SYNTHETIC_CTOR,
685         DECL_FIXED_CONSTRUCTOR_P): Removed.
686         (struct lang_decl_func) <smic, nap, synthetic_ctor, fixed_ctor>:
687         Removed.
688         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST, TYPE_II_STMT_LIST,
689         TYPE_IMPORT_LIST, TYPE_IMPORT_DEMAND_LIST): Removed.
690         (struct lang_type) <finit_stmt_list, clinit_stmt_list, ii_block,
691         import_list, import_demand_list>: Removed.
692         (java_layout_seen_class_methods, init_jcf_parse, init_src_parse,
693         cxx_keyword_p): Removed.
694         (DECL_FINIT_P, DECL_INSTINIT_P, ID_FINIT_P, ID_INSTINIT_P,
695         TYPE_UNUSED, TYPE_UNDERFLOW, TYPE_UNEXPECTED,
696         CLASS_ACCESS0_GENERATED_P, CLASS_HAS_FINIT_P,
697         IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
698         IS_AN_IMPORT_ON_DEMAND_P, COMPOUND_ASSIGN_P, SWITCH_HAS_DEFAULT,
699         PRIMARY_P, MODIFY_EXPR_FROM_INITIALIZATION_P,
700         CLASS_METHOD_CHECKED_P, FOR_LOOP_P, ANONYMOUS_CLASS_P,
701         LOCAL_CLASS_P, ARG_FINAL_P, SUPPRESS_UNREACHABLE_ERROR,
702         RESOLVE_PACKAGE_NAME_P, RESOLVE_TYPE_NAME_P, IS_BREAK_STMT_P,
703         IS_CRAFTED_STRING_BUFFER_P, IS_INIT_CHECKED, CALL_USING_SUPER,
704         NESTED_FIELD_ACCESS_IDENTIFIER_P, TOPLEVEL_CLASS_DECL_P,
705         PURE_INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
706         CALL_CONSTRUCTOR_P, CALL_EXPLICIT_CONSTRUCTOR_P,
707         CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P,
708         FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, BLOCK_IS_IMPLICIT,
709         BLOCK_EMPTY_P, IS_UNCHECKED_EXCEPTION_P, java_error_count,
710         java_parse_abort_on_error, extract_field_decl): Removed.
711         (finput): Declare.
712         * lang.c: (compiling_from_source, current_encoding): Removed.
713         (java_handle_option): Ignore -fencoding.
714         * parse.h: Don't include lex.h.
715         (java_error_count, int_fits_type_p, stabilize_reference, RULE,
716         RECOVERED, DRECOVERED, RECOVER, DRECOVER, YYERROR_NOW,
717         YYNOT_TWICE, CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
718         INTERFACE_MODIFIERS, INTERFACE_INNER_MODIFIERS,
719         INTERFACE_METHOD_MODIFIERS, INTERFACE_FIELD_MODIFIERS,
720         MODIFIER_WFL, THIS_MODIFIER_ONLY, parse_error_context,
721         ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, exit_java_complete_class,
722         CLASS_OR_INTERFACE, GET_REAL_TYPE, GET_TYPE_NAME,
723         OBSOLETE_MODIFIER_WARNING, OBSOLETE_MODIFIER_WARNING2,
724         BUILD_PTR_FROM_NAME, INCOMPLETE_TYPE_P,
725         JAVA_MAYBE_GENERATE_DEBUG_INFO, JBSC_TYPE_P, JSTRING_P,
726         JNULLP_TYPE_P, JDECL_P, TYPE_INTERFACE_P, TYPE_CLASS_P,
727         IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS,
728         MANGLE_OUTER_LOCAL_VARIABLE_NAME,
729         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID,
730         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING,
731         SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
732         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP,
733         AIPL_FUNCTION_CREATION, AIPL_FUNCTION_DECLARATION,
734         AIPL_FUNCTION_CTOR_INVOCATION, AIPL_FUNCTION_FINIT_INVOCATION,
735         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
736         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED,
737         LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
738         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
739         LOOP_EXPR_BODY_BODY_EXPR, PUSH_LABELED_BLOCK, POP_LABELED_BLOCK,
740         PUSH_LOOP, POP_LOOP, PUSH_EXCEPTIONS, POP_EXCEPTIONS,
741         IN_TRY_BLOCK_P, EXCEPTIONS_P, ANONYMOUS_ARRAY_BASE_TYPE,
742         ANONYMOUS_ARRAY_DIMS_SIG, ANONYMOUS_ARRAY_INITIALIZER,
743         INVOKE_STATIC, INVOKE_NONVIRTUAL, INVOKE_SUPER, INVOKE_INTERFACE,
744         INVOKE_VIRTUAL, jdep_code, struct _jdep, JDEP_DECL, JDEP_DECL_WFL,
745         JDEP_KIND, JDEP_WFL, JDEP_MISC, JDEP_ENCLOSING, JDEP_CLASS,
746         JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, JDEP_TO_RESOLVE,
747         JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P, struct
748         jdeplist_s, jdeplists, CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN,
749         JDEP_INSERT, SET_TYPE_FOR_RESOLUTION, WFL_STRIP_BRACKET,
750         STRING_STRIP_BRACKETS, PROMOTE_RECORD_IF_COMPLETE,
751         BLOCK_CHAIN_DECL, GET_CURRENT_BLOCK, EXPR_WFL_GET_LINECOL,
752         EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION, QUAL_DECL_TYPE,
753         GET_SKIP_TYPE, COMPLETE_CHECK_OP, COMPLETE_CHECK_OP_0,
754         COMPLETE_CHECK_OP_1, COMPLETE_CHECK_OP_2, BUILD_APPEND,
755         BUILD_STRING_BUFFER, BUILD_THROW, SET_WFL_OPERATOR,
756         PATCH_METHOD_RETURN_ERROR, CHECK_METHODS, CLEAR_DEPRECATED,
757         CHECK_DEPRECATED_NO_RESET, CHECK_DEPRECATED, REGISTER_IMPORT,
758         CURRENT_OSB, struct parser_ctxt, GET_CPC_LIST, CPC_INNER_P,
759         GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, GET_CPC_DECL_NODE,
760         GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
761         GET_ENCLOSING_CPC_CONTEXT, INNER_ENCLOSING_SCOPE_CHECK, PUSH_CPC,
762         PUSH_ERROR, POP_CPC, DEBUG_CPC, CPC_INITIALIZER_LIST,
763         CPC_STATIC_INITIALIZER_LIST, CPC_INSTANCE_INITIALIZER_LIST,
764         CPC_INITIALIZER_STMT, CPC_STATIC_INITIALIZER_STMT,
765         CPC_INSTANCE_INITIALIZER_STMT, SET_CPC_INITIALIZER_STMT,
766         SET_CPC_STATIC_INITIALIZER_STMT,
767         SET_CPC_INSTANCE_INITIALIZER_STMT, JAVA_NOT_RADIX10_FLAG,
768         java_complete_class, java_check_circular_reference,
769         java_fix_constructors, java_layout_classes, java_reorder_fields,
770         java_method_add_stmt, java_get_line_col, reset_report,
771         java_init_lex, yyparse, java_parse, yyerror, java_expand_classes,
772         java_finish_classes, ctxp, ctxp_for_generation,
773         ctxp_for_generation_last): Removed.
774         * expr.c (force_evaluation_order): Don't mention NEW_CLASS_EXPR.
775         * mangle.c (utf8_cmp): New function.
776         (cxx_keywords): New global.
777         (cxx_keyword_p): New function.
778         * jvspec.c (JAVA_START_CHAR): Removed obsolete comment.
779         * java-tree.def (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR,
780         NEW_ANONYMOUS_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
781         CASE_EXPR, DEFAULT_EXPR, JAVA_CATCH_EXPR, SYNCHRONIZED_EXPR,
782         THROW_EXPR, CONDITIONAL_EXPR, INSTANCEOF_EXPR, NEW_ARRAY_INIT,
783         CLASS_LITERAL, JAVA_EXC_OBJ_EXPR): Removed.
784         * Make-lang.in (java.srcextra): Do nothing.
785         (parse.c, keyword.h, gt-java-parse.h): Removed targets.
786         (JAVA_OBJS): Don't mention deleted files.
787         (java.mostlyclean): Likewise.
788         (java.clean): Likewise.
789         (JAVA_LEX_C): Removed.
790         (buffer.o, check-init.o, parse.o): Remove unused targets.
791         (typeck.o): Updated.
792         * jcf-parse.c (read_class): Comment out unused code.
793         (java_layout_seen_class_methods): New function.
794         (parse_source_file_1, parse_source_file_2, parse_source_file_3):
795         Removed.
796         (java_parse_file): Comment out unused code.  Don't use 'ctxp'.
797         (init_jcf_parse): Removed.
798         * config-lang.in (gtfiles): Remove deleted files.
799         * decl.c (java_init_decl_processing): Don't initialize
800         finit_identifier_node, instinit_identifier_node,
801         length_identifier_node, super_identifier_node,
802         continue_identifier_node, access0_identifier_node.  Don't call
803         init_jcf_parse.
804         * class.c (cyclic_inheritance_report): New global.
805         (add_method_1): Don't use
806         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND.
807         (maybe_layout_super_class): Comment out code.
808         (safe_layout_class): New function.
809         * java-gimplify.c (java_gimplify_expr): Removed CASE_EXPR,
810         DEFAULT_EXPR, NEW_ARRAY_INIT, JAVA_CATCH_EXPR, JAVA_EXC_OBJ_EXPR,
811         UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_ANONYMOUS_ARRAY_EXPR,
812         NEW_CLASS_EXPR, SYNCHRONIZED_EXPR, CONDITIONAL_EXPR,
813         INSTANCEOF_EXPR, CLASS_LITERAL, THIS_EXPR.
814         (java_gimplify_case_expr): Removed.
815         (java_gimplify_default_expr): Likewise.
816         (java_gimplify_new_array_init): Likewise.
817         * parse.y: Removed.
818         * keyword.gperf, keyword.h: Removed.
819         * chartables.h: Removed.
820         * check-init.c: Removed.
821         * buffer.c, buffer.h: Removed.
822         * convert.h: Removed.
823         * gen-table.pl: Removed.
824         * lex.c, lex.h: Removed.
825
826 2007-01-02  Andrew Haley  <aph@redhat.com>
827
828         * expr.c (expand_java_arraystore): Make sure we perform a bounds
829         check at runtime before we perform a type check.
830
831 2006-12-19  Andrew Haley  <aph@redhat.com>
832
833         * decl.c: Bump minor BC ABI version.
834
835 2006-12-13  Gary Benson  <gbenson@redhat.com>
836
837         * jcf-depend.c (jcf_dependency_add_file): Mark filename unused.
838
839 2006-12-12  Tom Tromey  <tromey@redhat.com>
840
841         * lang-specs.h: Pass -M options to jc1.
842         * jcf-depend.c (jcf_dependency_add_file): Don't emit
843         dependencies.
844
845 2006-12-07  Mohan Embar  <gnustuff@thisiscool.com>
846
847         * jcf-path.c (jcf_path_compute): Use platform PATH_SEPARATOR.
848
849 2006-12-06  Mohan Embar  <gnustuff@thisiscool.com>
850
851         * lang-specs.h: Pass '%U'-based options as separate arguments.
852
853 2006-12-05  Tom Tromey  <tromey@redhat.com>
854
855         PR java/29495:
856         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Mark fields and
857         classes as well.
858         * class.c (add_field): Handle ACC_SYNTHETIC.
859         (add_method_1): Likewise.  Handle bridge and varargs.
860         (get_access_flags_from_decl): Handle synthetic, bridge, varargs,
861         annotation.
862         (set_class_decl_access_flags): Handle synthetic and annotation.
863         * java-tree.h (METHOD_BRIDGE): New macro.
864         (METHOD_VARARGS): Likewise.
865         (TYPE_SYNTHETIC): Likewise.
866         (TYPE_ANNOTATION): Likewise.
867         (lang_type): New fields 'synthetic' and 'annotation'.
868         (lang_decl_func): New fields 'varargs' and 'bridge'.
869
870 2006-12-04  Andrew Haley  <aph@redhat.com>
871
872         * jcf-parse.c (rewrite_reflection_indexes): Don't do anything if
873         there's no map.
874
875 2006-11-29  Gary Benson  <gbenson@redhat.com>
876
877         * expr.c (rewrite_arglist_getcaller): Reorder.
878
879 2006-11-29  Andrew Haley  <aph@redhat.com>
880
881         * expr.c (rewrite_arglist_getcaller): Remove DECL_INLINE.
882         * lang.c (java_decl_ok_for_sibcall): Check for DECL_INLINE.
883
884 2006-11-23  Andrew Haley  <aph@redhat.com>
885
886         * expr.c (rewrite_arglist_getcaller): New.
887         (rewrite_arglist_getclass): Fix indentation.
888         (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and 
889         gnu.classpath.VMStackWalker.getCallingClassLoader().
890         * builtins.c (initialize_builtins): Remove duplicate def'n of
891         __sync_synchronize.
892         Add __builtin_return_address.
893
894 2006-11-22  Andrew Haley  <aph@redhat.com>
895
896         * jcf-reader.c (get_attribute): Mark attr_type unused.
897
898         * builtins.c (compareAndSwapObject_builtin): Fix declaration.
899
900 2007-01-08  Richard Guenther  <rguenther@suse.de>
901
902         * lex.c (do_java_lex): Use build_int_cst_wide_type.
903         * jcf-parse.c (get_constant): Likewise.
904
905 2006-11-12  Jan Hubicka  <jh@suse.cz>
906
907         * resource.c (compile_resource_data): Update for new varpool names.
908         * java/class.c (build_utf8_ref): Likewise.
909
910 2006-11-12  David Daney  <ddaney@avtrex.com>
911
912         PR java/29805
913         * typeck.c (build_java_array_type): Increase buffer sizes.
914
915 2006-11-11  Richard Guenther  <rguenther@suse.de>
916
917         * check-init.c (check_init): Remove handling of FIX_CEIL_EXPR,
918         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
919
920 2006-11-06  Andrew Haley  <aph@redhat.com>
921
922         * java-tree.h (CONSTANT_LazyFlag): New.
923         * constants.c (build_constants_constructor): Mask CONSTANT_LazyFlag.
924         * jcf-parse.c (handle_innerclass_attribute): Write attribute to
925         reflection_data.
926         (handle_constant): Return 0 for dummy cpool entries.
927         Handle constants of kind Class.
928         Handle constants of kind NameAndType.
929         (handle_enclosingmethod_attribute): New.
930         (handle_signature_attribute): New.
931         (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New.
932         (HANDLE_SIGNATURE_ATTRIBUTE): New.
933         (handle_constant): Use unmangle_classname()rather than calling
934         identifier_subst() directly.
935
936 2006-11-02  Andrew Haley  <aph@redhat.com>
937
938         * java-tree.h (FIELD_ENUM): New.
939         (lang_decl_var.field_enum): New.
940         (lang_type.enum_class): New.
941         (CLASS_ENUM): New.
942         * class.c (set_class_decl_access_flags): Handle enum types.
943         (add_field): Handle enum fields.
944         (get_access_flags_from_decl): Likewise.
945
946         * class.c (make_class_data): Put reflection_data into rodata.
947
948 2006-11-01  Andrew Haley  <aph@redhat.com>
949
950         * jcf-parse.c (field_offsets, bit_obstack): New variables.
951         (jcf_parse): Write end marker to annotation_data.
952         (java_parse_file): Create field_offsets bitmap.  Destroy it.
953         (annotation_grow, annotation_rewrite_byte) 
954         (annotation_rewrite_short, annotation_rewrite_int) 
955         (annotation_read_short, annotation_write_byte) 
956         (annotation_write_short, annotation_write_int) 
957         (handle_long_constant, handle_constant, handle_element_value) 
958         (handle_annotation, handle_annotations) 
959         (handle_annotation_attribute, rewrite_reflection_indexes) 
960         (handle_member_annotations, handle_parameter_annotations) 
961         (handle_default_annotation): New functions.
962         (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE) 
963         (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE) 
964         (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) 
965         (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) 
966         (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions.
967         * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New. 
968         (TYPE_REFLECTION_DATA): New.
969         (TYPE_REFLECTION_DATASIZE): New.
970         * jcf.h (enum cpool_tag): Convert a bunch of #define constants to
971         an enum.
972         * jcf-reader.c (get_attribute): Pass field/method index and
973         attribute type to get_attribute().
974         * constants.c (find_class_or_string_constant): Make nonstatic.
975         (cpool_for_class): Likewise.
976         (build_constants_constructor): Separate string and scalar types.
977         * class.c (make_class_data): Generate field_indexes permutation.
978         Pass it to rewrite_reflection_indexes().
979         (make_class_data): Generate constructor for reflection_data field.
980
981 2006-10-20  Tom Tromey  <tromey@redhat.com>
982
983         * gcj.texi (Top): Don't mention jv-scan.
984         (Invoking gcj): Likewise.
985         (Invoking gcjh): Likewise.
986         (Invoking gjnih): Likewise.
987         (Invoking gij): Likewise.
988         (Invoking gcj-dbtool): Likewise.
989         (Invoking jv-scan): Removed.
990         * parse-scan.y: Removed.
991         * jv-scan.c: Removed.
992         * config-lang.in (stagestuff): Don't mention jv-scan.
993         * Make-lang.in (java): Removed jv-scan.
994         (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
995         (JVSCAN_OBJS): Removed.
996         (jv-scan$(exeext)): Likewise.
997         (JAVA_MANFILES): Removed jv-scan.1.
998         (java.uninstall): Don't mention jv-scan.
999         (java.mostlyclean): Likewise.
1000         (java.maintainer-clean): Likewise.
1001         (.INTERMEDIATE): Likewise.
1002         (java/jv-scan.o): Removed.
1003         (jv-scan.pod): Likewise.
1004         (java.srcextra): Don't mention parse-scan.c.
1005         (java.mostlyclean): Likewise.
1006         (java/parse-scan.c): Removed.
1007         (java/parse-scan.o-warn): Removed.
1008         (java/parse-scan.o): Removed.
1009
1010 2006-10-20  Tom Tromey  <tromey@redhat.com>
1011
1012         * lang.c (java_handle_option): Don't use
1013         jcf_write_base_directory.
1014         * jcf.h (jcf_write_base_directory): Removed.
1015         * parse.y (java_expand_classes): Don't call write_classfile.
1016         * config-lang.in (gtfiles): Removed jcf-write.c.
1017         * Make-lang.in (JAVA_OBJS): Removed jcf-write.o.
1018         (java/jcf-write.o): Removed.
1019         * jcf-parse.c (parse_class_file): Don't call write_classfile.
1020         * java-tree.h (write_classfile): Removed declaration.
1021         * jcf-write.c: Removed.
1022
1023 2006-10-20  Tom Tromey  <tromey@redhat.com>
1024
1025         * Make-lang.in (java): Removed gjnih, gcjh.
1026         (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
1027         (GCJH_OBJS): Removed.
1028         (GJNIH_OBJS): Likewise.
1029         (gjnih$(exeext)): Likewise.
1030         (gcjh$(exeext)): Likewise.
1031         (JAVA_MANFILES): Removed gcjh.1, gjnih.1.
1032         (java.install-common): Don't special case gcjh.
1033         (java.uninstall): Don't mention gcjh, gjnih.
1034         (java.mostlyclean): Likewise.
1035         (java.maintainer-clean): Likewise.
1036         (.INTERMEDIATE): Likewise.
1037         (gcjh.pod): Removed.
1038         (gjnih.pod): Likewise.
1039         (GCJH_TARGET_INSTALL_NAME): Removed.
1040         (java/gjavah-jni.o): Removed.
1041         (java/gjavah.o): Likewise.
1042         * config-lang.in (stagestuff): Removed gjnih, gcjh.
1043         * gjavah.c: Removed.
1044
1045 2006-10-17  Tom Tromey  <tromey@redhat.com>
1046
1047         * jcf-dump.c (print_element_value): Expect a utf8 constant in the
1048         "string" case.
1049
1050 2006-10-17  Tom Tromey  <tromey@redhat.com>
1051
1052         * jvgenmain.c (main): Handle -findirect-dispatch.
1053         * jvspec.c (jvgenmain_spec): Pass -findirect-dispatch to
1054         jvgenmain.
1055
1056 2006-10-06  Andrew Haley  <aph@redhat.com>
1057
1058         * builtins.c (compareAndSwapInt_builtin): Check that we really do
1059         have a compare_and_swap builtin.
1060         (compareAndSwapLong_builtin): Likewise.
1061         (compareAndSwapObject_builtin): Likewise.
1062
1063 2006-10-04  Andrew Haley  <aph@redhat.com>
1064
1065         * builtins.c (java_builtins): Add compareAndSwapInt,
1066         compareAndSwapLong, compareAndSwapObject, putOrderedInt,
1067         putOrderedLong, putOrderedObject, putIntVolatile, putLongVolatile,
1068         putObjectVolatile, getObjectVolatile, getIntVolatile,
1069         getLongVolatile, getLong.
1070         (UNMARSHAL3): New macro.
1071         (UNMARSHAL4): Likewise.
1072         (UNMARSHAL5): Likewise.
1073         (build_arglist_for_builtin): New function.
1074         (build_addr_sum, build_check_this): New functions.
1075         (putObject_builtin. compareAndSwapInt_builtin,
1076         compareAndSwapLong_builtin, compareAndSwapObject_builtin,
1077         putVolatile_builtin, getVolatile_builtin): New builtins.
1078
1079 2006-06-08  Andrew Haley  <aph@redhat.com>
1080  
1081         * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to
1082         get_symbol_table_index().
1083         (maybe_rewrite_invocation): Set SPECIAL if we need to access a
1084         private method.
1085         (build_known_method_ref): New arg: special.  Pass it to
1086         get_symbol_table_index.
1087         (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of
1088         the method list.
1089         (build_invokevirtual): New arg: special.  Pass it to
1090         get_symbol_table_index.
1091         (expand_invoke): New variable: special.
1092         Pass it to maybe_rewrite_invocation().
1093         Pass it to build_known_method_ref().
1094         * class.c (build_symbol_entry): Add new arg: special.  Use it to
1095         build the symbol table conbstructor.
1096         (emit_symbol_table): Extract SPECIAL from the method list and pass
1097         it to build_symbol_entry().
1098         * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set
1099         special accordingly.
1100  
1101 2006-09-08  Andrew Haley  <aph@redhat.com>
1102
1103         * class.c (layout_class_method): Use build_java_signature, not
1104         build_java_argument_signature.  Use lookup_java_method, not
1105         lookup_argument_method.
1106
1107 2006-08-16  Jakub Jelinek  <jakub@redhat.com>
1108             Bryce McKinlay  <bryce@mckinlay.net.nz>
1109
1110         * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.
1111
1112 2006-07-18  Tom Tromey  <tromey@redhat.com>
1113
1114         * lang.opt: Added missing -W options.
1115
1116 2006-07-12  Tom Tromey  <tromey@redhat.com>
1117
1118         PR java/28329:
1119         * lang-specs.h: Pass '%U'-based options as separate arguments.
1120         Use -faux-classpath.
1121         * lang.c (java_handle_option): Handle OPT_faux_classpath.
1122         * lang.opt (faux-classpath): New option.
1123
1124 2006-07-07  Tom Tromey  <tromey@redhat.com>
1125
1126         * class.c (make_class_data): Set value for reflection_data field.
1127         * decl.c (java_init_decl_processing): Add reflection_data field.
1128
1129 2006-07-07  Tom Tromey  <tromey@redhat.com>
1130
1131         * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): Declare locals
1132         earlier.
1133         (HANDLE_SIGNATURE_ATTRIBUTE): Likewise.
1134
1135 2006-07-07  Andrew Haley  <aph@redhat.com>
1136
1137         * jcf-parse.c (set_source_filename): Don't check for
1138         CLASS_FROM_CURRENTLY_COMPILED_P.
1139         Remove // comments.
1140
1141 2006-07-07  Andrew Haley  <aph@redhat.com>
1142
1143         * java-tree.h (java_read_sourcefilenames): Declare.
1144         * lang.c (java_handle_option): Call java_read_sourcefilenames().
1145         * lang.opt (fsource-filename): New opt.
1146         * lang-specs.h: Add -fsource-filename.
1147         * jcf-parse.c (num_files, filenames): New variables.
1148         (reverse, cmpstringp, java_read_sourcefilenames,
1149         find_sourcefile): New.
1150         (set_source_filename): Call find_sourcefile to find the real name
1151         of a source file.
1152
1153 2006-06-27  Tom Tromey  <tromey@redhat.com>
1154
1155         * jcf-reader.c (get_attribute): Handle EnclosingMethod,
1156         Signature, LocalVariableTypeTable, annotation attributes.
1157         * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New macro.
1158         (HANDLE_SIGNATURE_ATTRIBUTE): Likewise.
1159         (HANDLE_START_FIELD): Mention 'descriptor', not 'signature'.
1160         (HANDLE_METHOD): Likewise.
1161         (HANDLE_LOCALVARIABLETYPETABLE_ATTRIBUTE): New macro.
1162         (print_annotation): New function.
1163         (print_element_value): Likewise.
1164         (indent): Likewise.
1165         (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE): New macro.
1166         (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE): Likewise.
1167         (print_parameter_annotations): New function.
1168         (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): New macro.
1169         (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE):
1170         Likewise.
1171         (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): Likewise.
1172         (print_annotations): New function.
1173
1174 2006-06-23  Tom Tromey  <tromey@redhat.com>
1175
1176         * lang-specs.h: Default -fsource and -ftarget to 1.5.  If
1177         emitting class files, always use 1.5.
1178         * gcj.texi (Input Options): Document -fsource.
1179         (Code Generation): Document -ftarget.
1180
1181 2006-06-21  Tom Tromey  <tromey@redhat.com>
1182
1183         PR java/28089:
1184         * expr.c (expand_java_field_op): Initialize field's declaring
1185         class.
1186
1187 2006-06-20  Tom Tromey  <tromey@redhat.com>
1188
1189         * expr.c (push_value): Always flush quick stack.
1190
1191 2006-06-19  Tom Tromey  <tromey@redhat.com>
1192
1193         * expr.c (push_value): Also flush quick stack if value is a
1194         component_ref.
1195
1196 2006-06-19  Tom Tromey  <tromey@redhat.com>
1197
1198         * expr.c (push_value): Flush quick stack if value has side
1199         effects.
1200
1201 2006-06-13  Tom Tromey  <tromey@redhat.com>
1202
1203         * class.c (is_compiled_class): Explicitly check for current
1204         class.
1205
1206 2006-06-09  Tom Tromey  <tromey@redhat.com>
1207
1208         * gjavah.c (decompile_method): Don't decompile a static field
1209         accessor method.
1210
1211 2006-06-06  Tom Tromey  <tromey@redhat.com>
1212
1213         * lang-specs.h <jc1>: Add .jar file to command line if
1214         -fsaw-java-file.  Also, remove -ffilelist-file in this case.
1215
1216 2006-06-05  Tom Tromey  <tromey@redhat.com>
1217
1218         * jcf-dump.c (print_access_flags): Handle varargs, bridge,
1219         synthetic, enum, annotation.
1220         * jcf.h (ACC_BRIDGE): New macro.
1221         (ACC_VARARGS): Likewise.
1222         (ACC_SYNTHETIC): Likewise.
1223         (ACC_ENUM): Likewise.
1224         (ACC_ANNOTATION): Likewise.
1225
1226 2006-06-04  Tom Tromey  <tromey@redhat.com>
1227
1228         * lang.opt (-fsaw-java-file, -fsource, -ftarget): New options.
1229         * jvspec.c (jvgenmain_spec): Remove -fsaw-java-file, -fsource,
1230         and -ftarget.
1231         (lang_specific_driver): Removed dead code.  Add -fsaw-java-file
1232         when needed.  Handle classpath-setting.
1233         * Make-lang.in ($(GCJ)$(exeext)): Link in jcf-path.o.
1234         * lang-specs.h: Rewrote.
1235
1236 2006-06-04  Tom Tromey  <tromey@redhat.com>
1237
1238         * jcf-io.c (find_class): Set source_ok to 0.
1239         * jcf-parse.c (jcf_parse): Disable gnu.gcj.gcj-compiled warning.
1240         (parse_class_file): Don't call java_mark_class_local.
1241         (java_parse_file): Skip .java files.  Call java_mark_class_local
1242         before lowering any code.
1243         (parse_zip_file_entries): Don't call duplicate_class_warning
1244         here.
1245         (process_zip_dir): ... call it here.
1246         * class.c (add_field): Don't mark field external if it is being
1247         compiled into this object.
1248         (make_class_data): Handle situation where class_dtable_decl is
1249         created before Class is compiled.
1250         (is_compiled_class): Don't assume files in zip are compiled into
1251         this object.
1252         (layout_class_method): Don't mark method external if it is being
1253         compiled into this object.
1254
1255 2006-06-04  Tom Tromey  <tromey@redhat.com>
1256
1257         * jcf-path.c (jcf_path_compute): New function.
1258         * jcf.h (jcf_path_compute): Declare.
1259
1260 2006-10-23 Rafael Avila de Espindola  <rafael.espindola@gmail.com>
1261
1262         * decl.c: Include langhooks.h.
1263         (builtin_function): Remove.
1264         (java_init_decl_processing): Replace calls to builtin_function
1265         with add_builtin_function.
1266         * Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o.
1267         (java/decl.o): Depend on langhooks.h.
1268         * java-tree.h (builtin_function): Remove.
1269
1270 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
1271
1272         * Make-lang.in: Added "java.pdf", "gcj.pdf" target support.
1273
1274 2006-09-12  Tom Tromey  <tromey@redhat.com>
1275
1276         * expr.c (push_value): Always flush quick stack.
1277
1278 2006-09-12  Tom Tromey  <tromey@redhat.com>
1279
1280         PR java/29013:
1281         * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Always note
1282         the push of the called method's return result.
1283
1284 2006-09-12  Tom Tromey  <tromey@redhat.com>
1285
1286         * jvspec.c (lang_specific_driver): Read spec file even if
1287         -fsyntax-only.
1288
1289 2006-09-12  Tom Tromey  <tromey@redhat.com>
1290
1291         PR java/28754:
1292         * expr.c (expand_java_field_op): Initialize field's declaring
1293         interface if necessary.
1294
1295 2006-09-12  Tom Tromey  <tromey@redhat.com>
1296
1297         PR java/28892:
1298         * expr.c (expand_java_field_op): No error for assignments not in
1299         class initializer or constructor.
1300
1301 2006-08-22  Andrew Haley  <aph@redhat.com>
1302
1303         * decl.c (java_add_stmt): Give the statement list a type.
1304
1305 2006-08-16  Jakub Jelinek  <jakub@redhat.com>
1306             Bryce McKinlay  <bryce@mckinlay.net.nz>
1307
1308         * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.
1309
1310 2006-08-10  Simon Martin  <simartin@users.sourceforge.net>
1311
1312         PR java/8923
1313         * parse.y (build_incdec): Emit an error instead of an ICE if '++'
1314         or '--' is used with a constant operand.
1315         (java_complete_lhs): When processing a '++' or '--' expression,
1316         don't call java_complete_tree but java_complete_lhs, so that a
1317         static final variable operand is never replaced by its value. This
1318         avoids an ICE later on.
1319         (patch_unaryop): Fixed typo in comment.
1320
1321 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1322
1323         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1324
1325 2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>
1326
1327         * builtins.c (check_for_builtin): If a builtin could result in a
1328         direct call being generated, don't use it if flag_indirect_dispatch
1329         is set.
1330
1331 2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>
1332
1333         * gcj.texi (Invocation): Corrections for Invocation API example.
1334
1335 2006-07-04  Andrew Haley  <aph@redhat.com>
1336
1337         * class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the
1338         entry.
1339
1340 2006-06-21  Andrew Haley  <aph@redhat.com>
1341
1342         * java-tree.h (update_aliases): Remove
1343         * expr.c (expand_iinc): Remove call to update_aliases().
1344         (STORE_INTERNAL): Likewise.
1345         * decl.c (update_aliases, initialize_local_variable) 
1346         (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls.
1347
1348 2006-06-19  Andrew Haley  <aph@redhat.com>
1349
1350         PR java/1305
1351         PR java/27908
1352         * expr.c (java_modify_addr_for_volatile): New function.
1353         (expand_java_field_op): Handle volatile fields.
1354         * java-gimplify.c (java_gimplify_component_ref): Call
1355         java_modify_addr_for_volatile to give the field_ref the correct
1356         volatile type.
1357         (java_gimplify_modify_expr): Likewise.
1358         * java-tree.h (java_modify_addr_for_volatile): New decl.
1359
1360 2006-06-17  Karl Berry  <karl@gnu.org>
1361
1362         * gcj.texi (@dircategory): Use "Software development" instead
1363         of "Programming", following the Free Software Directory.
1364
1365 2006-06-16  Andrew Haley  <aph@redhat.com>
1366
1367         * class.c (make_class_data): When using flag_indirect_classes,
1368         don't initialize the vtable of Class instances.
1369
1370 2006-06-09  Andrew Haley  <aph@redhat.com>
1371
1372         PR java/1305
1373         PR java/27908
1374         * builtins.c (initialize_builtins): Add __sync_synchronize().
1375         * class.c (add_field): Mark volatile fields.
1376         * java-gimplify.c (java_gimplify_expr): Call new functions to
1377         handle self-modifying exprs and COMPONENT_REFs.
1378         (java_gimplify_component_ref): New.
1379         (java_gimplify_modify_expr): Add handling for volatiles.
1380
1381 2006-06-08  Tom Tromey  <tromey@redhat.com>
1382
1383         * gcj.texi (libgcj Runtime Properties): Document
1384         gnu.gcj.user.realname.
1385
1386 2006-06-08  Andrew Haley  <aph@redhat.com>
1387
1388         * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to
1389         get_symbol_table_index().
1390         (maybe_rewrite_invocation): Set SPECIAL if we need to access a
1391         private method.
1392         (build_known_method_ref): New arg: special.  Pass it to
1393         get_symbol_table_index.
1394         (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of
1395         the method list.
1396         (build_invokevirtual): New arg: special.  Pass it to
1397         get_symbol_table_index.
1398         (expand_invoke): New variable: special.
1399         Pass it to maybe_rewrite_invocation().
1400         Pass it to build_known_method_ref().
1401         * class.c (build_symbol_entry): Add new arg: special.  Use it to
1402         build the symbol table conbstructor.
1403         (emit_symbol_table): Extract SPECIAL from the method list and pass
1404         it to build_symbol_entry().
1405         * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set
1406         special accordingly.
1407
1408 2006-06-06  David Daney  <ddaney@avtrex.com>
1409
1410         * gcj.texi (libgcj Runtime Properties): Document
1411         gnu.gcj.runtime.NameFinder.show_raw and
1412         gnu.gcj.runtime.NameFinder.remove_unknown.
1413
1414 2006-06-06  Tom Tromey  <tromey@redhat.com>
1415
1416         * jcf-dump.c (print_access_flags): Handle varargs, bridge,
1417         synthetic, enum, annotation.
1418         * jcf.h (ACC_BRIDGE): New macro.
1419         (ACC_VARARGS): Likewise.
1420         (ACC_SYNTHETIC): Likewise.
1421         (ACC_ENUM): Likewise.
1422         (ACC_ANNOTATION): Likewise.
1423
1424 2006-06-06  Mike Stump  <mrs@apple.com>
1425
1426         * Make-lang.in: Rename to htmldir to build_htmldir to avoid
1427         installing during build.
1428
1429 2006-05-31  Thomas Fitzsimmons  <fitzsim@redhat.com>
1430
1431         * gcj.texi (Extensions): Document the new gcj-dbtool-based
1432         classname-to-library resolution mechanism.
1433         Declare the old gnu.gcj.runtime.VMClassLoader.library_control
1434         mechanism deprecated.
1435         (libgcj Runtime Properties): Document
1436         gnu.gcj.runtime.VMClassLoader.library_control's new default.
1437
1438 2006-05-29  Jakub Jelinek  <jakub@redhat.com>
1439
1440         * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64)
1441         bit wide type.
1442         (jword): Define to uint64 on 64-bit arches.
1443         * jcf-dump.c (print_constant): Cast JPOOL_UINT to long.
1444
1445 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
1446
1447         * class.c, except.c, expr.c, java-gimplify.c: Fix comment
1448         typos.
1449
1450 2006-05-26  Tom Tromey  <tromey@redhat.com>
1451
1452         * expr.c (java_push_constant_from_pool): Handle 'ldc class'.
1453         * verify-glue.c (vfy_class_type): New function.
1454         * verify-impl.c (check_constant): Allow 'ldc class'.
1455         * verify.h (vfy_class_type): Declare.
1456
1457 2006-05-25  Andrew Haley  <aph@redhat.com>
1458
1459         PR java/27756
1460         * decl.c (maybe_pushlevels): When variable ranges are non-nested
1461         update all lifetimes, not just the first one.
1462
1463 2006-05-24  Tom Tromey  <tromey@redhat.com>
1464
1465         * java-tree.h: Fixed flag documentation.
1466
1467 2006-05-24  Tom Tromey  <tromey@redhat.com>
1468
1469         PR libgcj/27729:
1470         * jcf.h (ACC_INVISIBLE): Changed value.
1471
1472 2006-05-24  Andrew Haley  <aph@redhat.com>
1473
1474         PR java/27754
1475         * decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a
1476         COMPOUND_EXPR.
1477
1478 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1479
1480         * lang.opt (femit-class-file): Remove VarExists.
1481
1482 2006-05-16  Tom Tromey  <tromey@redhat.com>
1483
1484         * verify-impl.c (verify_instructions_0) <op_return>: Special case
1485         for Object.<init>.
1486
1487 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1488
1489         PR driver/26885
1490         * Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with
1491         $(GCC_OBJS).
1492
1493 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
1494
1495         * Make-lang.in (java/decl.o): Add dependency on $(TARGET_H).
1496         (java/expr.o): Replace target.h with $(TARGET_H).
1497         (java/parse.o): Likewise.
1498
1499 2006-05-10  Andrew Haley  <aph@redhat.com>
1500
1501         * class.c (emit_indirect_register_classes): Fix comment.
1502
1503 2006-05-04  Tom Tromey  <tromey@redhat.com>
1504
1505         * java-tree.h (uses_jv_markobj_p): Declare.
1506         * class.c (uses_jv_markobj_p): Removed.
1507         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define.
1508         (get_boehm_type_descriptor): Use it.
1509         (uses_jv_markobj_p): Moved from class.c.  Return bool.
1510
1511 2006-05-04  Tom Tromey  <tromey@redhat.com>
1512
1513         * java-tree.def (THIS_EXPR): Now a tcc_expression.
1514
1515 2006-05-04  Andrew Haley  <aph@redhat.com>
1516
1517         * class.c (make_field_value): Always build_address_of fdecl if
1518         there is an initializer.
1519
1520 2006-05-03  Andrew Haley  <aph@redhat.com>
1521
1522         PR libgcj/27352
1523         * expr.c (maybe_rewrite_invocation): New function.
1524         (rewrite_arglist_getclass): Likewise.
1525         (rules): New.
1526         (expand_invoke): Call maybe_rewrite_invocation.
1527         * parse.y (patch_invoke): Likewise.
1528         * java-tree.h: (maybe_rewrite_invocation): New function.
1529
1530 2006-04-21  Andrew Haley  <aph@redhat.com>
1531
1532         * lang.c (java_init): Handle flag_indirect_classes.
1533         * jvgenmain.c: Use "class$$" instead of "class$".
1534         * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as
1535         DECLs.
1536         (mangle_class_field): Special case "class$$" as well as "class$".
1537         * constants.c (build_ref_from_constant_pool): If
1538         flag_indirect_classes, generate a ref into the heap.
1539         * decl.c (constants_field_decl_node,
1540         constants_data_field_decl_node): New.
1541         * class.c (build_static_class_ref): New.
1542         (build_classdollar_field): Factor out from build_class_ref().
1543         (make_field_value): Handle static fields in heap.
1544         (make_class_data): Make sure we get a static ref to class.
1545         Make class initializer const if flag_indirect_classes.
1546         (register_class): Build a class_ref for initialization if
1547         flag_indirect_classes.
1548         (emit_indirect_register_classes): New.
1549
1550 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
1551
1552         * expr.c, gjavah.c: Fix comment typos.
1553
1554 2006-04-03  Andrew Haley  <aph@redhat.com>
1555
1556         PR java/26858
1557         * expr.c (build_field_ref): Don't check the field offset if
1558         flag_syntax_only.
1559
1560 2006-03-30  Andrew Haley  <aph@redhat.com>
1561
1562         PR java/26858
1563         * lang.c (java_attribute_table): New.
1564         (LANG_HOOKS_ATTRIBUTE_TABLE): Define.
1565         * expr.c (build_field_ref): Add a null pointer check for all
1566         fields of offset > 4k.  Don't do so for accesses via the this
1567         pointer, which we know can never be null.
1568         * class.c (build_java_method_type): Mark arg 1 of all nonstatic
1569         methods nonnull.
1570
1571 2006-03-30  Carlos O'Donell  <carlos@codesourcery.com>
1572
1573         * Make-lang.in: Rename docdir to gcc_docdir.
1574
1575 2006-03-30  Tom Tromey  <tromey@redhat.com>
1576
1577         PR java/26042:
1578         * parse.y (java_reorder_fields): Reset superclass field's size as
1579         well.
1580
1581 2006-03-28  Tom Tromey  <tromey@redhat.com>
1582
1583         PR java/26390:
1584         * parse.y (find_most_specific_methods_list): Added 'class'
1585         argument.
1586         (lookup_method_invoke): Updated.
1587
1588 2006-03-15  Tom Tromey  <tromey@redhat.com>
1589
1590         * jcf-write.c (generate_bytecode_insns): Use qualifying type for
1591         non-static method calls.
1592
1593 2006-03-15  David Daney  <ddaney@avtrex.com>
1594
1595         * java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its
1596         declaration.
1597
1598 2006-03-15  David Daney  <ddaney@avtrex.com>
1599
1600         * lang.opt (-freduced-reflection): New option.
1601         * lang.c (java_post_options): Generate an error if
1602         -freduced-reflection used with -fjni or -findirect-dispatch.
1603         * java-tree.h (flag_reduced_reflection): Declare new variable.
1604         * boehm.c (get_boehm_type_descriptor): Indicate all pointers
1605         if bitmap overflows and flag_reduced_reflection set.
1606         * class.c (uses_jv_markobj_p): New function.
1607         (make_class_data): Moved generation of vtable to before
1608         reflection data, generate less reflection data if
1609         flag_reduced_reflection set.
1610         * gcj.texi: Document -freduced-reflection.
1611
1612 2006-03-15  Tom Tromey  <tromey@redhat.com>
1613
1614         PR java/26638:
1615         * class.c (get_interface_method_index): Don't put <clinit> into
1616         interface table.
1617
1618 2006-03-15  Tom Tromey  <tromey@redhat.com>
1619
1620         * parse.y (analyze_clinit_body): Ignore empty statements.
1621
1622 2006-03-08  David Daney  <ddaney@avtrex.com>
1623
1624         * gcj.texi: Document -static-libgcj option.
1625
1626 2006-02-20  Andrew Haley  <aph@redhat.com>
1627
1628         * jcf-parse.c (parse_class_file): Set input_location from
1629         current_class.
1630
1631 2006-02-15  Andrew Haley  <aph@redhat.com>
1632
1633         * class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here.
1634         (make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL,
1635         TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here.
1636
1637 2006-02-09  Andrew Haley  <aph@redhat.com>
1638
1639         PR java/26192
1640         * expr.c (expand_invoke): Allow methods in arrays to be resolved
1641         in their superclass.
1642
1643         * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for
1644         array types.
1645         
1646 2006-02-08  Tom Tromey  <tromey@redhat.com>
1647
1648         PR java/22578:
1649         * check-init.c (check_init): Handle VIEW_CONVERT_EXPR.
1650         * builtins.c (convert_real): New function.
1651         (java_builtins): Handle Float.intBitsToFloat,
1652         Float.floatToRawIntBits, Double.longBitsToDouble,
1653         Double.doubleToRawLongBits.
1654
1655 2006-02-07  Andrew Haley  <aph@redhat.com>
1656
1657         * expr.c (expand_invoke): (BC mode.)  If we find a method in a
1658         class other than the one in which we expected to find it, ignore
1659         the result.
1660
1661         PR java/25535
1662         * constants.c (build_constants_constructor): move initializer into
1663         first halfword on a 64-bit big-endian machine.
1664
1665 2006-02-04  Tom Tromey  <tromey@redhat.com>
1666
1667         PR java/25676:
1668         * builtins.c (max_builtin): Skip floating point 'max'.
1669         (min_builtin): Skip floating point 'min'.
1670         (check_for_builtin): Never return NULL_TREE.
1671
1672 2006-02-04  Tom Tromey  <tromey@redhat.com>
1673
1674         PR java/26097:
1675         * expr.c (push_type): Avoid side effect in gcc_assert.
1676
1677 2006-02-04  Roger Sayle  <roger@eyesopen.com>
1678
1679         * decl.c (java_init_decl_processing): Create char_type_node as a
1680         regular INTEGER_TYPE node.
1681         (push_promoted_type): Preserve TYPE_STRING_FLAG on types.
1682         * typeck.c (convert): No longer check for CHAR_TYPEs but instead
1683         test for char_type_node and promoted_char_type_node as special
1684         instances of INTEGER_TYPE tree codes.
1685         (promote_type,build_java_signature): Likewise.
1686         * jcf-write.c (adjust_typed_op): Likewise.
1687         * mangle.c (mangle_type): Likewise.
1688         * parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE.
1689         * parse.h (JINTEGRAL_TYPE_P): Likewise.
1690
1691 2006-02-04  Andreas Tobler  <a.tobler@schweiz.ch>
1692
1693         * expr.c (java_stack_swap): Revert gcc_assert patch.
1694
1695 2006-02-03  Ben Elliston  <bje@au.ibm.com>
1696
1697         * java-gimplify.c: Use gcc_assert and gcc_unreachable throughout.
1698         * typeck.c: Likewise.
1699         * verify-impl.c: Likewise.
1700         * class.c: Likewise.
1701         * decl.c: Likewise.
1702         * jcf-parse.c: Likewise.
1703         * constants.c: Likewise.
1704         * check-init.c: Likewise.
1705         * jcf-write.c: Likewise.
1706         * verify-glue.c: Likewise.
1707         * mangle.c: Likewise.
1708         * expr.c: Likewise.
1709         * lang.c: Likewise.
1710         * boehm.c: Likewise.
1711
1712 2006-02-01  Jan Hubicka  <jh@suse.cz>
1713
1714         * decl.c (end_java_method): Kill hack disabling unit-at-a-time.
1715         * lang.c (java_init_options): Set no_unit_at_a_time_default.
1716
1717 2006-01-30  Andrew Haley  <aph@redhat.com>
1718
1719         PR java/21428
1720         * parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this").
1721
1722 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
1723
1724         * jv-scan.c (version), jcf-dump.c (version), gjavah.c (version):
1725         Update copyright notice dates.
1726
1727 2006-01-16  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
1728
1729         * jvspec.c (lang_specific_spec_functions): Remove.
1730
1731 2006-01-06  Tom Tromey  <tromey@redhat.com>
1732
1733         * gcj.texi (Arrays): Added more documentation for
1734         JvNewObjectArray.
1735         (Primitive types): Correct information about primitive classes.
1736         (Reference types): New node.
1737         (Index): New node.
1738
1739 2005-12-16  Alexandre Oliva  <aoliva@redhat.com>
1740
1741         * jcf-parse.c (set_source_filename): Set the decl source location
1742         even when returning early.
1743
1744 2005-12-15  Tom Tromey  <tromey@redhat.com>
1745             Andrew Haley  <aph@redhat.com>
1746
1747         PR java/25429
1748         * parse.y (resolve_expression_name): Don't generate accessor
1749         methods for constant fields.
1750
1751 2005-12-13  Andrew Haley  <aph@redhat.com>
1752
1753         PR java/25366
1754         PR java/25368
1755         * class.c (maybe_layout_super_class): Update current_class before
1756         calling do_resolve_class.
1757
1758 2005-12-12  H.J. Lu  <hongjiu.lu@intel.com>
1759
1760         PR java/25330
1761         * jcf-write.c (write_classfile): Use PID in temporary class
1762         file. Save/restore errno when reporting error.
1763
1764 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
1765
1766         PR java/9861
1767         * mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J'
1768         to bare_function_type and including the return type
1769         * builtins.c (initialize_builtins) : Change builtin mangled name
1770         constants to conform to new mangling scheme
1771
1772 2005-12-08  Andrew Haley  <aph@redhat.com>
1773
1774         PR libgcj/25265
1775         * java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE.
1776         (soft_abstractmethod_node): New.
1777         * expr.c (build_field_ref): Add in-line check for missing field.
1778         * decl.c (java_init_decl_processing): Add soft_nosuchfield_node.
1779
1780 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
1781
1782         * Make-lang.in (java.all.build, java.install-normal): Remove.
1783
1784 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
1785
1786         * Make-lang.in: Remove all dependencies on s-gtype, except for
1787         gt-java-parse.h.
1788
1789 2005-12-07  Richard Sandiford  <richard@codesourcery.com>
1790
1791         * class.c (build_utf8_ref, emit_register_classes): Use
1792         switch_to_section and get_section.
1793
1794 2005-12-06  Tom Tromey  <tromey@redhat.com>
1795
1796         PR java/25283:
1797         * parse.y (patch_new_array_init): Revert previous patch.
1798         (lookup_method_invoke): Use size-less array type when creating an
1799         anonymous constructor.
1800
1801 2005-12-05  Tom Tromey  <tromey@redhat.com>
1802
1803         * parse.y (patch_new_array_init): Don't set length on array.
1804
1805 2005-12-02  Richard Guenther  <rguenther@suse.de>
1806
1807         * java-gimplify.c (java_gimplify_labeled_block_expr): Use
1808         buildN instead of build.
1809         * class.c (finish_class): Likewise.
1810         * expr.c (java_create_object): Likewise.
1811
1812 2005-11-28  Tom Tromey  <tromey@redhat.com>
1813
1814         PR java/18278:
1815         * expr.c (build_jni_stub): Unwrap the return value.
1816         * java-tree.h (soft_unwrapjni_node): New define.
1817         (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE.
1818         * decl.c (java_init_decl_processing): Initialize
1819         soft_unwrapjni_node.
1820
1821 2005-11-24  Bryce McKinlay  <mckinlay@redhat.com>
1822
1823         * gcj.texi (gij options): Add -Xss documentation.
1824
1825 2005-11-08  Wil Mahan  <wmahan@gmail.com>
1826
1827         PR java/23617
1828         * zextract.c (read_zip_archive): Fix out of memory error when
1829         reading jar files with zip-style comments.
1830
1831 2005-11-07   Terry Laurenzo   <tlaurenzo@gmail.com>
1832
1833         * gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object
1834         formats.
1835         * gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED
1836
1837 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
1838             Wil Mahan <wmahan@gmail.com>
1839
1840         PR java/23620
1841         * class.c (make_class): Create empty binfo here.
1842         (set_super_info): Only create binfo if we have superclasses.
1843
1844 2005-10-03  Ranjit Mathew  <rmathew@gcc.gnu.org>
1845
1846         PR java/24127
1847         * parse.y (method_header): Make the result of the rule a NULL_TREE
1848         when a parsing error occurs.
1849
1850 2005-09-29  Tom Tromey  <tromey@redhat.com>
1851
1852         PR java/24120:
1853         * jcf-io.c (memoized_dirlist_hash): New function.
1854         (caching_stat): Use it.
1855
1856 2005-09-21  Ranjit Mathew  <rmathew@gcc.gnu.org>
1857
1858         PR java/21418
1859         * class.c (inherits_from_p): Try to lay out super class
1860         if it is not already laid out.
1861         (maybe_layout_super_class): Handle the case where SUPER_CLASS
1862         is a NULL_TREE.
1863
1864 2005-09-18  James A. Morrison  <phython@gcc.gnu.org>
1865
1866         * builtins.c (max_builtin, min_builtin, abs_builtin,
1867         java_build_function_call_expr): Use fold_buildN.
1868         * class.c (layout_class_method): Likewise.
1869         * expr.c (java_truthvalue_conversion, build_java_jsr,
1870         build_java_arrayaccess, expand_java_arrayload, expand_iinc,
1871         build_java_binop, build_field_ref, expand_compare,
1872         build_known_method_ref, build_invokevirtual,
1873         process_jvm_instruction): Likewise.
1874         * parse.y (patch_binop, patch_exit_expr): Likewise.
1875         * typeck.c (convert_ieee_real_to_integer): Likewise.
1876         (convert): Don't call fold after convert_ieee_real_to_integer.
1877
1878 2005-09-14  Bryce McKinlay  <mckinlay@redhat.com>
1879
1880         PR java/23891
1881         * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for
1882         the newly created type. Set import lists here, not in create_class.
1883         (jdep_resolve_class): Set current_class.
1884         (do_resolve_class): Use current_class's TYPE_PACKAGE to determine 
1885         the current package context, not ctxp->package.
1886         (cicp_cache): Removed.
1887         (class_in_current_package): Simplify implementation using TYPE_PACKAGE.
1888         * jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE.
1889         * java-tree.h (TYPE_PACKAGE): New macro.
1890         (struct lang_type): New member 'package'.
1891
1892 2005-09-09  Andrew Haley  <aph@redhat.com>
1893
1894         PR libgcj/23182 
1895         * expr.c (pop_type_0): If the expected type is object or ptr
1896         (i.e. void*), return the type of the object we just popped from
1897         the stack.
1898
1899 2005-09-06  Andrew Pinski  <pinskia@physics.uc.edu>
1900
1901         * java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's
1902         BLOCK_EXPR_BODY before returning the new BIND_EXPR.
1903
1904 2005-09-06  Kazu Hirata  <kazu@codesourcery.com>
1905
1906         * check-init.c, decl.c, expr.c, gcj.texi, java-tree.h,
1907         jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment
1908         typos.  Follow spelling conventions.
1909
1910 2005-09-05  Ranjit Mathew  <rmathew@hotmail.com>
1911
1912         PR java/23431
1913         * typeck.c (lookup_do): Look up interfaces for the original class,
1914         not the base class.
1915         * parse.y (java_check_regular_methods): Fix diagnostic message for
1916         more restrictive overriding of a method from an interface.
1917
1918 2005-08-16  Tom Tromey  <tromey@redhat.com>
1919
1920         * class.c (make_class_data): Always emit JV_STATE_PRELOADING for
1921         class' initial state.
1922
1923 2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>
1924
1925         PR java/22113
1926         * lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing
1927         `literal_token' for large numeric input tokens.
1928
1929 2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>
1930
1931         PR java/19870
1932         * parse.y (nested_field_access_p): Rename to nested_member_access_p
1933         and expand to handle method accesses across nested classes.
1934         (build_outer_method_access_method): Rename to
1935         build_nested_method_access_method.  Minor adjustments to comments.
1936         (resolve_expression_name): Use the newly-renamed
1937         nested_member_access_p method.
1938         (resolve_qualified_expression_name): Likewise.
1939         (patch_method_invocation): Also consider static methods for access
1940         method generation.  Minor adjustments to comments.
1941         (maybe_use_access_method): Use the more general
1942         nested_memeber_access_p to determine access across nested class
1943         boundaries.  Allow THIS_ARG to be NULL (for static methods).
1944
1945 2005-08-15  Tom Tromey  <tromey@redhat.com>
1946
1947         PR java/23300.
1948         * expr.c (build_field_ref): Don't generate otable reference when
1949         DECL_FIELD_OFFSET is 0.
1950         * class.c (maybe_layout_super_class): Pass outer class to
1951         do_resolve_class.
1952
1953 2005-08-15  Tom Tromey  <tromey@redhat.com>
1954
1955         * java-tree.h (LABEL_IN_SUBR): Removed.
1956         (LABEL_IN_SUBR): Likewise.
1957         (LABEL_IS_SUBR_START): Likewise.
1958         (LABEL_SUBR_START): Likewise.
1959         (LABEL_SUBR_CONTEXT): Likewise.
1960         (LABEL_CHANGED): Likewise.
1961         (LABEL_RETURN_LABEL): Likewise.
1962         (LABEL_RETURN_TYPE_STATE): Likewise.
1963         (LABEL_RETURN_LABELS): Likewise.
1964         (RETURN_MAP_ADJUSTED): Likewise.
1965         (LABEL_PENDING_CHAIN): Likewise.
1966
1967 2005-08-15  Tom Tromey  <tromey@redhat.com>
1968
1969         * Make-lang.in (JAVA_OBJS): Removed verify.o
1970         (java/verify.o): Removed.
1971         * verify.c: Removed.
1972         * lang.c (flag_new_verifier): Removed.
1973         (java_post_options): Updated.
1974         * java-tree.h (flag_new_verifier): Removed.
1975         (verify_jvm_instructions): Removed.
1976         * expr.c (pop_type_0): Assume flag_new_verifier is true.
1977         (build_java_check_indexed_type): Likewise.
1978         (expand_java_arraystore): Likewise.
1979         (expand_java_arrayload): Likewise.
1980         (pop_arguments): Likewise.
1981         (expand_byte_code): Likewise.
1982         (process_jvm_instruction): Likewise.
1983
1984 2005-08-10  Andrew Haley  <aph@redhat.com>
1985
1986         * java-gimplify.c (java_gimplify_modify_expr): Fix any pointer
1987         type mismatches to make legal GIMPLE.
1988
1989 2005-08-10  Robin Green <greenrd@greenrd.org>
1990
1991         PR java/23230:
1992         * parse.y (maybe_use_access_method): Generalize check from
1993         java.lang.Object to any superclass of current_class
1994
1995 2005-08-08  Nathan Sidwell  <nathan@codesourcery.com>
1996
1997         * class.c (build_class_ref): Wrap the primary class type in a
1998         NOP_EXPR.
1999         * parse.y (java_complete_lhs) <COMPONENT_REF case>: Extract the
2000         primary class type from the NOP_EXPR in which it was placed.
2001
2002 2005-07-28  Diego Novillo  <dnovillo@redhat.com>
2003
2004         * expr.c (expand_load_internal): Fix missing parens in
2005         predicate.
2006
2007 2005-07-28  Andrew Haley  <aph@redhat.com>
2008
2009         * expr.c (expand_load_internal): Convert to destination type.
2010
2011 2005-07-22  Manfred Hollstein  <mh@suse.com>
2012
2013         * verify-impl.c (check_class_constant): Fix uninitialised warnings.
2014         (check_constant): Likewise.
2015         (check_wide_constant): Likewise.
2016
2017 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
2018
2019         Make CONSTRUCTOR use VEC to store initializers.
2020         * check-init.c (check_init): Update to cope with VEC in
2021         CONSTRUCTOR_ELTS.
2022         * class.c (make_field_value, make_method_value, get_dispatch_table,
2023         make_class_data, emit_symbol_table, emit_catch_table,
2024         emit_assertion_table): Use build_constructor_from_list instead of
2025         build_constructor.
2026         * constants.c (build_constants_constructor): Likewise.
2027         * java-gimplify.c (java_gimplify_new_array_init): Update to cope with
2028         VEC in CONSTRUCTOR_ELTS.
2029         * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE,
2030         PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead
2031         of a TREE_LIST.
2032         * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in
2033         CONSTRUCTOR_ELTS.
2034         * parse.y (build_new_array_init): Use build_constructor_from_list
2035         instead of build_constructor.
2036         (patch_new_array_init): Update to cope with VEC in
2037         CONSTRUCTOR_ELTS.
2038         (array_constructor_check_entry): Likewise.
2039
2040 2005-07-12  Tom Tromey  <tromey@redhat.com>
2041
2042         * jvspec.c (lang_specific_driver): Put filelist_filename first on
2043         command line.
2044
2045 2005-07-12  Tom Tromey  <tromey@redhat.com>
2046
2047         PR java/19674:
2048         * parse-scan.y (interface_member_declaration): Added
2049         empty_statement.
2050
2051 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
2052         
2053         * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common.
2054         (LABEL_PENDING_CHAIN): Ditto.
2055         (LABEL_PC): Ditto.
2056         (DECL_BIT_INDEX): Ditto.        
2057
2058 2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>
2059
2060         PR java/18119
2061         * parse.y (inner_class_accessible): New function. Logic moved from
2062         check_inner_class_access.
2063         (check_inner_class_access): Use inner_class_accessible.
2064         (resolve_inner_class): Simplify arguments. Create circularity hash
2065         here. Keep looking for classes if we found one that was inaccessible. 
2066         Return the inaccessible class only if there is no other match.
2067         (do_resolve_class): Update for new resolve_inner_class arguments.
2068         Don't create circularity_hash here.
2069
2070 2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>
2071
2072         PR java/21045
2073         * parse.y (add_exception_to_throws): New function.
2074         (purge_unchecked_exceptions): Removed.
2075         (get_constructor_super): Renamed from verify_constructor_super. Now
2076         returns the super constructor after verification.
2077         (java_complete_expand_method): Don't use purge_unchecked_exceptions
2078         or save/restore the exception list.
2079         (check_thrown_exceptions): Add uncaught exceptions in anonymous
2080         class initializers and constructors to the throws clause of the method. 
2081
2082 2005-07-05  Bryce McKinlay  <mckinlay@redhat.com>
2083
2084         PR java/19674
2085         * parse.y (interface_member_declaration): Allow empty statements in
2086         interface declarations.
2087
2088 2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
2089
2090         * Makefile.in (parse.o): Adjust dependencies.
2091         * parse.y: Include tree-dump.h.
2092
2093 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2094
2095         * class.c, decl.c, expr.c: Use '+' flag instead of %J.  Use 'q'
2096         flag for quoting.
2097
2098 2005-07-01  Andrew Pinski  <pinskia@physics.uc.edu>
2099
2100         * parse.y (issue_warning_error_from_context): Call
2101         pp_output_formatted_text to be able to get the buffer.
2102
2103 2005-06-30  Andrew Pinski  <pinskia@physics.uc.edu>
2104
2105         * parse.y (issue_warning_error_from_context): Update for the
2106         renaming of pp_format_text to pp_format.
2107
2108 2005-06-28  Paul Brook  <paul@codesourcery.com>
2109
2110         * decl.c (java_init_decl_processing): Call
2111         default_init_unwind_resume_libfunc.
2112
2113 2005-06-27  Tom Tromey  <tromey@redhat.com>
2114
2115         PR java/21540, PR java/13788:
2116         * parse.y (java_complete_lhs) <CASE_EXPR>: Use
2117         fold_constant_for_init.
2118         (patch_binop): Added 'folding' argument.  Updated all callers.
2119         (patch_unaryop) <NOP_EXPR>: New case.
2120         (fold_constant_for_init) <NOP_EXPR>: Likewise.
2121         (fold_constant_for_init) <COND_EXPR>: Fix sense of test.
2122
2123 2005-06-25  Jan Hubicka  <jh@suse.cz>
2124
2125         * builtins.c (define_builtin): Accept new flags parameter.
2126         (initialize_builtins): Mark the builtins const and nothrow accordingly.
2127
2128 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
2129
2130         * all files: Update FSF address in copyright headers.
2131
2132 2005-06-24  Tom Tromey  <tromey@redhat.com>
2133
2134         * verify-impl.c (verify_instructions_0): Correctly handle
2135         situation where PC falls off end.
2136
2137 2005-06-23  Bryce McKinlay  <mckinlay@redhat.com>
2138
2139         PR java/20697
2140         * parse.y (find_most_specific_methods_list): Remove special case for
2141         inner classes.
2142
2143 2005-06-15  Tom Tromey  <tromey@redhat.com>
2144
2145         PR libgcj/21906:
2146         * class.c (make_method_value): Use soft_abstractmethod_node for
2147         abstract method.
2148         * java-tree.h (soft_abstractmethod_node): New define.
2149         (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant.
2150         * decl.c (java_init_decl_processing): Initialize
2151         soft_abstractmethod_node.
2152
2153 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
2154
2155         * Make-lang.in (rule for installing gcj.1): Depends on installdirs.
2156
2157 2005-06-13  Per Bothner  <per@bothner.com>
2158
2159         * expr.c (int highest_label_pc_this_method,
2160         start_label_pc_this_method): New globals.
2161         (lookup_label): Add start_label_pc_this_method to pc for label, and
2162         update highest_label_pc_this_method.  This prevents conflicts between
2163         labels from different methods.
2164         * java-tree.h: Declare new globals.
2165         * jcf-parse.c (parse_class_file): If needed bump
2166         start_label_pc_this_method and reset highest_label_pc_this_method.
2167
2168 2005-06-13  Tom Tromey  <tromey@redhat.com>
2169
2170         PR java/21844:
2171         * parse.y (nested_field_access_p): Handle case where outer field
2172         is inherited by enclosing class.
2173
2174 2005-06-12  Per Bothner  <per@bothner.com>
2175
2176         * class.c (inherits_from_p): Do load_class if needed.
2177
2178 2005-06-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2179
2180         * gjavah.c (error): Add ATTRIBUTE_PRINTF_1.
2181         * java-tree.h (parse_error_context): Move...
2182         * parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG.
2183         * parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG.
2184         * verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1.
2185
2186 2005-06-08  Roger Sayle  <roger@eyesopen.com>
2187
2188         * typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes.
2189
2190 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
2191
2192         * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of
2193         msgid for argument name.
2194         * gjavah.c (error): Likewise.
2195         * java-tree.h (parse_error_context): Likewise.
2196         * parse.y (parse_error_context, parse_warning_context,
2197         issue_warning_error_from_context): Likewise.
2198
2199 2005-06-01  Tom Tromey  <tromey@redhat.com>
2200
2201         PR java/21722:
2202         * class.c (build_static_field_ref): Don't fold constant fields if
2203         current class is from a .class file and we're using indirect
2204         dispatch.
2205
2206 2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2207
2208         * java/verify-glue.c: Don't include errors.h and include toplev.h.
2209         * java/Make-lang.in: Updates dependencies.
2210
2211 2005-05-26  Ranjit Mathew  <rmathew@hotmail.com>
2212
2213         PR java/19870.
2214         * java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to
2215         NESTED_FIELD_ACCESS_IDENTIFIER_P.
2216         (FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS.
2217         (FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P.
2218         * jcf-write.c (generate_classfile): Use
2219         NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
2220         OUTER_FIELD_ACCESS_IDENTIFIER_P.
2221         * parse.y (build_outer_field_access): Rename to
2222         build_nested_field_access. Support static fields and outer-to-inner
2223         class accesses.
2224         (outer_field_access_p): Rename to nested_field_access_p. Support
2225         static fields and generalise to outer-to-inner class and sibling
2226         inner class accesses.
2227         (outer_field_expanded_access_p): Rename to
2228         nested_field_expanded_access_p and support static fields.
2229         (outer_field_access_fix): Rename to nested_field_access_fix and
2230         support static fields.
2231         (build_outer_field_access_expr): Rename to
2232         build_nested_field_access_expr and support static fields.
2233         (build_outer_field_access_methods): Rename to
2234         build_nested_field_access_methods and support static fields. For
2235         static fields, generate accessors without class instance parameters.
2236         (build_outer_field_access_method): Rename to
2237         build_nested_field_access_method and support static fields.
2238         (build_outer_method_access_method): Use
2239         NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
2240         OUTER_FIELD_ACCESS_IDENTIFIER_P.
2241         (resolve_expression_name): Consider static field accesses across
2242         nested classes.
2243         (resolve_qualified_expression_name): Likewise.
2244         (java_complete_lhs): Use nested_field_access_fix instead of
2245         outer_field_access_fix.
2246         (patch_unary_op): Rename outer_field_flag to nested_field_flag.
2247         Use nested_field_expanded_access_p instead of
2248         outer_field_expanded_access_p. Use nested_field_access_fix instead
2249         of outer_field_access_fix.
2250         (check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P
2251         instead of OUTER_FIELD_ACCESS_IDENTIFIER_P.
2252
2253 2005-05-26  Bryce McKinlay  <mckinlay@redhat.com>
2254
2255         * decl.c (GCJ_BINARYCOMPAT_ADDITION, 
2256         GCJ_BOOTSTRAP_LOADER_ADDITION): Removed.
2257         (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER,
2258         MINOR_BINARYCOMPAT_ABI_VERSION): New.
2259         (GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID.
2260         (parse_version): Calculate version ID using new method. Use bit-flags
2261         for flag_indirect_dispatch and flag_bootstrap_classes.
2262
2263 2005-05-25  Richard Henderson  <rth@redhat.com>
2264
2265         PR libgcj/21692
2266         * Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H.
2267         * class.c (build_class_ref): Set DECL_CLASS_FIELD_P and
2268         DECL_CONTEXT; avoid pushdecl_top_level.
2269         (build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT.
2270         (layout_class): Don't SET_DECL_ASSEMBLER_NAME.
2271         (layout_class_method): Likewise.
2272         * decl.c (java_mark_cni_decl_local): New.
2273         (java_mark_class_local): Use it.
2274         * java-tree.h (DECL_LOCAL_CNI_METHOD_P): New.
2275         (DECL_CLASS_FIELD_P, DECL_VTABLE_P): New.
2276         (struct lang_decl_func): Add local_cni;
2277         (struct lang_decl_var): Add class_field, vtable.
2278         (java_mangle_decl): Declare.
2279         * lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New.
2280         * mangle.c: Remove dup obstack.h; include langhooks-def.h.
2281         (mangle_obstack_1): New.
2282         (java_mangle_decl): Remove obstack argument.  Call mangle_class_field,
2283         mangle_vtable, and mangle_local_cni_method_decl.  Fall back to
2284         lhd_set_decl_assembler_name for things that don't need mangling.
2285         (mangle_class_field): Rename from java_mangle_class_field, make
2286         static, don't call init_mangling or finish_mangling.
2287         (mangle_vtable): Similarly.
2288         (mangle_local_cni_method_decl): New.
2289         (init_mangling): Remove obstack argument.  Use &mangle_obstack_1,
2290         gcc_assert, and MANGLE_RAW_STRING.
2291         (finish_mangling): Use gcc_assert, remove if 0 debugging code.
2292
2293 2005-05-25  DJ Delorie  <dj@redhat.com>
2294
2295         * class.c (set_constant_value): Move warning control from if() to
2296         warning(OPT_*).
2297
2298 2005-05-24  Richard Henderson  <rth@redhat.com>
2299
2300         * builtins.c (define_builtin): Don't call make_decl_rtl.
2301         * constants.c (build_constant_data_ref): Likewise.
2302         * class.c (build_utf8_ref): Likewise.
2303         (build_fieldref_cache_entry, build_static_field_ref): Likewise.
2304         (get_dispatch_table, layout_class_method): Likewise.
2305         (build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT
2306         by hand.
2307         (make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME.
2308         (make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P
2309         to determine if we need a non-zero address.
2310         * decl.c (builtin_function): Don't call make_decl_rtl.
2311         (give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME.
2312         * expr.c (build_known_method_ref): Don't call make_decl_rtl.
2313         * resource.c (compile_resource_data): Likewise.
2314         * parse.y (resolve_field_access): Re-word comment to avoid
2315         building DECL_RTL.
2316
2317 2005-05-24  Richard Henderson  <rth@redhat.com>
2318
2319         * class.c (registered_class): Take it out of class_roots; turn into
2320         a vec of trees.
2321         (register_class): Make static.  Don't duplicate decl node.  Use
2322         VEC_safe_push.
2323         (emit_register_classes): Use VEC_iterate.  Use output_constant
2324         instead of assemble_integer.  Don't call mark_decl_referenced
2325         directly.
2326         * java-tree.h (register_class): Remove decl.
2327
2328 2005-05-19  Paolo Bonzini  <bonzini@gnu.org>
2329
2330         PR java/17845
2331
2332         * parse.y (register_package, package_list): Remove.
2333         (package_declaration): Do not call register_package.
2334         (do_resolve_class): Do not use package_list.
2335
2336 2005-05-15  Gerald Pfeifer  <gerald@pfeifer.com>
2337
2338         * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Remove
2339         unused variable.
2340
2341 2005-05-15  Tom Tromey  <tromey@redhat.com>
2342
2343         PR java/21519:
2344         * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Don't call
2345         NOTE_PUSH.
2346
2347 2005-05-12  Aaron Luchko <aluchko@redhat.com>
2348
2349         * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'.
2350
2351 2005-05-11  Tom Tromey  <tromey@redhat.com>
2352
2353         * gcj.texi (Code Generation): Document -fbootstrap-classes.
2354         * decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro.
2355         (parse_version): Use it.
2356         * lang.opt (-fbootstrap-classes): New option.
2357
2358 2005-05-10  Paolo Bonzini  <bonzini@gnu.org>
2359
2360         PR java/21436
2361         * class.c (maybe_layout_super_class): Look for imports in this_class.
2362         * parse.h (ctxp_for_generation_last): New.
2363         (do_resolve_class): Add a parameter.
2364         * parse.y (ctxp_for_generation_last): New.
2365         (java_pop_parser_context): Add at end of list.
2366         (find_in_imports, find_in_imports_on_demand): Look in ctxp
2367         if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of
2368         the given type are NULL.
2369         (do_resolve_class): Look into the imports of the new second parameter.
2370         Adjust recursive calls.
2371         (resolve_class, resolve_inner_class, find_as_inner_class): Adjust
2372         calls to do_resolve_class.
2373         (create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST.
2374         (java_complete_class): Do not do that here.
2375
2376 2005-05-03  Thomas Fitzsimmons  <fitzsim@redhat.com>
2377
2378         PR java/20309
2379         * Make-lang.in (java): Add gjnih.
2380         (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
2381         (GJNIH_OBJS): New variable.
2382         (gjnih$(exeext)): New target.
2383         (JAVA_MANFILES): Add gjnih.1.
2384         (java.uninstall): Add gjnih.1.
2385         (java.mostlyclean): Add gjnih.
2386         (java.maintainer-clean): Add gjnih.1.
2387         (java/gjavah-jni.o): New target.
2388         (.INTERMEDIATE): Add gjnih.pod.
2389         (gjnih.pod): New target.
2390         * config-lang.in (stagestuff): Add gjnih.
2391         * gcj.texi (Top): Add gjnih node.
2392         (Invoking gcjh): Add descriptions of -force, -old, -trace, -J and
2393         -bootclasspath options.
2394         (Invoking gjnih): New node.
2395         * gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined.
2396         (TOOLNAME): New macro.
2397         (error): Replace hard-coded gcjh with TOOLNAME.
2398         (process_file): Likewise.
2399         (usage): Likewise.
2400         (version): Likewise.
2401         (help): Likewise.  Add help output for -force, -old, -trace and -J
2402         options.
2403         (OPT_FORCE, OPT_OLD, OPT_TRACE): New macros.
2404         (options): Add force, old, trace and J fields.
2405         (main): Handle -force, -old, -trace and -J options.
2406
2407 2005-05-03  Tom Tromey  <tromey@redhat.com>
2408
2409         PR java/21245:
2410         * gjavah.c (main): Unlink output file on error.
2411
2412 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
2413
2414         * constants.c, jvgenmain.c, lang.opt, resource.c: Update
2415         copyright.
2416
2417 2005-04-29  Tom Tromey  <tromey@redhat.com>
2418
2419         * expr.c (build_jni_stub): Updated for change to build_block.
2420
2421 2005-04-29  Andrew Pinski  <pinskia@gcc.gnu.org>
2422
2423         * expr.c (force_evaluation_order): Declare 'saved' earlier.
2424
2425 2005-04-28  Andrew Haley  <aph@redhat.com>
2426
2427         PR java/19285
2428         * java-tree.h (soft_resolvepoolentry_node): New.
2429         (alloc_constant_fieldref): Declare.
2430         * expr.c (expand_java_field_op): Don't call class_init for
2431         accesses to static fields with indirect dispatch.
2432         * builtins.c (initialize_builtins): Add "__builtin_expect".
2433         * decl.c (soft_resolvepoolentry_node): New variable.
2434         (java_init_decl_processing): Create a decl for
2435         "_Jv_ResolvePoolEntry".
2436         * class.c (build_fieldref_cache_entry): New function.
2437         (build_static_field_ref): Rewrite for indirect dispatch.
2438         * constants.c (find_name_and_type_constant_tree): New function.
2439         (alloc_constant_fieldref): Likewise.
2440         (build_constants_constructor): Handle CONSTANT_Fieldref and
2441         CONSTANT_NameAndType.
2442
2443         PR java/21115
2444         * expr.c (force_evaluation_order): Convert outgoing args smaller
2445         than integer.
2446
2447 2005-04-27  Bryce McKinlay  <mckinlay@redhat.com>
2448
2449         * gcj.texi (libgcj Runtime Properties): Remove obsolete
2450         gnu.gcj.runtime.NameFinder.* system properties. Update documentation 
2451         for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname.
2452
2453 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2454
2455         * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls
2456         to `unlock_stream' with `unlock_std_streams'.
2457
2458 2005-04-25  Jakub Jelinek  <jakub@redhat.com>
2459
2460         * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H)
2461         instead of just expr.h.
2462
2463 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2464
2465         * gjavah.c (main): Unlock the stdio streams.
2466         * jcf-dump.c (main): Likewise.
2467         * jv-scan.c (main): Likewise.
2468         * jvgenmain.c (main): Likewise.
2469
2470 2005-04-23  DJ Delorie  <dj@redhat.com>
2471
2472         * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c,
2473         parse.y: Adjust warning() callers.
2474
2475 2005-04-21  Bryce McKinlay  <mckinlay@redhat.com>
2476
2477         * gcj.texi (Object fields): Change "Integer" to "Int" in example
2478         contructor.
2479
2480 2005-04-20  Bryce McKinlay  <mckinlay@redhat.com>
2481
2482         * gcj.texi: Fix typos and bogus example.
2483
2484 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
2485
2486         * except.c: Fix a comment typo.
2487
2488 2005-04-19  Julian Brown  <julian@codesourcery.com>
2489
2490         * decl.c (finish_method): Revert patch from 2005-04-13 for breaking
2491         indirect dispatch with PIC.
2492
2493 2005-04-18  Andrew Haley  <aph@redhat.com>
2494
2495         * java-except.h (struct eh_range.handler): Remove unused field.
2496         (handle_nested_ranges): Remove function declaration.
2497         (sanity_check_exception_range): Add function declaration.       
2498         * verify.c (verify_jvm_instructions): Remove call to
2499         handle_nested_ranges.
2500         * verify-glue.c (verify_jvm_instructions_new): Call
2501         sanity_check_exception_range.
2502         * except.c (link_handler, eh_range_freelist, link_handler,
2503         handle_nested_ranges): Remove.
2504         (add_handler): Rewrite.
2505         (sanity_check_exception_range): New function.
2506         (print_ranges): New function.
2507
2508 2005-04-13  Julian Brown  <julian@codesourcery.com>
2509
2510         * decl.c (finish_method): Give methods once-only linkage.
2511
2512 2005-04-11  Richard Sandiford  <rsandifo@redhat.com>
2513
2514         * lang.opt: Refer to the GCC internals documentation instead of c.opt.
2515
2516 2005-04-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2517
2518         * java-tree.h: Don't use PARAMS().
2519
2520 2005-04-07  Per Bothner  <per@bothner.com>
2521
2522         * class.c (push_class): By default, suppress debug output.
2523         (finish_class): Enable debug output for classes we're emitting.
2524
2525 2005-04-07  Andrew Haley  <aph@redhat.com>
2526
2527         * gcj.texi: Correct gcj-dbtool instructions.
2528
2529 2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>
2530
2531         * gcj.texi: Fix a typo.
2532         * lang.c: Fix a comment typo.
2533
2534 2005-04-01  Thomas Fitzsimmons  <fitzsim@redhat.com>
2535
2536         * gcj.texi (Invoking gij): Add descriptions of new -X options.
2537         Mention recognized-and-ignored compatibility options.
2538         (Memory allocation): Add descriptions of JvMalloc, JvRealloc and
2539         JvFree.
2540         (About CNI): Add Memory allocation section.
2541
2542 2005-04-01  Tom Tromey  <tromey@redhat.com>
2543
2544         * decl.c (java_init_decl_processing): Fix types of
2545         _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject,
2546         _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray,
2547         _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ.
2548
2549 2005-03-31  Jan Hubicka  <jh@suse.cz>
2550
2551         * Make-lang.in (class.o, decl.o): Depend on cgraph.h.
2552         * class.c: Include cgraph.h
2553         (make_local_functoin_alias): Mark aslias as needed.
2554         * resource.c: Include cgraph.h
2555         (compile_resource_data): Go via cgraph interface.
2556
2557 2005-03-30  Ian Lance Taylor  <ian@airs.com>
2558
2559         * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL.
2560
2561 2005-03-30  Tom Tromey  <tromey@redhat.com>
2562
2563         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where
2564         inner_class_info_index==0 or outer_class_info_index==0.
2565
2566 2005-03-29  Tom Tromey  <tromey@redhat.com>
2567
2568         * gcj.texi (libgcj Runtime Properties): Document
2569         gnu.gcj.runtime.endorsed.dirs.
2570
2571 2005-03-24  Anthony Green  <green@redhat.com>
2572
2573         * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to
2574         'gcj-dbtool -p'.
2575
2576 2005-03-23  Tom Tromey  <tromey@redhat.com>
2577
2578         * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define.
2579         (parse_version): Use it.
2580
2581 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
2582
2583         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
2584
2585 2005-03-18  Andrew Haley  <aph@redhat.com>
2586
2587         PR java/20522
2588         * decl.c (update_aliases): Don't update variables that are about
2589         to die.
2590         (maybe_poplevels): Add comment.
2591
2592 2005-03-17  Bryce McKinlay  <mckinlay@redhat.com>
2593
2594         PR java/20502
2595         * jcf-parse.c (duplicate_class_warning): New function.
2596         (java_parse_file): Call duplicate_class_warning if 
2597         CLASS_FROM_CURRENTLY_COMPILED_P is already set.
2598         (parse_zip_file_entries): Likewise. Also set
2599         CLASS_FROM_CURRENTLY_COMPILED_P.
2600
2601 2005-03-16  Andrew Haley  <aph@redhat.com>
2602
2603         * expr.c (expand_java_arrayload): Don't generate a
2604         NullPointerException based on the type of the node.
2605         (build_java_array_length_access): Likewise.
2606
2607 2005-03-15  Zack Weinberg  <zack@codesourcery.com>
2608
2609         * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi.
2610
2611 2005-03-11  Tom Tromey  <tromey@redhat.com>
2612
2613         * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'.
2614         (libgcj Runtime Properties): Document the default .db.
2615
2616 2005-03-10  Ranjit Mathew  <rmathew@hotmail.com>
2617
2618         PR java/20312
2619         * parse.y (checks_throws_clauses): Check exceptions list even when
2620         the base class does not come from a source file being compiled.
2621         (java_complete_lhs): Remove unused variable 'wfl'.
2622
2623 2005-03-09  Ranjit Mathew  <rmathew@hotmail.com>
2624
2625         PR java/20338
2626         * decl.c (finish_method): Emit _Jv_InitClass for private static
2627         methods inside inner classes as well.
2628
2629 2005-03-08  Julian Brown  <julian@codesourcery.com>
2630         * Revert patch from 2005-03-08 for causing bootstrap failure on
2631         ppc-darwin.
2632
2633 2005-03-08  Julian Brown  <julian@codesourcery.com>
2634
2635         * decl.c (finish_method): Give methods once-only linkage.
2636
2637 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
2638
2639         * lang.c (flag_new_verifier): Enable by default, regardless of ABI.
2640
2641 2005-03-07  Bryce McKinlay  <mckinlay@redhat.com>
2642
2643         * verify-glue.c (vfy_is_assignable_from): Perform static check using
2644         can_widen_reference_to if the C++ ABI is in use.
2645         (vfy_get_interface_count, vfy_get_interface): Remove unused functions.
2646         * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type,
2647         type_isresolved, init_state, set_pc, state_get_pc,
2648         _Jv_BytecodeVerifier): Clean up unused and disabled functions.
2649         (verify_fail): Report the current PC from the verifier context.
2650         (free_state): Remove #if 0 block to enable this function.
2651         (free_verifier_context): Call free_state on state_list iterator
2652         values before freeing them.
2653         * expr.c (pop_type_0): Pop correct type for error message when stack
2654         contains a multi-word type.
2655
2656 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
2657
2658         * expr.c (build_java_array_length_access): Remove !flag_new_verifier
2659         for known NULL array length access.
2660
2661 2005-03-07  Tom Tromey  <tromey@redhat.com>
2662
2663         * gcj.texi (Invoking gcj-dbtool): Document '-f'.
2664
2665 2005-03-06  Kazu Hirata  <kazu@cs.umass.edu>
2666
2667         * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h,
2668         typeck.c: Update copyright.
2669
2670 2005-03-06  Ranjit Mathew  <rmathew@hotmail.com>
2671
2672         Remove xref code.
2673         * xref.c, xref.h: Remove file.
2674         * Make-lang.in (java/xref.o): Remove.
2675         * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration.
2676         * lang.c (flag_emit_xref): Remove definition.
2677         * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove.
2678         * typeck.c (convert): Remove use of do_not_fold.
2679         * parse.y (do_not_fold): Remove definition.
2680         (parser grammar): Remove xref code.
2681         (maybe_create_class_interface_decl, create_class): Likewise.
2682         (register_fields, method_header, finish_method_declaration): Likewise.
2683         (declare_local_variables, source_end_java_method): Likewise.
2684         (java_complete_expand_classes): Do not set do_not_fold.
2685         (java_complete_expand_method): Remove xref code.
2686         (java_expand_classes, resolve_field_access, patch_invoke): Likewise.
2687         (java_complete_tree, java_complete_lhs, patch_assignment): Likewise.
2688         (patch_binop, build_string_concatenation, patch_array_ref): Likewise.
2689         (patch_synchronized_statement, patch_throw_statement): Likewise.
2690         (maybe_build_class_init_for_field): Likewise.
2691
2692 2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>
2693
2694         * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P
2695         instead of IS_NON_TYPE_CODE_CLASS.
2696
2697 2005-03-04  Andrew Haley  <aph@redhat.com>
2698
2699         PR java/18362
2700         * class.c (set_method_index): Don't set method_index if it is
2701         NULL_TREE.
2702         (layout_class_method): Don't complain about "non-static method foo
2703         overrides static method" in the case of indirect dispatch.
2704
2705 2005-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2706
2707         * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic
2708         warning.
2709         * Make-lang.in: Don't elide warnings in jcf-io.c.
2710
2711 2005-03-01  Per Bothner  <per@bothner.com>
2712
2713         PR java/8608
2714         * check-init.c (wfl): Remove static.
2715         (final_assign_error, check_init): Replace calls to parse_error_context
2716         by plain error.
2717         (check_init): Save, set, and restore input_location for each exp.
2718
2719 2005-03-01  Per Bothner  <per@bothner.com>
2720
2721         * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45)
2722         if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined.
2723         * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents.
2724
2725 2005-03-01  Per Bothner  <per@bothner.com>
2726
2727         * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro.
2728
2729 2005-02-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
2730
2731         PR libgcj/16923
2732         * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and
2733         JvVMOption.
2734
2735 2005-02-22  Tom Tromey  <tromey@redhat.com>
2736
2737         PR java/20056:
2738         * verify-impl.c (EITHER): New define.
2739         (types_compatible): Handle it.
2740         (check_field_constant): Use it.
2741
2742 2005-02-18  Tom Tromey  <tromey@redhat.com>
2743
2744         PR java/20056:
2745         * verify-impl.c (types_equal): Fixed test.
2746
2747         PR java/20056:
2748         * verify-glue.c (vfy_class_has_field): New function.
2749         * verify.h (vfy_class_has_field): Declare.
2750         * verify-impl.c (check_field_constant): Added 'putfield'
2751         argument.
2752         (verify_instructions_0): Updated.
2753         (types_equal): New function.
2754
2755 2005-02-14  Tom Tromey  <tromey@redhat.com>
2756
2757         PR java/19921:
2758         * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Note the
2759         stack effect of multianewarray.
2760
2761 2005-02-14  Andrew Haley  <aph@redhat.com>
2762
2763         PR java/19907
2764         * expr.c (expand_byte_code): Call promote_arguments().
2765         (promote_arguments): New function.
2766         * decl.c (check_local_unnamed_variable): Remove special case for
2767         new verifier.
2768         (find_local_variable): Promote all boolean types to int
2769         when searching for local variable decls.
2770
2771 2005-02-12  Kazu Hirata  <kazu@cs.umass.edu>
2772
2773         * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c,
2774         parse-scan.y: Update copyright.
2775
2776 2005-02-11  Per Bothner  <per@bothner.com>
2777
2778         PR java/15543
2779         * parse-scan.y (input_location): Remove variable.
2780         (main_input_filename): New - replaces input_filename, which isn't
2781         settable if USE_MAPPED_LOCATION.
2782         * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE,
2783         so we don't reference input_location or wfl_operator in that case.
2784         * jv-scan.c (expand_location): Remove - no longer used.
2785         (main): Set main_input_filename rather than input_filename.
2786
2787 2005-02-09  Richard Henderson  <rth@redhat.com>
2788
2789         * builtins.c (initialize_builtins): Call build_common_builtin_nodes.
2790         * decl.c (java_init_decl_processing): Initialize const_ptr_type_node.
2791
2792 2005-02-08  Marcin Dalecki  <martin@dalecki.de>
2793
2794         * expr.c (add_type_assertion): Use the proper enumeration type,
2795         since this is what htab_find_slot() is expecting.
2796
2797 2005-02-06  Joseph S. Myers  <joseph@codesourcery.com>
2798
2799         * gcj.texi: Update copyright dates.
2800
2801 2005-02-02  Tom Tromey  <tromey@redhat.com>
2802
2803         * gcj.texi (libgcj Runtime Properties): Default library_control
2804         to 'cache'.
2805
2806 2005-02-02  Ranjit Mathew  <rmathew@hotmail.com>
2807
2808         PR java/15543
2809         * parse-scan.y (formal_parameter): Use $2 (type) instead of $$
2810         (modifiers) when square brackets are present in a declaration for
2811         a final paramter.
2812         * jv-scan.c (main): Set input_filename and input_line.
2813
2814 2005-02-01  Tom Tromey  <tromey@redhat.com>
2815
2816         PR java/19742:
2817         * gjavah.c (get_field_name): Don't override name for JNI header.
2818
2819 2005-02-01  Roger Sayle  <roger@eyesopen.com>
2820
2821         * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR
2822         of unsigned types using iushr and lushr JVM bytecodes.
2823
2824 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
2825
2826         PR java/19738
2827         * gjavah.c (jni_print_float): Do not emit floating-point
2828         initialiser for a static final field.
2829         (jni_print_double): Likewise.
2830
2831 2005-02-01  Mark Mitchell  <mark@codesourcery.com>
2832
2833         Revert:
2834         2005-01-31  Mark Mitchell  <mark@codesourcery.com>
2835         * gjavah.c (print_field_info): Mark static data members of
2836         floating-point type with "__extension__".
2837
2838 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
2839
2840         * gjavah.c (print_field_info): Mark static data members of
2841         floating-point type with "__extension__".
2842
2843 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
2844
2845         PR java/9157
2846         * parse.y (build_string_concatenation): Remove redundant if.
2847         (patch_conditional_expr): Attempt to patch_string() the condition
2848         of a ?: as well, in addition to its other operands.
2849
2850 2005-01-25  Tom Tromey  <tromey@redhat.com>
2851
2852         * Make-lang.in (java/java-tree-inline.o): Removed.
2853
2854 2005-01-25  Ranjit Mathew  <rmathew@hotmail.com>
2855
2856         PR java/19070
2857         * parse.y (patch_binop): Allow comparisons against NULL only
2858         if the other operand is of a reference type.
2859
2860 2005-01-24  Tom Tromey  <tromey@redhat.com>
2861
2862         * java-tree.h (gcj_abi_version): Declare.
2863         * class.c (make_class_data): Push gcj_abi_version into "next"
2864         field.  Renamed field.
2865         * decl.c (gcj_abi_version): New global.
2866         (parse_version): New function.
2867         (java_init_decl_processing): Call it.  Renamed 'next' field.
2868         Include version.h.
2869         (GCJ_BINARYCOMPAT_ADDITION): New define.
2870
2871 2005-01-24  Roger Sayle  <roger@eyesopen.com>
2872
2873         PR java/19295
2874         * jcf-write.c (generate_bytecode_insns): Conversions between
2875         integer types of the same precision shouldn't generate widening
2876         or narrowing conversion bytecodes.
2877
2878 2005-01-22  Kazu Hirata  <kazu@cs.umass.edu>
2879
2880         * java-except.h, java-tree.h: Remove unused prototypes.
2881
2882 2005-01-20  Andrew Pinski  <pinskia@gcc.gnu.org>
2883
2884         PR java/18091:
2885         * jcf-write.c (perform_relocations): Don't call memcpy if source
2886         and destination are the same.
2887
2888 2005-01-17  Tom Tromey  <tromey@redhat.com>
2889
2890         * verify-impl.c (get_short): Sign extend.
2891         (get_int): Likewise.
2892
2893 2005-01-12  Ranjit Mathew  <rmathew@hotmail.com>
2894
2895         * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT
2896         with TYPE_SIZE.
2897
2898 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
2899
2900         * verify.c: Revert to the version before the BC-ABI merge.
2901
2902 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
2903
2904         PR java/19277
2905         * check-init.c (check_init): Take care of references that do not
2906         have an explicit final variable declaration (e.g. array length
2907         access) for pre/post in/de-crement operators.
2908
2909 2005-01-08  Mark Wielaard  <mark@klomp.org>
2910
2911         * parse.y (process_imports): Allocate (and free) original_name only
2912         when not already defined.
2913         * jcf-parse.c (read_class): Free results of find_class() and
2914         lrealpath().
2915         (java_parse_file): Keep pointer to head of file_list and free when
2916         done. Free result of lrealpath().
2917
2918 2005-01-05  Tom Tromey  <tromey@redhat.com>
2919
2920         * gcj.texi (Standard Properties): java.ext.dirs is now used.
2921
2922 2004-12-20  Andrew Haley  <aph@redhat.com>
2923
2924         * typeck.c: Use fold_convert for ints and booleans.
2925
2926 2004-12-17  Andrew Haley  <aph@redhat.com>
2927
2928         PR java/18931
2929         * typeck.c (convert): Use a CONVERT_EXPR when converting to
2930         BOOLEAN_TYPE or CHAR_TYPE.
2931         (convert_to_boolean, convert_to_char) : Remove.
2932         * convert.h (convert_to_boolean, convert_to_char) : Remove.
2933         * expr.c (expand_load_internal): Do type conversion if type is not
2934         as required.
2935
2936 2004-12-13  Danny Smith  <dannysmith@users.sourceforge.net>
2937
2938         PR target/18459
2939         * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION.
2940         Update comment.
2941
2942 2004-12-07  Andrew Haley  <aph@redhat.com>
2943
2944         PR java/18811:
2945         * jcf-parse.c (load_class): Remove sanity test for missing inner
2946         class file.
2947
2948 2004-12-06  Tom Tromey  <tromey@redhat.com>
2949
2950         * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
2951         (java.uninstall): Likewise.
2952         (java.maintainer-clean): Likewise.
2953         (.INTERMEDIATE): Likewise.
2954         (java.install-man): Likewise.
2955         (gcj-dbtool.pod): New target.
2956         * gcj.texi (Code Generation): Document -findirect-dispatch.
2957         (libgcj Runtime Properties): Document
2958         gnu.gcj.precompiled.db.path.
2959         (Top): Link to "Invoking gcj-dbtool".
2960
2961 2004-12-06  Tom Tromey  <tromey@redhat.com>
2962
2963         PR java/14853:
2964         * java-tree.h (extract_field_decl): Declare.
2965         * parse.y (extract_field_decl): Renamed from
2966         strip_out_static_field_access_decl.  No longer static.
2967         * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs.
2968
2969 2004-12-03  Tom Tromey  <tromey@redhat.com>
2970
2971         * lang.c (flag_new_verifier): Define.
2972         (java_post_options): Set flag_new_verifier if indirect dispatch
2973         is being used.
2974         * lang.opt (fnew-verifier): Removed.
2975
2976 2004-12-03  Tom Tromey  <tromey@redhat.com>
2977
2978         PR bootstrap/14614:
2979         * Make-lang.in (java.install-common): Only install transformed
2980         gcjh if gcj-cross exists.
2981
2982 2004-12-03  Andrew Haley  <aph@redhat.com>
2983
2984         PR java/18812
2985         * except.c (link_handler): Patch 'outer' field of siblings of the
2986         range we're demoting.
2987
2988 2004-12-03  Andrew Haley  <aph@redhat.com>
2989
2990         PR java/18697
2991         * class.c (layout_class_method): Don't fail to override a method
2992         simply because it has DECL_ARTIFICIAL set.
2993
2994 2004-12-02  Tom Tromey  <tromey@redhat.com>
2995
2996         PR java/16675:
2997         * parse.y (craft_constructor): Special case null_pointer_node.
2998
2999 2004-12-02  Tom Tromey  <tromey@redhat.com>
3000
3001         PR java/18741:
3002         * java-gimplify.c (java_gimplify_expr): Don't call
3003         SET_EXPR_LOCATION unless wrapped tree is an expression.
3004
3005 2004-11-27  Per Bothner  <per@bothner.com>
3006
3007         * jcf-parse.c (set_source_filename):  Improvement to Andrew's fix:
3008         Fix fencepost error in 'i', which got executed one too many times.
3009         Also, fold memcpy into explicit loop, as originally intended.
3010         Also, free temporary 'buf' which otherwise leaks.
3011
3012 2004-11-27  Per Bothner  <per@bothner.com>
3013
3014         * expr.c (build_expr_wfl): Only declare last_file and last_filenode
3015         local static variables if not USE_MAPPED_LOCATION.
3016
3017 2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>
3018
3019         * class.c, decl.c, expr.c: Fix comment typos.
3020
3021 2004-11-26  Andrew Pinski  <pinskia@physics.uc.edu>
3022
3023         PR java/18305
3024         * decl.c (end_java_method): Call
3025         attach_init_test_initialization_flags on all the init_decls.
3026         * parse.y (attach_init_test_initialization_flags): Move to ...
3027         * expr.c (attach_init_test_initialization_flags): here and
3028         support BIND_EXPR also.
3029         * java-tree.h (attach_init_test_initialization_flags): Prototype.
3030         * jcf-parse.c (parse_class_file): Don't disable class init
3031         optimization.
3032
3033 2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>
3034
3035         * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote
3036         in diagnostics.
3037
3038 2004-11-24  Richard Henderson  <rth@redhat.com>
3039
3040         * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type,
3041         vfy_string_type, vfy_throwable_type): Use ANSI declaration form.
3042
3043 2004-11-24  Tom Tromey  <tromey@redhat.com>
3044
3045         * verify.c (defer_merging): Don't use C++-style comment.
3046         * verify.h (java_opcode): Added java_opcode_end.
3047         * class.c (build_class_ref): Remove C++ comment and old FIXME.
3048
3049         * verify-impl.c (vfy_push_type): Removed bogus "return".
3050         (initialize_stack): Use vfy_alloc and vfy_free.
3051         (verify_instructions_0): Likewise.
3052
3053         * Merged gcj-abi-2-dev-branch to trunk.
3054
3055 2004-11-24  Andrew Haley  <aph@redhat.com>
3056
3057         * jcf-parse.c (parse_class_file): Set file_start_location.
3058
3059 2004-11-10  Tom Tromey  <tromey@redhat.com>
3060
3061         * class.c (make_field_value): Don't call build_static_field_ref.
3062         (build_static_field_ref): Don't emit direct references when using
3063         indirect dispatch.
3064
3065         * gcj.texi (Invoking gij): Document -verbose.  Put -verbose and
3066         -verbose:class into man page synopsis.
3067
3068 2004-11-09  Tom Tromey  <tromey@redhat.com>
3069
3070         * expr.c (build_java_arraystore_check): Still generate check if
3071         element type is itself an array.
3072
3073 2004-11-08  Tom Tromey  <tromey@redhat.com>
3074
3075         * java-tree.h (soft_check_assignment_node): Removed.
3076         (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE.
3077         * decl.c (java_init_decl_processing): Don't initialize
3078         soft_check_assignment_node.
3079
3080 2004-11-05  Tom Tromey  <tromey@redhat.com>
3081
3082         * class.c (layout_class_methods): Don't add Miranda methods when
3083         using indirect dispatch.
3084
3085 2004-11-05  Bryce McKinlay  <mckinlay@redhat.com>
3086
3087         * class.c (make_class_data): Call emit_assertion_table to set the
3088         'assertion_table' field.
3089         (build_signature_for_libgcj): Move here from expr.c.
3090         (add_assertion_table_entry): New function. Callback for assertion
3091         hashtable traversal.
3092         (emit_assertion_table): New. Take class argument, and generate
3093         assertion table DECL based on the TYPE_ASSERTIONS hashtable.
3094         * decl.c (init_decl_processing): Define assertion_entry_type record.
3095         Push 'assertion_table' class field instead of 'verify'.
3096         * expr.c (type_assertion_eq): Compare 'assertion_code' field.
3097         (type_assertion_hash): Include 'assertion_code' in hash.
3098         (add_type_assertion): Rewritten. Take class and assertion_code
3099         arguments. Add assertions to the TYPE_ASSERTIONS hashtable.
3100         (can_widen_reference_to): Use new add_type_assertion() arguments.
3101         * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE,
3102         JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE.
3103         (verify_identifier_node): Removed.
3104         (assertion_entry_type, assertion_table_type): New.
3105         (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type
3106         assertion code definitions.
3107         (struct type_assertion): Add assertion_code. Rename 'source_type' and
3108         'target_type' to 'op1' and 'op2'.
3109         (add_type_assertion): Declare.
3110         (lang_printable_name_wls): Remove unused definition.
3111         * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion
3112         to emit runtime assertion.
3113         (vfy_note_stack_type): Clean up non-C90 declarations.
3114         (vfy_note_local_type): Likewise.
3115         * verify.h (vfy_is_assignable_from): Declare.
3116         * verify-impl.c (is_assignable_from_slow): Remove unused function.
3117         (ref_compatible): Rename arguments. Call vfy_is_assignable_from()
3118         instead of is_assignable_from_slow().
3119         (types_compatible): Reinstate ref_compatible() call.
3120
3121 2004-11-04  Tom Tromey  <tromey@redhat.com>
3122
3123         * class.c (build_static_field_ref): Reverted previous patch.
3124
3125         * class.c (build_static_field_ref): Don't emit direct references
3126         when using indirect dispatch.
3127
3128 2004-11-03  Tom Tromey  <tromey@redhat.com>
3129
3130         * expr.c (expand_java_arrayload): Set lhs_type_node.
3131         (expand_java_arraystore): Set rhs_type_node.
3132
3133 2004-11-02  Tom Tromey  <tromey@redhat.com>
3134
3135         * jcf-parse.c (compute_class_name): Use filename length from zip
3136         directory, not strlen.
3137
3138         * expr.c (expand_invoke): Mark new interface methods as abstract.
3139
3140 2004-11-01  Tom Tromey  <tromey@redhat.com>
3141
3142         * verify-impl.c (push_jump): Removed check for uninitialized
3143         objects.
3144         (push_exception_jump): Likewise.
3145         (handle_ret_insn): Likewise.
3146         (handle_jsr_insn): Likewise.
3147         (state_check_no_uninitialized_objects): Removed.
3148
3149         * decl.c (check_local_unnamed_variable): Recognize
3150         promoted-to-int parameters when using the new verifier.
3151         * expr.c (expand_java_arraystore): Explicitly request array type
3152         when using new verifier.
3153         (expand_java_arrayload): Likewise.
3154         (invoke_build_dtable): Don't pass object_type_node as
3155         expression argument to build_java_indirect_ref.
3156         (build_java_check_indexed_type): Do nothing.
3157         (build_java_arraystore_check): Handle case where array doesn't
3158         have array type.
3159         (build_java_array_length_access): Likewise.
3160         (expand_invoke): Handle case where interface overrides a method
3161         from Object.
3162         (pop_type_0): Always succeed for reference types.
3163         (process_jvm_instruction): Don't pop a value in a dead
3164         exception handler.
3165         (pop_arguments): Convert arguments to correct types.
3166
3167 2004-10-29  Andrew Haley  <aph@redhat.com>
3168
3169         * jcf-parse.c (give_name_to_class): Remove line that was
3170         incorrectly merged.
3171
3172 2004-10-29  Andrew Haley  <aph@redhat.com>
3173
3174         * jcf-parse.c (set_source_filename): Add code to build new sfname.
3175
3176 2004-10-20  Andrew Haley  <aph@redhat.com>
3177
3178         * decl.c (end_java_method): Don't expand if flag_syntax_only.
3179
3180 2004-10-26  Tom Tromey  <tromey@redhat.com>
3181
3182         * verify.h (vfy_notify_verified): Removed.
3183         * verify-glue.c (vfy_notify_verified): Removed.
3184
3185 2004-10-26  Tom Tromey  <tromey@redhat.com>
3186
3187         * verify-impl.c (debug_print_state): Declare `i' before code.
3188         (merge_types): Modify `t' when it is null_type.
3189
3190 2004-10-26  Tom Tromey  <tromey@redhat.com>
3191
3192         * verify-impl.c (type_print): Renamed from print.  Now static and
3193         takes an argument.
3194         (debug_print_state): Use type_print.
3195
3196 2004-10-25  Tom Tromey  <tromey@redhat.com>
3197
3198         * expr.c (build_invokeinterface): Compute correct offset for
3199         index into interface methods.
3200
3201 2004-10-20  Tom Tromey  <tromey@redhat.com>
3202
3203         * java-tree.h (verify_jvm_instructions_new): Declare.
3204
3205         * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1
3206         command line.
3207
3208         * verify-impl.c (verify_instructions): Correctly handle wide
3209         types on the stack.
3210         * verify-glue.c (vfy_get_class_name): Use DECL_NAME.
3211         (vfy_get_component_type): Strip pointer types.
3212         (vfy_find_class): Use get_type_from_signature.  Strip pointer
3213         types.
3214         Include java-except.h.
3215
3216 2004-10-20  Bryce McKinlay  <mckinlay@redhat.com>
3217
3218         * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t,
3219         vfy_push_type_t, set_variable, add_new_state, merge_into,
3220         handle_jsr_insn, branch_prepass, check_class_constant,
3221         check_wide_constant, get_one_type, compute_static_types,
3222         verify_instructions_0): Clean up C99 declarations after statements.
3223
3224 2004-10-20  Tom Tromey  <tromey@redhat.com>
3225
3226         * verify-impl.c (merge_refs): Compare reference against iterator,
3227         not ref2.
3228
3229         * verify-glue.c (vfy_tag): Mask off resolved flag.
3230
3231 2004-10-19  Tom Tromey  <tromey@redhat.com>
3232
3233         * verify-impl.c (verify_instructions): Call vfy_note_local_type.
3234         (init_state_with_stack): Initialize `this_type' in state.
3235         (verify_method): Use debug_print.
3236         * verify-glue.c (vfy_is_primitive): Removed debugging print.
3237         (vfy_note_stack_depth): Reverted last patch.
3238         (vfy_note_stack_type): Note pointer to Object, not Object.
3239         (vfy_note_local_type): Likewise.
3240
3241         * verify.h (vfy_note_instruction_seen): Declare.
3242         * verify-glue.c (verify_jvm_instructions_new): Set
3243         BCODE_EXCEPTION_TARGET on target instruction.
3244         (vfy_note_instruction_seen): New function.
3245         * verify-impl.c (FLAG_INSN_SEEN): New define.
3246         (verify_instructions_0): Set flag on instruction.  Save state for
3247         PC=0 later.
3248         (verify_instructions): Call vfy_note_instruction_seen.
3249
3250         * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error.
3251         (verify_jvm_instructions_new): Call method_init_exceptions,
3252         add_handler, and handle_nested_ranges.
3253         * verify-impl.c (verify_method): Return 1 on success.
3254         (verify_instructions_0): Save the state at PC=0.
3255
3256         * verify-impl.c (init_type_from_class): Set is_resolved and
3257         ref_next on new ref_intersection.
3258         (init_type_from_string): Likewise.
3259
3260 2004-10-15  Bryce McKinlay  <mckinlay@redhat.com>
3261
3262         * expr.c (expand_bytecode): Use verify_jvm_instructions_new
3263         if flag_new_verifier is set.
3264         * java-tree.h (flag_new_verifier): Declare.
3265         * lang.opt (fnew-verifier): New option.
3266         * verify-impl.c: Work around namespace pollution by undef'ing
3267         'current_class'.
3268         (struct verifier_context): Make 'bytecode' const.
3269         (verify_fail_pc): Pass -1 PC argument to vfy_fail.
3270         (types_compatible): For the BC-ABI, always consider reference types
3271         compatible.
3272         (check_class_constant): Use vfr->current_class.
3273         (check_constant): Likewise.
3274         (check_wide_constant): Likewise.
3275         (check_field_constant): Check for 'L' at start of type name.
3276         (get_one_type): Return pointer instead of type. Set type result in
3277         caller via passed type pointer.
3278         (compute_argument_types): Update to use new get_one_type arguments.
3279         (compute_return_type): Likewise.
3280         (make_verifier_context): New. Allocate and initialize 'vfr'.
3281         (free_verifier_context): New. Free 'vfr' and its contents.
3282         (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context
3283         and free_verifier_context.
3284
3285 2004-10-15  Tom Tromey  <tromey@redhat.com>
3286
3287         * verify-glue.c (vfy_note_local_type): Mark argument as unused.
3288         * verify.h (vfy_fail): Fixed formatting.
3289
3290         * verify-impl.c (vfr): Fixed comment formatting.
3291         (collapse_type): New function.
3292         (verify_instructions): Notify compiler about type map.
3293         * verify.h (vfy_note_stack_depth): Updated.
3294         (vfy_note_stack_type): Likewise.
3295         (vfy_note_local_type): Likewise.
3296         (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type):
3297         Declare.
3298         * verify-glue.c (vfy_note_stack_depth): Correctly size type
3299         state.  Added `method' argument.
3300         (vfy_note_stack_type): Renamed from vfy_note_type.  Added `method'
3301         argument.
3302         (vfy_note_local_type): New function.
3303         (vfy_unsuitable_type): Likewise.
3304         (vfy_return_address_type): Likewise.
3305         (vfy_null_type): Likewise.
3306
3307         * verify.h (VFY_IN_GCC): Removed.
3308         (VFY_WANT_TYPEMAP): Removed.
3309         * verify-impl.c (verify_instructions_0): Removed useless "\".
3310         (struct state) <next>: Uncomment.
3311
3312 2004-10-13  Bryce McKinlay  <mckinlay@redhat.com>
3313
3314         * verify-impl.c: Formatting fixes. Reformat C++-style comments to
3315         C-style.
3316
3317 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
3318
3319         * Make-lang.in (verify.o): Re-enabled this target.
3320         * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED.
3321         (vfy_get_interface): Likewise.
3322         (verify_jvm_instructions_new): Renamed from verify_jvm_instructions.
3323         * verify.h (verify_jvm_instructions_new): Declare.
3324         * verify-impl.c (free_state): Temporarily comment out unused
3325         function.
3326
3327 2004-10-06  Tom Tromey  <tromey@redhat.com>
3328
3329         * java-tree.h (JV_STATE_READ): New enum value.
3330
3331 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
3332
3333         * verify.h: New file.
3334
3335 2004-10-05  Bryce McKinlay  <mckinlay@redhat.com>
3336
3337         * verify-impl.c, verify-glue.c, verify.h: New files.
3338         * Make-lang.in: Add rules for verify-impl.o and verify-glue.o.
3339
3340 2004-09-24  Andrew Haley  <aph@redhat.com>
3341
3342         * decl.c (check_local_unnamed_variable): Always use the PARM_DECL
3343         for a slot if it's of pointer type.
3344
3345 2004-09-14  Tom Tromey  <tromey@redhat.com>
3346
3347         * class.c (make_class_data): Correctly initialize "state" field.
3348         Initialize "engine" field.
3349         * decl.c (java_init_decl_processing): Add "engine" field.
3350
3351 2004-09-10  Andrew Haley  <aph@redhat.com>
3352
3353         PR java/12760
3354         * expr.c (build_invokeinterface): Use fast method for interface
3355         dispatch.
3356         * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE,
3357         JTI_ITABLE_PTR_TYPE.
3358         (struct lang_type): Add  itable_methods, itable_decl, itable_syms_decl.
3359         (emit_symbol_table): Add new arg, element_size.
3360         * decl.c (java_init_decl_processing): Initialize Class.itable.
3361         * class.c (GEN_TABLE): New macro.
3362         (gen_indirect_dispatch_tables): Use it.  Add itable.
3363         (make_class_data): Add new arg for emit_symbol_table().
3364         Emit itable.
3365         (add_miranda_methods): Make sure search_class has been parsed.
3366         (emit_symbol_table): Add new arg, element_size.
3367
3368 2004-09-06  Andrew Haley  <aph@redhat.com>
3369
3370         * verify.c (merge_types): Return Object for all merges of
3371         interfaces.
3372         * expr.c (add_type_assertion): Don't generate assertions when
3373         source type is array of Object.
3374
3375 2004-09-03  Andrew Haley  <aph@redhat.com>
3376
3377         * class.c (finish_class): Nullify TYPE_VERIFY_METHOD.
3378
3379         * lang.c (java_post_options): Force flag_verify_invocations if
3380         we're not using indirect dispatch.
3381
3382         * expr.c (pop_type_0): Move test for interfaces before call to
3383         can_widen_reference_to().
3384         (build_signature_for_libgcj): Remove generation of canonical array
3385         type.
3386         (add_type_assertion): Canonicalize both arrays.
3387         Don't assert that type X can be assigned to Object.
3388         Don't assert that type X an be assigned to type X.
3389         Don't assert that Object can be assigned to type X.
3390         (can_widen_reference_to): Warn whenever we generate an assertion.
3391         (process_jvm_instruction): Use throwable_type_node for the type of
3392         an exception class.
3393
3394 2004-09-01  Andrew Haley  <aph@redhat.com>
3395
3396         * decl.c (java_init_decl_processing): Change
3397         verify_identifier_node to "__verify".
3398         * expr.c (add_type_assertion): Use verify_identifier_node for name.
3399         * java-tree.h (verify_identifier_node): Change to "__verify".
3400
3401         * expr.c (build_signature_for_libgcj): New function.
3402         (add_type_assertion): Use it to construct signatures for
3403         source_type and target_type.
3404
3405 2004-08-27  Andrew Haley  <aph@redhat.com>
3406
3407         * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE.
3408         (verify_identifier_node): New.
3409         (TYPE_VERIFY_METHOD): New.
3410         (struct type_assertion): New type.
3411         * expr.c (type_assertion_eq): New function.
3412         (type_assertion_hash): New function.
3413         (add_type_assertion): New function.
3414         (can_widen_reference_to): Call add_type_assertion().
3415         * decl.c (java_init_decl_processing): Add verify_identifier_node.
3416         * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type).
3417         (finish_class): Output TYPE_VERIFY_METHOD (type).
3418
3419         * decl.c (end_java_method): Nullify unused fields.
3420
3421 2004-08-17  Andrew Haley  <aph@redhat.com>
3422
3423         * verify.c (defer_merging): Quieten.
3424         * jcf-parse.c (load_class): Only try to open a class file if it's
3425         java.lang.Object or if it's part of the current compilation.
3426         Check that the class we just tried to load is the class we just
3427         loaded.  Quieten.
3428         (java_parse_file): Set flag_verify_invocations off if we're
3429         compiling from .class.
3430         (parse_zip_file_entries): Abort if we try to read a dummy class.
3431         * expr.c (can_widen_reference_to): Quieten.
3432         (build_invokevirtual): Abort if we try to invokevirtual an
3433         interface.
3434         (expand_invoke): Don't build a non-interface call to an interface.
3435         (build_instanceof): Don't do premature optimization if
3436         flag_verify_invocations is not set.
3437         * class.c (set_super_info): Disable code that inherits TYPE_DUMMY
3438         from superclass.
3439         (build_static_field_ref): Add correct type conversion for
3440         field_address.
3441         (add_miranda_methods): Disable generation of Miranda methods for
3442         dummy classes.
3443         (layout_class_method): Don't complain about non-static method
3444         overrides static method with dummy classes.
3445
3446 2004-08-13  Tom Tromey  <tromey@redhat.com>
3447
3448         * class.c (build_static_field_ref): Re-enable atable lookups for
3449         static fields.
3450
3451         * parse.y (strip_out_static_field_access_decl): Indentation fix.
3452
3453 2004-08-11  Tom Tromey  <tromey@redhat.com>
3454
3455         * gcj.texi (libgcj Runtime Properties): Document new properties.
3456
3457 2004-08-06  Andrew Haley  <aph@redhat.com>
3458
3459         * jcf-parse.c (load_class): Check that we really have loaded the
3460         class we're looking for.
3461
3462 2004-07-19  Andrew Haley  <aph@redhat.com>
3463
3464         * verify.c (verify_jvm_instructions): Comment change only.
3465
3466         * typeck.c (build_java_array_type): Add size field to array name.
3467
3468         * java-tree.h (LOCAL_SLOT_P): New.
3469         (update_aliases): Add PC argument.
3470         (pushdecl_function_level): New function.
3471
3472         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
3473         MODIFY_EXPR, and SAVE_EXPR.
3474         (java_gimplify_modify_expr): New function.
3475
3476         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
3477         (expand_iinc): Pass PC to update_aliases().
3478         (STORE_INTERNAL): Likewise.
3479         (process_jvm_instruction): Likewise.
3480
3481         * decl.c (base_decl_map): New variable.
3482         (uniq): New variable.
3483         (update_aliases): Rewrite with more thorough checking.
3484         (debug_variable_p): New function.
3485         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
3486         (check_local_named_variable): Delete whole function.
3487         (initialize_local_variable): New function.
3488         (check_local_unnamed_variable): Add checks and comments.
3489         (find_local_variable): Rewrite.
3490         (java_replace_reference): New function.
3491         (function_binding_level): New variable.
3492         (pushdecl_function_level): New function.
3493         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
3494         (maybe_pushlevels): Call pushdecl() on each of the new decls.
3495         (start_java_method): Reset uniq.  Create base_decl_map.  Set
3496         function_binding_level.
3497         (end_java_method): Null unused fields to save memory.
3498
3499 2004-06-29  Andrew Haley  <aph@redhat.com>
3500
3501         * except.c (expand_start_java_handler): Push a new binding level.
3502         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
3503         register_exception_range() to register where we'll do it.
3504         (expand_end_java_handler): Remove old bogus code.  Replace with
3505         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
3506         the top of the expression we're curently building.
3507         (maybe_end_try): Delete.
3508         * decl.c (binding_level.exception_range): New field.
3509         (clear_binding_level): Add field exception_range.  Reformat.
3510         (poplevel): Call expand_end_java_handler().
3511         (poplevel): Call java_add_stmt only if functionbody is false.
3512         (maybe_poplevels): Don't call maybe_end_try() from here.
3513         (end_java_method): Clear no longer used trees in function decl.
3514         (register_exception_range): New function.
3515         * java-tree.h (register_exception_range, struct eh_range): Declare.
3516
3517 2004-06-22  Andrew Haley  <aph@redhat.com>
3518
3519         * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of
3520         the otable.
3521         * check-init.c (get_variable_decl): Teach check-init about
3522         FIELD_DECLs addressed via the otable.
3523         * jcf-parse.c (load_class): Check CLASS_LOADED_P, not
3524         CLASS_PARSED_P.
3525
3526 2004-05-28  Andrew Haley  <aph@redhat.com>
3527
3528         * jcf-parse.c (load_class): Don't try to read a class that we've
3529         already read.
3530
3531         * expr.c (build_invokeinterface): Use the old-fashioned way of
3532         doing indirect dispatch: look up interfaces by name.
3533         * java-tree.h (enum java_tree_index): Add
3534         JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE
3535         * decl.c (java_init_decl_processing): Add
3536         soft_lookupinterfacemethodbyname_node.
3537
3538         * gjavah.c (print_method_info): Final methods have vtable entries,
3539         so gjavah needs to output them.
3540         * class.c (layout_class_method): Generate vtable entries for final
3541         methods.
3542         * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect
3543         dispatch, even if a method is final.
3544
3545 2004-05-25  Andrew Haley  <aph@redhat.com>
3546
3547         * class.c (build_symbol_entry): Convert the names of constructors
3548         to init_identifier_node when generating an entry for the indirect
3549         dispatch table.
3550
3551         * expr.c (build_known_method_ref): Generate indirect calls for
3552         all methods marked DECL_EXTERNAL or TREE_PUBLIC.
3553
3554 2004-05-24  Andrew Haley  <aph@redhat.com>
3555
3556         * expr.c (build_known_method_ref): Make sure ARRAY_REF access to
3557         atable element is of the right type.
3558
3559         * class.c (build_static_field_ref): Cast pointer to correct type
3560         for field.
3561
3562 2004-04-20  Bryce McKinlay  <mckinlay@redhat.com>
3563
3564         * Merged with HEAD as of 20040514. Diff against
3565         gcj-abi-2-merge-20040514.
3566
3567 2004-04-16  Andrew Haley  <aph@redhat.com>
3568
3569         * verify.c (check_pending_block): Disable subroutine checks.
3570         (defer_merging): New function.
3571         (merge_types): If types are dummy, use defer_merging to combine them.
3572         (verify_jvm_instructions): If invocation is invokeinterface and
3573         target is dummy, assume target really is an interface.
3574
3575         * parse.y (patch_invoke): Break out call to java_create_object.
3576
3577         * lang.c (flag_verify_invocations): New.
3578
3579         * jcf-parse.c (load_class): If we've already failed to load a
3580         class, don't try again.
3581         (load_class): If we can't find a .class file, don't fail, but emit
3582         a warning.
3583         (parse_class_file): Don't act on dummy methods.
3584
3585         * java-tree.h (flag_verify_invocations): New.
3586         (TYPE_DUMMY): New.
3587         (lang_type.dummy_class): New field.
3588         (java_create_object): New function.
3589         (METHOD_DUMMY): New.
3590
3591         * expr.c (build_field_ref): Widen field offset.
3592         (pop_type_0): If the type in stack_type_map is a TREE_LIST, check
3593         that each of its elements is compatible with the one we're
3594         popping.
3595         (pop_type_0): Issue a warning to say that we need to generate a
3596         runtime check.
3597         (java_create_object): New function.
3598         (build_field_ref): Only generate hard refs if we're not using
3599         indirect dispatch.
3600         (expand_java_field_op): If we're using !verify_invocations and we
3601         see a missing field, generate a decl for it.
3602
3603         (expand_invoke): If a class doesn't have the method we seek and
3604         we're using !flag_verify_invocations, generate a decl for the
3605         method now.
3606
3607         (build_known_method_ref): Always use indirect dispatch via the
3608         atable for static methods.
3609
3610         (expand_java_NEW): Break out object creation into new function,
3611         java_create_object.
3612
3613         (can_widen_reference_to): Issue a warning to say that we need to
3614         generate a runtime check.
3615
3616         * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass.
3617         (make_method_value): Also use index for interfaces.
3618         (make_class_data): Skip dummy field for inherited data.
3619         Don't build method array for dummy methods.
3620         Set size_in_byte to -1 when using inirect dispatch
3621         Don't build a hard class ref if we don't have a hard ref to our
3622         superclass, or if we're using inirect dispatch.
3623         Null out dispatch tables.
3624
3625         (layout_class_method): Don't complain about non-static method
3626         overrides static method is method is artificial.
3627
3628         (build_static_field_ref): Disable atable references to static
3629         fields for the time being.
3630
3631         (layout_class_methods): Check for CLASS_INTERFACE as
3632         well as CLASS_ABSTRACT.
3633
3634 2004-11-24  Steven Bosscher  <stevenb@suse.de>
3635
3636         * class.c (make_class_data): Don't check flag_inline_functions.
3637         * lang.c (flag_really_inline): Remove unused flag.
3638         (java_handle_option): Don't set it here.  Remove special handling
3639         of flag_inline_functions for Java.
3640         (java_init): Don't set flag_inline_trees here.  Already done...
3641         (java_post_options): ...here.  Don't clear flag_inline_functions.
3642
3643 2004-11-24  Steven Bosscher  <stevenb@suse.de>
3644
3645         * java-gimplify.c (java_gimplify_labeled_block_expr): New function.
3646         (java_gimplify_exit_block_expr): New function.
3647         (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and
3648         LABELED_BLOCK_EXPR.
3649         * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def.
3650         (EXIT_BLOCK_EXPR): Likewise.
3651         * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h.
3652         (LABELED_BLOCK_BODY): Likewise.
3653         (EXIT_BLOCK_LABELED_BLOCK): Likewise.
3654         * jcf-write.c (generate_bytecode_insns): Don't handle the unused
3655         EXIT_BLOCK_RETURN operand.  Use EXIT_BLOCK_LABELED_BLOCK instead of
3656         TREE_OPERAND.
3657         * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR.
3658         (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and
3659         EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND.  Don't handle the
3660         second operand of EXIT_BLOCK_EXPR.
3661         * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of
3662         TREE_OPERAND.
3663         (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes.
3664
3665 2004-11-23  Ben Elliston  <bje@au.ibm.com>
3666
3667         * xref.h (xref_flag_value): Remove.
3668         (xref_set_data, xref_get_data): Likewise.
3669         (xref_set_current_fp): Likewise.
3670         (XREF_NONE): Likewise.
3671         (XREF_GET_DATA): Likewise.
3672         * xref.c (xref_flag_value): Remove.
3673         (xref_set_data, xref_get_data): Likewise.
3674         (xref_set_current_fp): Likewise.
3675
3676 2004-11-23  Ben Elliston  <bje@au.ibm.com>
3677
3678         * gjavah.c (output_directory): Make static.
3679         (temp_directory): Likewise.
3680
3681 2004-11-15  Tom Tromey  <tromey@redhat.com>
3682
3683         * decl.c (instn_ptr_type_node): Removed.
3684         (lineNumbers_ptr_type_node): Removed.
3685         (jint_type): Removed.
3686         (jint_ptr_type): Removed.
3687
3688 2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>
3689
3690         PR java/15576
3691         * check-init.c (check_init): Ignore DECL_EXPR.
3692         * expr.c (always_initialize_class_p): Reenable.
3693         (build_class_init): Use a variable to store the decl.  Also use
3694         boolean_false_node instead of integer_zero_node.
3695         * parse.y (attach_init_test_initialization_flags): Add a decl_expr
3696         to the block.
3697
3698 2004-11-08  Tom Tromey  <tromey@redhat.com>
3699
3700         PR java/16843:
3701         * gjavah.c (HANDLE_END_FIELD): Call print_field_info when
3702         generating a JNI header.
3703         (print_field_info): Handle JNI headers.
3704         (jni_print_float): Likewise.
3705         (jni_print_double): Likewise.
3706
3707 2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
3708
3709         * decl.c (end_java_method): Remove duplicated code.
3710
3711 2004-11-06  Zack Weinberg  <zack@codesourcery.com>
3712             Gerald Pfeifer  <gerald@pfeifer.com>
3713
3714         * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H
3715         as well.
3716
3717 2004-11-02  Bryce McKinlay  <mckinlay@redhat.com>
3718
3719         PR java/17265
3720         * class.c: Reinstate 2004-08-18 patch.
3721         (make_local_function_alias): Don't create an alias for extern (native)
3722         functions.
3723
3724 2004-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
3725
3726         PR java/17265
3727         * class.c (make_local_function_alias): Revert 2004-08-18 change.
3728         (make_method_value): Likewise.
3729
3730 2004-10-21  Andrew Haley  <aph@redhat.com>
3731
3732         PR java/18091:
3733         * jcf-parse.c (set_source_filename): Add code to build new sfname.
3734
3735 2004-10-20  Andrew Haley  <aph@redhat.com>
3736
3737         * decl.c (end_java_method): Don't expand if flag_syntax_only.
3738         Remove duplicated code block.
3739
3740 2004-10-18  Steven Bosscher  <stevenb@suse.de>
3741
3742         * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn):
3743         New rules to work around old Bison warnings.
3744
3745 2004-10-17  Steven Bosscher  <stevenb@suse.de>
3746
3747         * class.c (ident_subst): Always alloca buffer.
3748         * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy
3749         opcode after including javaop.def.
3750         * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the
3751         conditional expression that exits, to avoid warnings.
3752         * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as
3753         a user of an extension.
3754         * win32-host.c: Move check down to have non-empty file when
3755         WIN32 is not defined.
3756
3757         * Make-lang.in (java-warn): Add STRICT_WARN.
3758         (java/jcf-io.o-warn): Don't have Werror for this file.
3759         * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use.
3760
3761 2004-10-16  Hans-Peter Nilsson  <hp@bitrange.com>
3762
3763         * expr.c (expr_add_location): Move declaration to before all
3764         statements.
3765         * parse.y (java_expand_classes): Ditto.
3766         * lex.c (java_peek_unicode): Ditto.
3767
3768 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
3769
3770         * check-init.c: Use %<, %> and %q for quoting in diagnostics,
3771         if possible, else convert `foo' to 'foo'.
3772         * class.c: Likewise.
3773         * decl.c: Likewise.
3774         * expr.c: Likewise.
3775         * jcf-io.c: Likewise.
3776         * jcf-parse.c: Likewise.
3777         * lang.c: Likewise.
3778         * lex.c: Likewise.
3779         * parse.h: Likewise.
3780
3781 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
3782
3783         * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and
3784         rename parameter 'msg' to 'msgid' in function declaration.
3785         (issue_warning_error_from_context): Likewise.
3786         (yyerror): Rename parameter 'msg' to 'msgid'.
3787         (all over): Use new quoting style for diagnostics.
3788
3789 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
3790
3791         * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c,
3792         jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c:
3793         Update copyright.
3794
3795 2004-10-14  Matt Austern  <austern@apple.com>
3796
3797         * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct
3798         pointer_set_t* now.
3799
3800 2004-10-13  Tom Tromey  <tromey@redhat.com>
3801
3802         PR java/15578:
3803         * lang.opt (--extdirs): Document.
3804         * jvspec.c (lang_specific_driver): Recognize -encoding and
3805         -extdirs.
3806
3807 2004-10-06  Ulrich Weigand  <uweigand@de.ibm.com>
3808
3809         * parse.y (issue_warning_error_from_context): Use va_list *
3810         instead of va_list parameter.
3811         (parse_error_context): Update call.
3812         (parse_warning_context): Likewise.
3813
3814 2004-10-05  Zack Weinberg  <zack@codesourcery.com>
3815
3816         * parse.y, parse-scan.y: Add list of diagnostic messages to
3817         insulate translation template from version of yacc/bison used
3818         to compile the grammar.
3819
3820 2004-10-05  Ranjit Mathew  <rmathew@hotmail.com>
3821
3822         Prepare for %q, %< and %> in diagnostic message strings.
3823         * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2.
3824         Name second parameter 'msgid'.
3825         * parse.y: Additionally include pretty-print.h and diagnostic.h.
3826         (issue_warning_error_from_context): Use pretty-printer functions
3827         instead of vsprintf for constructing formatted messages. Rename
3828         parameter 'msg' to 'msgid'.
3829         (parse_error_context): Rename parameter 'msg' to 'msgid'.
3830         (parse_warning_context): Likewise.
3831
3832 2004-10-05  Andrew Haley  <aph@redhat.com>
3833
3834         PR java/17779
3835         * jcf-parse.c (parse_zip_file_entries): If a class has a
3836         superclass and a TYPE_SIZE of zero, lay it out.
3837
3838 2004-09-30  Andrew Haley  <aph@redhat.com>
3839
3840         PR java/17733
3841         * jcf-parse.c (compute_class_name): Rewrite.
3842
3843 2004-10-01  Jan Hubicka  <jh@suse.cz>
3844
3845         * java.c (java_expand_body): Update call of tree_rest_of_compilation.
3846
3847 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
3848
3849         * lex.c: Fix a comment typo.
3850
3851 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
3852
3853         * java-tree.h: Fix a comment typo.
3854
3855 2004-09-30  Per Bothner  <per@bothner.com>
3856
3857         Simplify lexer.  Implement --enable-mapped-location support.
3858         * jcf-parse.c (parse_class_file):  Use linemap_line_start.
3859         (parse_source_file_1): Pass filename as extra parameter, so we can call
3860         linemap_add and set input_location here, rather than in both callers.
3861         (read_class): Pass copied filename to parse_source_file_1.
3862         Don't initialize wfl_operator - only needed for source compilation.
3863         (read_class, jcf_parse):  Call linemap_add with LC_LEAVE.
3864         * lex.h:  Remove a bunch of debugging macros.
3865         * lex.h (struct_java_line, struct java_error):  Remove types.
3866         (JAVA_COLUMN_DELTA):  Remove - use java_lexer.next_colums instead.
3867         (struct java_lc_s):  Remove prev_col field.
3868         (struct java_lexer):  New fields next_unicode, next_columns, and
3869         avail_unicode.  New position field, and maybe token_start field.
3870         Don't need hit_eof field - use next_unicode == -1 instead.
3871         (JAVA_INTEGERAL_RANGE_ERROR):  Rename to JAVA_RANGE_ERROR.
3872         (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR):  Update accordingly.
3873         * parse.h:  Various changes for USE_MAPPED_LOCATION.
3874         (EXPR_WFL_EMIT_LINE_NOTE): XXX
3875         (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros.
3876         (struct parser_ctxt):  New file_start_location field.
3877         Remove p_line, c_line fields since we no longer save lines.
3878         Remove elc, lineno, and current_jcf fields - no longer used.
3879         * parse.y:  Updates for USE_MAPPED_LOCATION and new lexer.
3880         Don't use EXPR_WFL_ADD_COL since that isn't trivial with
3881         source_location and is probably not needed anymore anyway.
3882         Use new expr_add_Location function.
3883         (SET_EXPR_LOCATION_FROM_TOKEN):  New convenience macro.
3884         (java_pop_parser_context):  Minor cleanup.
3885         (java_parser_context_save_global, java_parser_context_restore_global,
3886         java_pop_parser_context):  Save/restore input_location as a unit.
3887         (issue_warning_error_from_context):  If USE_MAPPED_LOCATION take
3888         a source_location instead of a wfl context node.
3889         (check_class_interface_creation):  input_filename is not addressable.
3890         (create_artificial_method):  Calling java_parser_context_save_global
3891         and java_parser_context_restore_global is overkill.  Instead,
3892         temporarily set input_location from class decl.
3893         (java_layout_seen_class_methods): Set input_location from method decl.
3894         (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION.
3895         (finish_loop_body):  Likewise.
3896         * lex.c: Updates for USE_MAPPED_LOCATION.  Use build_unknwon_wfl.
3897         (java_sprint_unicode):  Take a character, not index in line.
3898         (java_sneak_uncode):  Replaced by java_peek_unicode.
3899         (java_unget_unicode):  No longer used.
3900         (java_allocate_new_line. java_store_unicode):  Removed, since we
3901         no longer remember "lines".
3902         (java_new_lexer):  Update for new data structures.
3903         (java_read_char):  Move unget_value checking to java_read_unicode.
3904         (java_get_unicode, java_peek_unicode, java_next_unicode): New more
3905         efficient functions that are used directly when lexing.
3906         (java_read_unicode_collapsing_terminators):  No longer needed.
3907         (java_parse_end_comment, java_parse_escape_sequence, do_java_lex):
3908         Re-organize to use java_peek_unicode to avoid java_unget_unicode.
3909         (java_parse_escape_sequence):  Rewrite to be simpler / more efficient.
3910         (do_java_lex):  Lots of movings around to avoid java_unget_unicode,
3911         combine switch branches, and test for common token kinds earlier.
3912         (java_lex_error):  Rewrite.
3913         * jv-scan.c (expand_location): New function, copied from tree.c.
3914         (main): Set ctxp->filename instead of setting input_filename directly.
3915
3916 2004-09-30  Per Bothner  <per@bothner.com>
3917
3918         More cleanup for --enable-mapped-location.
3919         * class.c (push_class):  If USE_MAPPED_LOCATION don't set
3920         input_location here.  Instead do it in give_name_to_class.
3921         (build_class_ref):  Set DECL_ARTIFICIAL, for the sake of dwarf2out.
3922         * expr.c (expand_byte_code): Call linemap_line_start.
3923         * expr.c (build_expr_wfl):  If USE_MAPPED_LOCATION, change final
3924         parameters to a source_location.  Don't need EXPR_WFL_FILENAME_NODE.
3925         (expr_add_location):  New function, if USE_MAPPED_LOCATION.
3926         * class.c (maybe_layout_super_class):  Adjust build_expr_wfl call
3927         to USE_MAPPED_LOCATION case.
3928
3929         * java-tree.h (JAVA_FILE_P, ZIP_FILE_P):  Remove unused macros.
3930         * jcf-parse.c (java_parse_file): Don't set input_filename.
3931         Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames.
3932         Create a list of TRANSLATION_UNIT_DECL.
3933         (current_file_list):  Is now a TRANSLATION_UNIT_DECL chain.  The
3934         reason is so we can set a DECL_SOURCE_LOCATION for each file.
3935         (java_parse_file):  Don't set unused ZIP_FILE_P, JAVA_FILE_P..
3936         Create line-map LC_ENTER/LC_LEAVE entries for archive itself.
3937         (file_start_location):  New static.
3938         (set_source_filename):  Avoid extra access to input_filename macro.
3939         Concatenate new name with class's package prefix.
3940         (set_source_filename, give_name_to_class): Update.
3941         (give_name_to_class):  Set class's "line 0" input_location here.
3942         (parse_class_file):  Set input_location as a unit.
3943
3944         * jcf-parse.c (load_class): Sanity test if missing inner class file.
3945
3946 2004-09-29  Per Bothner  <per@bothner.com>
3947
3948         * java-tree.h:  Redefine some macros and add some declaration
3949         to handle the USE_MAPPED_LOCATION case.
3950         * parse.h (EXPR_WFL_QUALIFICATION):  Use operand 1, not 2.
3951         * java-tree.h (EXPR_WFL_FILENAME_NODE):  Use operand 2, not 1.
3952         * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in
3953         USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone.
3954
3955         * check-init.c (check_init): Handle USE_MAPPED_LOCATION case.
3956         * decl.c (finish_method, java_add_stmt): Likewise.
3957         * java-gimplify.c (java-gimplify.c):  Likewise.
3958         * jcf-write.c (generate_bytecode_insns):  Likewise.
3959         * lang.c (java_post_options): Likewise - call linemap_add.
3960
3961 2004-09-29  Andrew Haley  <aph@redhat.com>
3962
3963         PR java/17007
3964         * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the
3965         result of TRUNC_MOD_EXPR.
3966         (patch_unaryop): Likewise for CONVERT_EXPR, which may throw.
3967         * decl.c (java_init_decl_processing): Mark
3968         soft_lookupinterfacemethod_node and soft_instanceof_node pure.
3969
3970 2004-09-28  Tom Tromey  <tromey@redhat.com>
3971
3972         PR java/15710:
3973         * class.c (add_miranda_methods): Load superinterface if not
3974         already loaded.
3975
3976 2004-09-28  Andrew Haley  <aph@redhat.com>
3977
3978         PR java/17586
3979         * jcf-parse.c (load_class): Don't try to read a class that we've
3980         already read.
3981
3982 2004-09-28  Andrew Haley  <aph@redhat.com>
3983
3984         * jcf-parse.c (load_class): Back out previous broken patch.
3985
3986 2004-09-28  Andrew Haley  <aph@redhat.com>
3987
3988         PR java/17586
3989         * jcf-parse.c (load_class): Don't try to read a class that we've
3990         already read.
3991         Check that we really did read the right class.
3992
3993 2004-09-25  Tom Tromey  <tromey@redhat.com>
3994
3995         PR java/17500:
3996         * parse.y (create_artificial_method): Use add_method_1.
3997
3998 2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>
3999
4000         * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix
4001         comment typos.
4002         * gcj.texi: Fix typos.
4003
4004 2004-09-24  Tom Tromey  <tromey@redhat.com>
4005
4006         PR java/15656:
4007         * parse.y (class_instance_creation_expression): Set `$$' to NULL
4008         in error parts of rule.
4009         (unary_expression): Don't call error_if_numeric_overflow when $1
4010         is NULL.
4011
4012 2004-09-24  Tom Tromey  <tromey@redhat.com>
4013
4014         PR java/16789:
4015         * parse.y (resolve_qualified_expression_name): Set
4016         CAN_COMPLETE_NORMALLY on first call when chaining static calls.
4017         * expr.c (force_evaluation_order): Check for empty argument list
4018         after stripping COMPOUND_EXPR.
4019
4020 2004-09-23  Andrew Haley  <aph@redhat.com>
4021
4022         PR java/16927:
4023         * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of
4024         COND_EXPRs.
4025
4026 2004-09-23  Tom Tromey  <tromey@redhat.com>
4027
4028         PR java/17329:
4029         * java-gimplify.c (java_gimplify_expr) <SAVE_EXPR>: Ignore case
4030         where operand is null.
4031
4032 2004-09-23  Tom Tromey  <tromey@redhat.com>
4033
4034         PR java/17380:
4035         * parse.y (not_accessible_p): Allow access to protected members
4036         even when class is not static.
4037
4038 2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>
4039
4040         * Make-lang.in: Revert the gcc-none.o change.
4041
4042 2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>
4043
4044         * parse.y (patch_anonymous_class): VEC_space returns true if there
4045         is space.
4046
4047 2004-09-21  Matt Austern  <austern@apple.com>
4048
4049         Fix bootstrap.
4050         * gjavah.c (free_method_name_list): Fix function definition so
4051         it's a proper C prototype.
4052
4053 2004-09-21  Tom Tromey  <tromey@redhat.com>
4054
4055         PR java/17575:
4056         * gjavah.c (free_method_name_list): New method.
4057         (main): Call it.
4058
4059 2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
4060             Zack Weinberg  <zack@codesourcery.com>
4061
4062         * java-tree.def: Use tree_code_class enumeration constants
4063         instead of code letters.
4064         * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for
4065         new tree-class enumeration constants.
4066
4067 2004-09-13  Tom Tromey  <tromey@redhat.com>
4068
4069         PR java/17216:
4070         * class.c (layout_class_method): Put synthetic methods into the
4071         vtable.
4072
4073 2004-09-11  Andrew Pinski  <apinski@apple.com>
4074
4075         * Make-lang.in (java/ggc-none.c): Change dependency
4076         for ggc.h into $(GGC_H).
4077
4078 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
4079
4080         * Make-lang.in (java/win32-host.o): Add dependency on
4081         coretypes.h.
4082         * win32-host.c: Add includes for coretypes.h, jcf.h
4083
4084 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
4085
4086         * Make-lang.in (GCJH_OBJS): Change dependency from
4087         ggc-none.o to java/ggc-none.o
4088         (JCFDUMP_OBJS): Likewise.
4089         (java/ggc-none.o): New target.
4090
4091 2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>
4092
4093         * boehm.c (get_boehm_type_descriptor):  Adjust build_int_cst calls.
4094         * class.c (build_utf8_ref, build_static_field_ref,
4095         make_field_value, make_method_value, get_dispatch_table,
4096         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
4097         * constants.c (get_tag_node, build_ref_from_constant_pool,
4098         build_constants_constructor): Likewise.
4099         * decl.c (java_init_decl_processing): Likewise.
4100         * expr.c (build_java_array_length_access, build_newarray,
4101         expand_java_multianewarray, expand_java_pushc, expand_iinc,
4102         build_java_binop, build_field_ref, expand_java_add_case,
4103         expand_java_call, build_known_method_ref, build_invokevirtual,
4104         build_invokeinterface, build_jni_stub): Likewise.
4105         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
4106         * jcf-parse.c (get_constant): Likewise.
4107         * lex.c (do_java_lex): Likewise.
4108         * parse.y (patch_binop, patch_unaryop, patch_cast,
4109         build_newarray_node, patch_newarray): Likewise.
4110         * resource.c (compile_resource_data): Likewise.
4111         * typeck.c (build_prim_array_type): Likewise.
4112
4113 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
4114
4115         * decl.c (java_init_decl_processing): Adjust
4116         initialize_sizetypes call.
4117
4118 2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>
4119
4120         * jv-scan.c (fancy_abort): Add.
4121
4122 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
4123
4124         * expr.c (build_java_arrayaccess): Use convert to change
4125         len's type.
4126
4127 2004-08-19  Bryce McKinlay  <mckinlay@redhat.com>
4128
4129         * class.c (make_local_function_alias): Allocate extra space for 'L'
4130         in name buffer. Reported by Thomas Neumann.
4131
4132 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
4133
4134         * parse.h (JAVA_RADIX10_FLAG): Rename to ...
4135         (JAVA_NOT_RADIX10_FLAG): ... here.  Invert meaning.
4136         * lex.c (do_java_lex): Adjust.
4137         (error_if_numeric_overflow): Likewise.
4138
4139 2004-08-18  Andrew Pinski  <apinski@apple.com>
4140
4141         * class.c (make_local_function_alias): Only make a new decl if we
4142         support alias attribute on all decls.
4143
4144 2004-08-18  Bryce McKinlay  <mckinlay@redhat.com>
4145
4146         * class.c (make_local_function_alias): New function. Create local
4147         alias for public method DECL.
4148         (make_method_value): Use make_local_function_alias.
4149         * parse.y (craft_constructor): Don't special-case anonymous classes.
4150         Always set ctor_name to init_identifier_node.
4151         (lookup_method_invoke): Call layout_class_method when creating
4152         anonymous class constructor.
4153
4154 2004-08-18  Richard Henderson  <rth@redhat.com>
4155
4156         * java-gimplify.c (java_gimplify_expr): Move '2' handling into
4157         default case.  Treat '<' similarly.  Update for
4158         is_gimple_formal_tmp_var name change.
4159
4160 2004-08-17  Andrew Haley  <aph@redhat.com>
4161
4162         * lang.c (lang_printable_name): Obey verbose flag.
4163         * parse.y (constructor_circularity_msg): Set VERBOSE arg for
4164         lang_printable_name().
4165         (verify_constructor_circularity, get_printable_method_name,
4166         check_abstract_method_definitions, java_check_regular_methods,
4167         java_check_abstract_methods, check_inner_class_access,
4168         fix_constructors, patch_method_invocation, patch_return):
4169         Likewise.
4170         * expr.c (pop_type_0): Likewise.
4171
4172         * java-tree.h (lang_printable_name_wls): Delete.
4173
4174 2004-08-16  Tom Tromey  <tromey@redhat.com>
4175
4176         PR java/8473:
4177         * parse.y (primary): Changed for initialized and uninitialized
4178         array creations.
4179         (array_access): Handle array_creation_initialized.
4180         (array_creation_expression): Split into
4181         array_creation_initialized and array_creation_uninitialized.
4182
4183 2004-08-16  Andrew Haley  <aph@redhat.com>
4184
4185         * jcf-write.c (find_constant_index): Canonicalize NaNs when
4186         generating bytecode.
4187
4188 2004-08-16  Elliot Lee <sopwith@redhat.com>
4189
4190         PR java/9677
4191         * jcf-parse.c (java_parse_file): Handle filenames with embedded
4192         spaces, and quoted filelists.
4193
4194 2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>
4195
4196         * boehm.c (get_boehm_type_descriptor): Use build_int_cst.
4197         * class.c (build_utf8_ref, build_static_field_ref,
4198         make_field_value, make_method_value, get_dispatch_table,
4199         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
4200         * constants.c (get_tag_node,  build_ref_from_constant_pool,
4201         build_constants_constructor): Likewise.
4202         * decl.c (java_init_decl_processing): Likewise.
4203         * expr.c (build_java_array_length_access, build_newarray,
4204         expand_java_multianewarray, expand_java_pushc, expand_iinc,
4205         build_java_binop, build_field_ref, expand_java_add_case,
4206         expand_java_call, build_known_method_ref, build_invokevirtual,
4207         build_invokeinterface, build_jni_stub): Likewise.
4208         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
4209         * jcf-parse.c (get_constant): Likewise.
4210         * lex.c (do_java_lex): Likewise.
4211         * parse.y (patch_binop, patch_unaryop, patch_cast,
4212         build_null_of_type, patch_newarray): Likewise.
4213         * resource.c (compile_resource_data): Likewise.
4214         * typeck.c (build_prim_array_type): Likewise.
4215
4216 2004-08-10  Bryce McKinlay  <mckinlay@redhat.com>
4217
4218         * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var.
4219         Don't create BLOCK here or call java_gimplify_block.
4220
4221 2004-08-09  H.J. Lu  <hongjiu.lu@intel.com>
4222
4223         * java-tree.h (flag_deprecated): Removed.
4224         * lang.opt (Wdeprecated): Use existing Var(warn_deprecated).
4225         * parse.y (check_deprecation): Check warn_deprecated instead of
4226         flag_deprecated.
4227
4228 2004-08-06  Kelley Cook  <kcook@gcc.gnu.org>
4229
4230         * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant,
4231         flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check,
4232         flag_hash_synchronization, flag_assert, flag_jni, flag_newer,
4233         flag_check_references, flag_extraneous_semicolon, flag_deprecated,
4234         flag_force_classes_archive_check, flag_optimize_sci,
4235         flag_indirect_dispatch): Remove explicit declarations.
4236         * lang.opt: Add implicit declare/define/assign.  Remove obsolete
4237         final comment.
4238
4239 2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>
4240
4241         PR bootstrap/14893
4242         * Make-lang.in (java.install-man): Install from either build
4243         tree or source tree, whichever has the file first.
4244
4245 2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>
4246
4247         * jcf-parse.c (get_constant): Adjust force_fit_type call.
4248         * lex.h (SET_LVAL_NODE_TYPE): Remove.
4249         * lex.c (java_perform_atof): Use SET_LVAL_NODE directly.
4250         (do_java_lex): Likewise. Adjust force_fit_type call.
4251
4252 2004-08-04  Roger Sayle  <roger@eyesopen.com>
4253             Andrew Haley  <aph@redhat.com>
4254
4255         * typeck.c (convert_ieee_real_to_integer): Call fold on the range
4256         checking trees as they're being built.
4257         (convert): Call convert_ieee_real_to_integer if we're
4258         converting a constant, even if we're writing a class file.
4259
4260 2004-08-02  Bryce McKinlay  <mckinlay@redhat.com>
4261
4262         PR java/16701
4263         * parse.y (fold_constant_for_init): Call resolve_field_access with
4264         correct current_class context.
4265
4266 2004-08-01  Roger Sayle  <roger@eyesopen.com>
4267
4268         * decl.c (update_aliases, initialize_local_variable): Replace calls
4269         to build with calls to buildN.
4270         * java-gimplify.c (java_gimplify_modify_expr): Likewise.
4271         * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise.
4272         * parse.h (BUILD_THROW): Likewise.
4273         * parse.y (switch_expression, synchronized_statement,
4274         catch_clause_parameter, array_creation_expression,
4275         conditional_expression, make_qualified_name,
4276         resolve_qualified_expression_name, patch_method_invocation,
4277         patch_invoke, build_method_invocation, build_new_invocation,
4278         build_assignment, patch_assignment, build_binop, patch_binop,
4279         build_string_concatenation, build_incdec, patch_unaryop,
4280         patch_cast, build_array_ref, build_newarray_node, patch_newarray,
4281         patch_return, build_if_else_statement, build_labeled_block,
4282         build_new_loop, build_loop_body, build_bc_statement,
4283         build_assertion, encapsulate_with_try_catch, build_try_statement,
4284         build_try_finally_statement, patch_synchronized_statement,
4285         emit_test_initialization): Likewise, replace build with buildN.
4286
4287 2004-07-28  Eric Christopher  <echristo@redhat.com>
4288
4289         * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
4290         (java_unsafe_for_reeval): Ditto.
4291
4292 2004-07-26    <hp@bitrange.com>
4293
4294         * parse.y (build_super_invocation): Adjust declaration order to
4295         avoid declaration after statement.
4296
4297 2004-07-25  Bernardo Innocenti  <bernie@develer.com>
4298
4299         * decl.c: Rename all identifiers named `class' to `cl'.
4300
4301 2004-07-25  Richard Henderson  <rth@redhat.com>
4302
4303         * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P.
4304
4305 2004-07-23  Mike Stump  <mrs@apple.com>
4306
4307         * boehm.c (set_bit): Improve type safety wrt unsignedness.
4308         * gjavah.c (throwable_p, decode_signature_piece,
4309         print_full_cxx_name, print_include, add_namelet, add_class_decl,
4310         process_file): Likewise.
4311         * jcf-dump.c (main): Likewise.
4312         * jcf-io.c (read_zip_member): Likewise.
4313         * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant,
4314         give_name_to_class, get_class_constant): Likewise.
4315         * jcf-write.c (find_constant_wide, push_long_const,
4316         generate_classfile): Likewise.
4317         * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise.
4318         * parse.y (read_import_dir): Likewise.
4319         * typeck.c (parse_signature_type): Likewise.
4320         * verify.c (verify_jvm_instructions): Likewise.
4321         * zextract.c (find_zip_file_start, read_zip_archive): Likewise.
4322
4323 2004-07-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
4324
4325         * Make-lang.in: Replace rmic and rmiregistry references with
4326         grmic and grmiregistry.
4327         * gcj.texi: Likewise.
4328
4329 2004-07-20  Andrew Haley  <aph@redhat.com>
4330
4331         PR java/16431.
4332         * verify.c (verify_jvm_instructions): Comment change only.
4333
4334         * typeck.c (build_java_array_type): Add size field to array name.
4335
4336         * java-tree.h (LOCAL_SLOT_P): New.
4337         (update_aliases): Add PC argument.
4338         (pushdecl_function_level): New function.
4339
4340         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
4341         MODIFY_EXPR, and SAVE_EXPR.
4342         (java_gimplify_modify_expr): New function.
4343
4344         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
4345         (expand_iinc): Pass PC to update_aliases().
4346         (STORE_INTERNAL): Likewise.
4347         (process_jvm_instruction): Likewise.
4348
4349         * decl.c (base_decl_map): New variable.
4350         (uniq): New variable.
4351         (update_aliases): Rewrite with more thorough checking.
4352         (debug_variable_p): New function.
4353         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
4354         (check_local_named_variable): Delete whole function.
4355         (initialize_local_variable): New function.
4356         (check_local_unnamed_variable): Add checks and comments.
4357         (find_local_variable): Rewrite.
4358         (java_replace_reference): New function.
4359         (function_binding_level): New variable.
4360         (pushdecl_function_level): New function.
4361         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
4362         (maybe_pushlevels): Call pushdecl() on each of the new decls.
4363         (start_java_method): Reset uniq.  Create base_decl_map.  Set
4364         function_binding_level.
4365         (end_java_method): Null unused fields to save memory.
4366
4367 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
4368
4369         * class.c (add_interface_do): Remove.
4370         (set_super_info, interface_of_p, maybe_add_interface,
4371         add_interface, make_class_data, layout_class,
4372         add_miranda_methods): Adjust BINFO accessors and addition.
4373         * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO
4374         accessors.
4375         * jcf-write.c (generate_classfile): Likewise.
4376         * parse.y (patch_anonymous_class, check_inner_circular_reference,
4377         check_circular_reference, java_complete_class,
4378         check_abstract_method_definitions,
4379         java_check_abstract_method_definitions,
4380         check_interface_throws_clauses, java_check_abstract_methods,
4381         lookup_java_interface_method2,
4382         find_applicable_accessible_methods_list): Adjust BINFO accessors
4383         and addition.
4384         * typeck.c (find_method_in_interfaces): Adjust BINFO accessors.
4385
4386 2004-07-18  Roger Sayle  <roger@eyesopen.com>
4387
4388         * builtins.c (max_builtin, min_builtin,
4389         java_build_function_call_expr): Replace calls to build with buildN.
4390         * class.c (build_class_ref, build_static_field_ref,
4391         get_dispatch_table, make_class_data, layout_class_method): Likewise.
4392         * constants.c (build_ref_from_constant_pool): Likewise.
4393         * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method,
4394         add_stmt_to_compound): Likewise.
4395         * except.c (build_exception_object_ref, expand_end_java_handler):
4396         Likewise.
4397         * java-gimplify.c (java_gimplify_case_expr,
4398         java_gimplify_default_expr, java_gimplify_block,
4399         java_gimplify_new_array_init, java_gimplify_try_expr): Likewise.
4400         * jcf-write.c (generate_bytecode_insns): Likewise.
4401         * typeck.c (convert_ieee_real_to_integer): Likewise.
4402
4403 2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>
4404
4405         * java-tree.h (builtin_function): Declare.
4406
4407 2004-07-16  Steven Bosscher  <stevenb@suse.de>
4408
4409         * parse.y (java_complete_expand_methods, java_expand_classes): Don't
4410         abuse restore_line_number_status.
4411
4412 2004-07-15  Frank Ch. Eigler  <fche@redhat.com>
4413
4414         g++/15861
4415         * jcf-parse.c (java_emit_static_constructor): Specify default
4416         priority.
4417
4418 2004-07-13  Per Bothner  <per@bothner.com>
4419
4420         * java-tree.h (all_class_filename):  Remove useless macro.
4421         (enum java_tree_index):  Remove JTI_ALL_CLASS_FILENAME constant.
4422         (BUILD_FILENAME_IDENTIFIER_NODE):  Remove useless macro.
4423         * parse.y (java_parser_context_restore_global):  Replace
4424         BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier.
4425         * jcf-parse.c (read_class, java_parse_file):  Likewise.
4426
4427 2004-07-12  Bryce McKinlay  <mckinlay@redhat.com>
4428
4429         PR java/16474
4430         gjavah.c (print_field_info): Emit constant only if field is static.
4431
4432 2004-07-11  Roger Sayle  <roger@eyesopen.com>
4433
4434         * expr.c (java_truthvalue_conversion, flush_quick_stack,
4435         java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr,
4436         build_java_ret, build_java_throw_out_of_bounds_exception,
4437         build_java_array_length_access, java_check_reference,
4438         build_java_arrayaccess, build_java_arraystore_check, build_newarray,
4439         build_anewarray, expand_java_multianewarray, expand_java_arraystore,
4440         expand_java_arrayload, build_java_monitor, expand_java_return,
4441         expand_load_internal, expand_java_NEW, build_get_class,
4442         build_instanceof, expand_java_CHECKCAST, expand_iinc,
4443         build_java_soft_divmod, build_java_binop, build_field_ref,
4444         expand_compare, expand_java_goto, expand_java_switch,
4445         expand_java_add_case, build_class_init, build_known_method_ref,
4446         invoke_build_dtable, build_invokevirtual, build_invokeinterface,
4447         expand_invoke, build_jni_stub, expand_java_field_op,
4448         java_expand_expr, expand_byte_code, STORE_INTERNAL,
4449         force_evaluation_order, emit_init_test_initialization): Convert
4450         calls to "build" into calls to the prefered "buildN" functions.
4451
4452 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
4453
4454         * java-tree.h (set_block): Remove.
4455         * lang.c (java_clear_binding_stack): New.
4456         (LANG_HOOKS_CLEAR_BINDING_STACK): Define.
4457         * decl.c (struct binding_level): Remove this_block.
4458         (clear_binding_level): Likewise.
4459         (poplevel): Don't handle this_block.
4460         (set_block): Remove.
4461
4462 2004-07-10  Bryce McKinlay  <mckinlay@redhat.com>
4463
4464         * class.c (common_enclosing_context_p): Remove statement with no
4465         side-effects.
4466
4467 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
4468
4469         PR java/8618
4470         * parse.y (create_anonymous_class): Remove 'location' argument. Use
4471         the WFL from TYPE_NAME to get line number for the decl. Fix comment.
4472         (craft_constructor): Inherit access flags for implicit constructor
4473         from the enclosing class.
4474         (create_class): Fix comment typo.
4475         (resolve_qualified_expression_name): Pass type of qualifier to
4476         not_accessible_p, not the type in which target field was found.
4477         (not_accessible_p): Handle inner classes. Expand protected
4478         qualifier-subtype check to enclosing instances, but don't apply this
4479         check to static members. Allow protected access to inner classes
4480         of a subtype. Allow private access within common enclosing context.
4481         (build_super_invocation): Get WFL line number info from current
4482         class decl.
4483         (build_incomplete_class_ref): Update for new create_anonymous_class
4484         signature.
4485         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use
4486         common_enclosing_instance_p.
4487         * class.c (common_enclosing_context_p): New. Determine if types
4488         share a common enclosing context, even across static contexts.
4489         (common_enclosing_instance_p): Renamed from
4490         common_enclosing_context_p. Determines if types share a common
4491         non-static enclosing instance.
4492         * java-tree.h (common_enclosing_instance_p): Declare.
4493         * jcf-write.c (get_method_access_flags): New. Surpress private flag
4494         for inner class constructors.
4495         (generate_classfile): Use get_method_access_flags.
4496
4497 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
4498
4499         * class.c (interface_of_p): Check for null TYPE_BINFO.
4500
4501 2004-07-09  Nathan Sidwell  <nathan@codesourcery.com>
4502
4503         * class.c (make_class): Do not create binfo here.
4504         (set_super_info): Create it here.
4505         * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo.
4506
4507 2004-07-08  Richard Henderson  <rth@redhat.com>
4508
4509         * expr.c (case_identity, get_primitive_array_vtable,
4510         java_expand_expr, emit_init_test_initialization): Remove.
4511         * java-tree.h (java_expand_expr): Remove.
4512         * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove.
4513
4514 2004-07-07  Per Bothner  <per@bothner.com>
4515
4516         * class.c (build_static_field_ref):  Add a NOP_EXPR; otherwise we
4517         get internal error due to mismatched types.
4518
4519         * gcj.texi (Invoking gij):  Document new -verbose:class flag.
4520
4521         * gcj.texi (Linking):   New node.  Document -lgij usage.
4522
4523 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
4524
4525         * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
4526         (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise.
4527         * java/class.c (set_super_info, class_depth, interface_of_p,
4528         maybe_add_interface, add_interface, make_class_data,
4529         layout_class, add_miranda_methods): Adjust BINFO macros.
4530         * expr.c (can_widen_reference_to, lookup_field): Likewise.
4531         * jcf-write.c (generate_classfile): Likewise.
4532         * parse.y (patch_anonymous_class,
4533         check_inner_circular_reference, check_circular_reference,
4534         java_complete_class, check_abstract_method_definitions,
4535         java_check_abstract_method_definitions,
4536         check_interface_throws_clauses, java_check_abstract_methods,
4537         lookup_java_interface_method2,
4538         find_applicable_accessible_methods_list): Likewise.
4539         * typeck.c (find_method_in_interface): Likewise.
4540         * verify.c (merge_types): Likewise.
4541
4542 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
4543
4544         * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1.
4545         * class.c (add_interface_do): Use BINFO_VIRTUAL_P.
4546
4547 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
4548
4549         * class.c (make_class): Use make_tree_binfo.
4550         (set_super_info, add_interface_do): Likewise.
4551         * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO.
4552
4553 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
4554
4555         * verify.c: Correct array element access formatting thinko.
4556
4557 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
4558
4559         * verify.c: Insert a short blurb at the start referring to the JVMS.
4560         (merge_type_state): Remove redundant nested if statement.
4561         (verify_jvm_instructions): Ensure current_subr is initialised to
4562         NULL_TREE.
4563         Minor formatting fixes all over the place.
4564
4565 2004-07-02  Richard Henderson  <rth@redhat.com>
4566
4567         * jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.
4568
4569 2004-07-01  Richard Henderson  <rth@redhat.com>
4570
4571         * class.c (registerClass_libfunc): Remove.
4572         (init_class_processing): Don't set it.
4573         (emit_register_classes): Take list_p parameter.  Fill it in
4574         with _Jv_RegisterClass calls.
4575         * decl.c (java_init_decl_processing): Don't call
4576         init_resource_processing.
4577         * jcf-parse.c (java_emit_static_constructor): New.
4578         (java_parse_file): Call it.
4579         * resource.c (registerResource_libfunc): Remove.
4580         (init_resource_processing): Remove.
4581         (write_resource_constructor): Take list_p parameter.  Fill it in
4582         with _Jv_RegisterResource calls.
4583         * java-tree.h: Update prototypes.
4584
4585 2004-06-29  Bryce McKinlay  <mckinlay@redhat.com>
4586
4587         PR java/1262
4588         * class.c (layout_class_method): Do not override package-private
4589         method if its in a different package.
4590         (split_qualified_name): Move here from parse.y. Rename from
4591         breakdown_qualified. Add comment.
4592         (in_same_package): Move here from parse.y. Add comment.
4593         * java-tree.h (break_down_qualified, in_same_package): Declare.
4594         (in_same_package): Likewise.
4595         * parse.y (breakdown_qualified, in_same_package): Moved to class.c.
4596         Callers updated.
4597
4598 2004-06-29  Andrew Haley  <aph@redhat.com>
4599
4600         * except.c (expand_start_java_handler): Push a new binding level.
4601         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
4602         register_exception_range() to register where we'll do it.
4603         (expand_end_java_handler): Remove old bogus code.  Replace with
4604         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
4605         the top of the expression we're curently building.
4606         (maybe_end_try): Delete.
4607         * decl.c (binding_level.exception_range): New field.
4608         (clear_binding_level): Add field exception_range.  Reformat.
4609         (poplevel): Call expand_end_java_handler().
4610         (poplevel): Call java_add_stmt only if functionbody is false.
4611         (maybe_poplevels): Don't call maybe_end_try() from here.
4612         (end_java_method): Clear no longer used trees in function decl.
4613         (register_exception_range): New function.
4614         * java-tree.h (register_exception_range, struct eh_range): Declare.
4615
4616 2004-06-28  Bryce McKinlay  <mckinlay@redhat.com>
4617
4618         * jcf-write.c (get_classfile_modifiers): Formatting fixes.
4619
4620 2004-06-27  Ranjit Mathew  <rmathew@hotmail.com>
4621
4622         Formatting fixes.
4623         * expr.c (class_has_finalize_method): Fix method name indentation.
4624         (expand_java_call): Remove K&R style parameter declaration.
4625         (expand_invoke): Fix statement indentation.
4626         (expand_java_field_op): Likewise.
4627         * parse-scan.y: Fix typo.
4628         (reset_report): Fix method name indentation.
4629         * parse.y (unresolved_type_p, build_expr_block): Remove extra blank
4630         line. Fix typos.
4631         * verify.c (verify_jvm_instructions): Document parameters, insert
4632         page break.
4633         * lang.c (lang_init_source): Fix method name indentation.
4634         * class.c (common_enclosing_context_p): Likewise.
4635         (emit_symbol_table): Fix parameter list indentation.
4636         * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style
4637         parameter declaration.
4638         * constants.c: Fix copyright notice indentation.
4639         * typeck.c (find_method_in_superclasses): Fix parameter list
4640         indentation.
4641         (find_method_in_interfaces): Likewise.
4642         * zextract.c (makelong): Fix method name indentation.
4643
4644 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4645
4646         PR java/15715.
4647         * parse.y (create_interface): Set correct access modifiers for
4648         interfaces.
4649         * jcf-write.c (get_classfile_modifiers): New function.
4650         (generate_classfile): Use get_classfile_modifiers, not
4651         get_access_flags.
4652
4653 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4654
4655         * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super"
4656         dependency to current parser context, not NULL_TREE, for top-level
4657         classes.
4658         (jdep_resolve_class): Enable member access check for all inner
4659         class dependencies.
4660
4661 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4662
4663         * parse.y (qualify_and_find): Pass type decl, not identifier, to
4664         load_class.
4665
4666 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4667
4668         PR java/15734
4669         * expr.c (expand_java_field_op): Ensure that target class for static
4670         field access has been loaded.
4671
4672 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4673             Ranjit Mathew  <rmathew@hotmail.com>
4674
4675         PR java/1207, java/16178
4676         * jcf-parse.c (load_class): Return immediately if passed a type decl
4677         where CLASS_FROM_SOURCE_P is set. Remove FIXME.
4678         * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P
4679         before calling load_class.
4680         (qualify_and_find): Likewise.
4681         (find_in_imports_on_demand): Likewise.
4682         (find_applicable_accessible_methods_list): Likewise.
4683
4684 2004-06-24  Bryce McKinlay  <mckinlay@redhat.com>
4685
4686         * parse.y (java_layout_seen_class_methods): Don't call load_class
4687         on class defined by source parser.
4688
4689 2004-06-23  Bryce McKinlay  <mckinlay@redhat.com>
4690
4691         * parse.y (set_nested_class_simple_name_value): Removed.
4692         (java_complete_expand_class): Remove calls to
4693         set_nested_class_simple_name_value.
4694
4695 2004-06-22  Andrew Haley  <aph@redhat.com>
4696             Ranjit Mathew  <rmathew@hotmail.com>
4697
4698         Fixes PR java/16113.
4699         * decl.c (force_poplevels): Remove call to expand_end_bindings.
4700
4701 2004-06-22  Ranjit Mathew  <rmathew@hotmail.com>
4702
4703         * parse.y (create_class): Correct diagnostic message about
4704         java.lang.Object extending anything else.
4705
4706 2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4707
4708         * class.c (build_class_ref): Add new operand for COMPONENT_REF.
4709         (build_static_field_ref): Likewise and add new operands for ARRAY_REF.
4710         * constants.c (build_ref_from_constant_pool): Likewise.
4711         * expr.c (build_java_array_length_access): Likewise.
4712         (build_get_class, build_field_ref, build_known_method_ref): Likewise.
4713         (invoke_build_dtable, build_invokevirtual): Likewise.
4714         (build_invokeinterface, java_expand_expr): Likewise.
4715         (emit_init_test_initialization): Likewise.
4716         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
4717         * parse.y (make_qualifed_name, build_array_ref): Likewise.
4718
4719 2004-06-21  Andrew Haley  <aph@redhat.com>
4720
4721         * java-gimplify.c (java_gimplify_block): set TREE_USED on the new
4722         block.
4723
4724 2004-06-21  Joseph S. Myers  <jsm@polyomino.org.uk>
4725
4726         * jcf.h (struct JCF): Change java_source, right_zip and finished
4727         to unsigned int.
4728         * lex.h (struct java_lexer): Change hit_eof, read_anything,
4729         byte_swap and use_fallback to unsigned int.
4730         * parse.h (struct _jdep): Change flag0 to unsigned int.
4731
4732 2004-06-17  Ranjit Mathew  <rmathew@hotmail.com>
4733
4734         Fixes PR java/13948
4735         * parse.y (java_layout_seen_class_methods): Ensure class is loaded
4736         before trying to lay out its methods.
4737         * jcf-parse.c (read_class): Track parsed files using canonical paths
4738         obtained via lrealpath from libiberty.
4739         (java_parse_file): Likewise.
4740         (parse_source_file_1): Rename formal parameter to reflect its
4741         modified purpose. Minor formatting fix.
4742
4743 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
4744
4745         * class.c (emit_register_classes): Make the function uninlinable,
4746         do not set current_function_cannot_inline.
4747         * resource.c (write_resource_constructor): Do not reset
4748         flag_inline_functions around rest_of_compilation.
4749
4750 2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>
4751
4752         PR java/15769
4753         * expr.c (java_truthvalue_conversion): Handle
4754         UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
4755         ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
4756         i.e. return the expression.
4757
4758 2004-06-03 Mark G. Adams  <mark.g.adams@sympatico.ca>
4759
4760         * gjavah.c: Include version.h
4761
4762 2004-05-31  Bryce McKinlay  <mckinlay@redhat.com>
4763
4764         * jcf-write.c (generate_bytecode_conditional): Correct handling
4765         of unordered conditionals. Add comment.
4766
4767 2004-05-29  Ranjit Mathew  <rmathew@hotmail.com>
4768             Per Bothner  <per@bothner.com>
4769
4770         * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a
4771         local variable was initialised upon declaration.
4772         * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if
4773         variable was final and initialised upon declaration.
4774         * check-init.c (check_final_reassigned): Give error only if a blank
4775         final is not definitely unassigned or if an initialised final is
4776         reassigned.
4777         (check_bool_init): Respect JLS2 16.1.7 requirements for boolean
4778         assignment expressions. Remove case MODIFY_EXPR, label do_default.
4779         (check_init): Perform initialised-variable-removing-optimisation
4780         only on non-final local variables.
4781
4782 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
4783
4784         * jcf-write.c (generate_bytecode_conditional): Handle binops
4785         UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR,
4786         and LTGT_EXPR.
4787         (generate_bytecode_insns): Likewise.
4788
4789 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
4790
4791         * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR,
4792         UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR.
4793
4794 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
4795
4796         * gcj.texi (Object allocation): Remove _Jv_AllocBytes.
4797         (Mixing with C++): Document JvAllocBytes and RawDataManaged.
4798
4799 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
4800
4801         * decl.c (struct binding_level): Add GTY marker. Compile
4802         binding_depth unconditionally.
4803         (current_binding_level, free_binding_level, global_binding_level):
4804         Likewise.
4805         (clear_binding_level): Unconditionally set binding_depth.
4806         (make_binding_level): Use ggc_alloc_cleared, not xmalloc.
4807
4808 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
4809
4810         * lex.c (java_new_lexer): Set 'encoding'.
4811         (java_read_char): Improve error message for unrecognized characters.
4812         * lex.h (struct java_lexer): New field 'encoding'.
4813
4814 2004-05-23  Paolo Bonzini  <bonzini@gnu.org>
4815
4816         * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o.
4817
4818 2004-05-21  Mark Wielaard  <mark@klomp.org>
4819
4820         * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not
4821         extern.
4822
4823 2004-05-19  Paolo Bonzini  <bonzini@gnu.org>
4824
4825         * typeck.c: Remove non-printable character 160.
4826
4827 2004-05-17  Ranjit Mathew  <rmathew@hotmail.com>
4828
4829         * check-init.c: Correct minor typos.
4830
4831 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
4832
4833         * Make-lang.in, expr.c, java-gimplify.c: Rename
4834         tree-simple.[ch] to tree-gimple.[ch].
4835
4836 2004-05-14  Ranjit Mathew  <rmathew@hotmail.com>
4837
4838         * java-gimplify.c (java_gimplify_expr): Correct minor typos.
4839
4840 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
4841
4842         Merge from tree-ssa-20020619-branch.  See
4843         ChangeLog.tree-ssa for details.
4844
4845         * Make-lang.in, builtins.c, check-init.c, class.c,
4846         constants.c, decl.c, except.c, expr.c, java-except.h,
4847         java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c,
4848         lang.c, lang.opt, parse.y, resource.c: Merged.
4849         * java-gimplify.c: New file.
4850
4851 2004-05-10  Andrew Haley  <aph@redhat.com>
4852
4853         * parse.y (create_class): Set TYPE_VFIELD.
4854         * decl.c (java_init_decl_processing): Likewise.
4855
4856         * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment.
4857         * class.c (make_method_value): Replace DECL_VINDEX with call to
4858         get_method_index().
4859         (get_dispatch_vector): Likewise.
4860         (layout_class_method): Likewise.
4861         Replace set of DECL_VINDEX with call to set_method_index().
4862         (set_method_index): New function.
4863         (get_method_index): New function.
4864         * java-tree.h (set_method_index): New function decl.
4865         (get_method_index): New function decl.
4866
4867 2004-05-10  Andrew Pinski  <pinskia@physics.uc.edu>
4868
4869         * parse.y (check_pkg_class_access): Add new argument
4870         and use it when cl is NULL to call lookup_cl on it.
4871         (parser_check_super_interface): Do not call lookup_cl.
4872         Pass this_decl to check_pkg_class_access and NULL
4873         instead of lookup_cl.
4874         (parser_check_super): Update for change in
4875         check_pkg_class_access.
4876         (do_resolve_class): Likewise.
4877         (process_imports): Likewise.
4878         (find_in_imports_on_demand): Likewise.
4879         (resolve_qualified_expression_name): Likewise.
4880
4881 2004-05-06  Ranjit Mathew  <rmathew@hotmail.com>
4882
4883         Fixes PR java/9685, PR java/15073
4884         * parse.y (accessibility_string): New method.
4885         (not_accessible_field_error): Use accessibility_string()
4886         instead of java_accstring_lookup().
4887         (resolve_qualified_expression_name): Check with
4888         check_pkg_class_access() before allowing access using
4889         qualified names.
4890         Fix comment typo.
4891         Use check_pkg_class_access() instead of not_accessible_p()
4892         for unqualified types.
4893         (not_accessible_p): Use DECL_CONTEXT (member) instead of
4894         REFERENCE for package-private access checking.
4895         (patch_method_invocation): Use accessibility_string() instead
4896         of java_accstring_lookup().
4897
4898 2004-04-30  Ranjit Mathew  <rmathew@hotmail.com>
4899
4900         Fixes PR java/15133
4901         * gjavah.c (struct method_name): Add member is_native.
4902         (overloaded_jni_method_exists_p): Match candidate method only if
4903         it is native.
4904         (print_method_info): Initialise is_native flag from the method's
4905         access flags.
4906
4907 2004-04-30  Roger Sayle  <roger@eyesopen.com>
4908
4909         * builtins.c (java_builtins): Add acos, asin, ceil and floor.
4910         (initialize_builtins): Likewise, define acos, asin, ceil and floor.
4911
4912 2004-04-22  Roger Sayle  <roger@eyesopen.com>
4913
4914         * resource.c (write_resource_constructor): Guard call to possibly
4915         NULL targetm.asm_out.constructor with targetm.have_ctors_dtors.
4916
4917 2004-04-19  Bryce McKinlay  <mckinlay@redhat.com>
4918
4919         * class.c (make_class_data): Add new field aux_info.
4920         * decl.c (java_init_decl_processing): Push type and decl for
4921         `aux_info'.
4922
4923 2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>
4924
4925         * expr.c (expand_java_NEW): Don't use size argument for
4926         _Jv_AllocObject calls.
4927         * parse.y (patch_invoke): Likewise.
4928
4929 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
4930
4931         * expr.c (build_invokeinterface): Remove unused variables to
4932         fix warnings.
4933
4934 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
4935
4936         * class.c (get_interface_method_index): New function. Return dispatch
4937         index for interface method.
4938         (make_method_value): For interface methods, set index field to
4939         iface dispatch index, not DECL_VINDEX.
4940         * expr.c (build_invokeinterface): Use get_interface_method_index.
4941
4942 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4943
4944         * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.
4945
4946 2004-03-31  Andrew Haley  <aph@redhat.com>
4947
4948         PR java/14104
4949         * jcf-io.c (opendir_in_zip): Tidy up error handling.
4950
4951 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
4952
4953         * builtins.c, expr.c, jcf.h, parse.h: Use new shorter
4954         form of GTY markers.
4955
4956 2004-03-25  Marcus Meissner  <meissner@suse.de>
4957
4958         PR java/14689:
4959         * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir.
4960
4961 2004-03-23  Tom Tromey  <tromey@redhat.com>
4962
4963         PR java/14315:
4964         * jcf-write.c (make_class_file_name): Don't report if mkdir
4965         failed with EEXIST.
4966
4967 2004-03-23  Tom Tromey  <tromey@redhat.com>
4968
4969         * gcj.texi (Extensions): Document GCJ_PROPERTIES.
4970
4971 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
4972
4973         * class.c, gjavah.c, lang.c: Fix comment typos.
4974         * gcj.texi: Fix typos.
4975
4976 2004-03-19  Per Bothner  <per@bothner.com>
4977
4978         * gcj.texi (Code Generation):  Document new flags and assert defaults.
4979
4980         * class.c (assume_compiled_node_struct):  Rename type to
4981         class_flag_node_struct, as it is now also used for enable_assertions.
4982         Rename assume_compiled_node typedef.  Rename excludep field to value.
4983         (find_assume_compiled_node):  Rename function to find_class_flag_node.
4984         Minor optimization - avoid needless strlen.
4985         (add_assume_compiled):  Some tweaking and optimization.
4986         Rename and generalize to add_class_flag takem an extra parameter.
4987         (add_assume_compled):  New just calls add_class_flag.
4988         (add_enable_assert, enable_assertions):  New functions.
4989         (enable_assert_tree):  New static.
4990         * java-tree.h (add_enable_assert, enable_assertions): New declarations.
4991         * lang.opt (fenable-assertions, fenable-assertions=,
4992         fdisable-assertions, fdisable-assertions=):  New options.
4993         * lang.c (java_handle_option):  Handle new options.
4994         * parse.y (build_incomplete_class_ref):  Handle class$ in an inner
4995         class in an interface - create helper class nested in outer interface.
4996         (build_assertion):  Short-circuit if enable_assertions is false.
4997
4998 2004-03-18  Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4999
5000         * java-tree.h: Changes throughout to add checking to macros
5001         and numerous whitespace changes.
5002         (VAR_OR_FIELD_CHECK): New macro.
5003         * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC,
5004         FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL.
5005
5006 2004-03-16  Per Bothner  <per@bothner.com>
5007
5008         * jcf-jump.c (options):  New --print-constants option.
5009         * gcj.texi (Invoking jcf-dump):  Document --print-constants.
5010
5011         * jcf-dump.c (flag_print_constant_pool):  Default to off.
5012         (print_constant_terse_with_index):  New helper function.
5013         (various places):  Check flag_print_constant_pool where missing.
5014         (main):  If verbose set flag_print_constant_pool.
5015         (HANDLE_INNERCLASSES_ATTRIBUTE):  Null inner class name is anonymous.
5016
5017 2004-03-15  Andrew Haley  <aph@redhat.com>
5018
5019         PR java/14581
5020         * parse.y (java_complete_lhs): Check that final variable has an
5021         initializer.
5022
5023 2004-03-12  Andrew Haley  <aph@redhat.com>
5024
5025         PR java/14551
5026         * typeck.c (convert): Clear TREE_OVERFLOW after an integer
5027         conversion.
5028
5029 2004-02-29  Roger Sayle  <roger@eyesopen.com>
5030
5031         * jcf-parse.c (java_parse_file): Handle the case that input_filename
5032         is NULL.
5033
5034 2004-02-27  Per Bothner  <per@bothner.com>
5035
5036         * parse.y (build_assertion):  Re-do 02-25 change following Jeff Sturm
5037         suggestion:  Use build_incomplete_class_ref.
5038         This fixes PR java/13508, java/11714.
5039
5040 2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
5041
5042         * java/parse.h: Update copyright.
5043
5044 2004-02-26  Andrew Haley  <aph@redhat.com>
5045
5046         PR java/14231:
5047         * parse.y (check_interface_throws_clauses): Check for
5048         !METHOD_INVISIBLE (iface_method).
5049         * class.c (layout_class_methods): Check for CLASS_INTERFACE as
5050         well as CLASS_ABSTRACT.
5051
5052 2004-02-25  Per Bothner  <per@bothner.com>
5053
5054         * parse.y (build_assertion):  If we're in an inner class, create the
5055         class$ helper routine in the outer class.
5056
5057 2004-02-19  Richard Henderson  <rth@redhat.com>
5058
5059         * parse.y (switch_label): Use make_node for DEFAULT_EXPR.
5060
5061 2004-02-16  Geoffrey Keating  <geoffk@apple.com>
5062
5063         * Make-lang.in (java.install-man): Add extra dependencies.
5064
5065 2004-02-13  Geoffrey Keating  <geoffk@apple.com>
5066
5067         * Make-lang.in: Install man pages under the same names
5068         (possibly transformed) as the program they document.
5069
5070 2004-02-10  Joseph S. Myers  <jsm@polyomino.org.uk>
5071
5072         * gjavah.c: Include "intl.h".
5073         (error): New function.
5074         (main): Call gcc_init_libintl.
5075         (get_field_name, throwable_p, print_c_decl, print_full_cxx_name,
5076         print_stub_or_jni, process_file, main): Use error rather than
5077         fprintf.
5078         (print_method_info, usage, help, version, main): Mark strings for
5079         translation with _.  Avoid splitting up sentences.  Send
5080         information messages to stdout.
5081         * jcf-dump.c: Include "intl.h".
5082         (main): Call gcc_init_libintl.
5083         (process_class, usage, help, version, main, CHECK_PC_IN_RANGE):
5084         Mark error, usage and version messages for translation with _.
5085         Avoid splitting up sentences.
5086         * jv-scan.c: Include "intl.h".
5087         (fatal_error, warning): Change parameter s to msgid.  Translate
5088         messages.
5089         (main): Call gcc_init_libintl.
5090         (usage, help, version): Mark error, usage and version messages for
5091         translation with _.  Avoid splitting up sentences.
5092         * jvgenmain.c: Include "intl.h".
5093         (main): Call gcc_init_libintl.
5094         (usage, main): Mark error messages for translation with _.
5095         * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS,
5096         JVGENMAIN_OBJS): Add intl.o.
5097         (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o,
5098         java/jvgenmain.o): Update dependencies.
5099
5100 2004-02-08  Per Bothner  <per@bothner.com>
5101
5102         * parse.y (resolve_qualified_expression_name):  In case of inaccessible
5103         class don't use not_accessible_field_error, which can get confused.
5104
5105 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
5106
5107         Make-lang.in (po-generated):  Delete.
5108
5109 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
5110
5111         * Make-lang.in (java/decl.o, java/expr.o, java/parse.o):
5112         Depend on target.h.
5113         * decl.c: Include target.h.
5114         (start_java_method): Replace PROMOTE_PROTOTYPES with
5115         targetm.calls.promote_prototypes.
5116         * expr.c: Include target.h.
5117         (pop_arguments): Replace PROMOTE_PROTOTYPES with
5118         targetm.calls.promote_prototypes.
5119         * parse.y: Include target.h.
5120         (start_complete_expand_method): Replace PROMOTE_PROTOTYPES
5121         with targetm.calls.promote_prototypes.
5122
5123 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
5124
5125         * typeck.c: Update copyright.
5126
5127 2004-02-02  Tom Tromey  <tromey@redhat.com>
5128
5129         * decl.c (java_init_decl_processing): Remove duplicate
5130         gnu/gcj/RawData.
5131
5132 2004-01-30  Kelley Cook  <kcook@gcc.gnu.org>
5133
5134         * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir).
5135
5136 2004-01-28  Andrew Pinski  <pinskia@physics.uc.edu>
5137
5138         * expr.c (build_field_ref): Move variable
5139         definition up.
5140
5141 2004-01-28  Andrew Haley  <aph@redhat.com>
5142
5143         * expr.c (build_field_ref): Widen field offset.
5144
5145 2004-01-27  Andrew Haley  <aph@redhat.com>
5146
5147         java/13273
5148         * parse.y (check_interface_throws_clauses): Make sure class_decl
5149         has been loaded.
5150
5151 2004-01-22  Jeff Sturm  <jsturm@one-point.com>
5152
5153         PR java/13733
5154         * parse.y (patch_assignment): Don't modify lhs_type for
5155         reference assignments.
5156
5157 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
5158
5159         * Make-lang.in: Replace $(docdir) with doc.
5160         (java.info, java.srcinfo, java.man, java.srcman): New rules.
5161         (java.install-man): Revamp rule.
5162
5163 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
5164
5165         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME,
5166         GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell)
5167         instead of deferred backquote.
5168
5169 2004-01-16  Andrew Pinski  <pinskia@physics.uc.edu>
5170
5171         * typeck.c (find_method_in_interfaces): Move variable
5172         definition up.
5173
5174 2004-01-16  Andrew Haley  <aph@redhat.com>
5175
5176         PR java/13273:
5177         * typeck.c (shallow_find_method): New.
5178         (find_method_in_superclasses): New.
5179         (find_method_in_interfaces): New.
5180         (lookup_do): Rewrite.
5181         * java-tree.h (SEARCH_ONLY_INTERFACE): Delete.
5182
5183         * jcf-parse.c (read_class): Save and restore output_class.
5184         * decl.c (java_expand_body): Set output_class from fndecl.
5185
5186 2004-01-15  Michael Chastain  <mec.gnu@mindspring.com>
5187
5188         * class.c (gen_indirect_dispatch_tables): Fix string length
5189         calculations.
5190
5191 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
5192
5193         * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory.
5194         (java.srcextra): Copy above back to source directory if requested.
5195         (po-generated): Delete reference to $(parsedir).
5196         (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir).
5197         Use implicit rule.
5198
5199 2004-01-14  Jan Hubicka  <jh@suse.cz>
5200
5201         * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
5202         estimation.
5203
5204 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
5205
5206         * java-tree.h (java_expand_expr): Change prototype.
5207         * expr.c (java_expand_expr): Add alt_rtl parameter.
5208
5209 2004-01-09  Andrew Haley  <aph@redhat.com>
5210
5211         PR java/12755:
5212         * parse.y (java_fix_constructors):  Set output_class.
5213         (java_reorder_fields): Likewise.
5214         (java_layout_classes): Likewise.
5215         (java_expand_classes): Generate indirect dispatch tables.
5216         (java_expand_classes): Set output_class.
5217         (java_finish_classes): Likewise.
5218         * lang.c (java_init): Turn on always_initialize_class_p if we're
5219         using indirect dis[atch.
5220         (java_decl_ok_for_sibcall): Use output_class, not current_class.
5221         (java_get_callee_fndecl): Use class local atable.
5222         * jcf-parse.c
5223         (always_initialize_class_p): Decl moved to java-tree.h.
5224         (HANDLE_CLASS_INFO): Set output_class.
5225         (read_class): Likewise.
5226         (parse_class_file): Call gen_indirect_dispatch_tables.
5227         (parse_zip_file_entries): Set output_class.
5228         (java_parse_file): Set output_class.  Don't emit symbol tables.
5229         * java-tree.h (output_class): New.
5230         Remove global declarations for otable, atable, and ctable.
5231         (always_initialize_class_p): moved here from decl.c.
5232         (DECL_OWNER): New.
5233         (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL,
5234         TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL,
5235         TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New.
5236         (struct lang_type): Add otable_methods, otable_decl,
5237         otable_syms_decl, atable_methods, atable_decl, atable_syms_decl,
5238         ctable_decl, catch_classes, type_to_runtime_map.
5239         * expr.c (build_field_ref): Make otable, atable, and ctable class
5240         local rather than global.
5241         (build_known_method_ref): Likewise.
5242         (build_invokeinterface): Likewise.
5243         (java_expand_expr): Pass runtime type (rather than actual type) to
5244         expand_start_catch.
5245         * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for
5246         this class.  Look up each class in that map to delete duplicates.
5247         (expand_end_java_handler): Pass runtime type (rather than actual
5248         type) to expand_start_catch.
5249         * decl.c: (always_initialize_class_p): Decl moved to java-tree.h.
5250         (do_nothing): New.
5251         (java_init_decl_processing): Rearrange things.  Remove global
5252         declarations of otable, atable, and ctable.
5253         (java_init_decl_processing): Make lang_eh_runtime_type do_nothing.
5254         (java_expand_body): Set output_class.
5255         * constants.c (build_constant_data_ref): Use output_class, not
5256         current_class.
5257         (alloc_name_constant): Likewise.
5258         * class.c (gen_indirect_dispatch_tables): New.
5259         (build_class_ref): Generate hard reference to superclass, even if
5260         using indirect dispatch.
5261         (build_static_field_ref): Use class local atable.
5262         (make_class_data): Generate hard reference to superclass, even if
5263         using indirect dispatch.
5264         Generate symbolic references to interfaces when using indirect
5265         dispatch.
5266         (make_class_data): Emit otable, atable, and ctable.
5267         Make otable, atable, and ctable class local rather than global.
5268         (emit_catch_table): Make otable, atable, and ctable class local
5269         rather than global.
5270
5271 2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>
5272
5273         * parse.y (catch_clause_parameter): Fix typo.
5274
5275         PR java/13404
5276         * parse.y: (catch_clause_parameter): Return early if $3, aka
5277         formal_parameter, is null.
5278
5279 2003-12-20  Kazu Hirata  <kazu@cs.umass.edu>
5280
5281         * class.c: Remove uses of "register" specifier in
5282         declarations of arguments and local variables.
5283         * decl.c: Likewise.
5284         * expr.c: Likewise.
5285         * gjavah.c: Likewise.
5286         * jcf-dump.c: Likewise.
5287         * jcf-io.c: Likewise.
5288         * jcf-parse.c: Likewise.
5289         * jcf-write.c: Likewise.
5290         * keyword.h: Likewise.
5291         * parse.y: Likewise.
5292         * typeck.c: Likewise.
5293         * verify.c: Likewise.
5294
5295 2003-12-06  Kelley Cook  <kcook@gcc.gnu.org>
5296
5297         * Make-lang.in (GCJ_CROSS_NAME): Delete.
5298         (java.install_common, java.install-man): Adjust for above.
5299         (java.uninstall): Likewise.
5300
5301 2003-12-03  Michael Koch  <konqueror@gmx.de>
5302
5303         * class.c (make_class_data):
5304         Push field value to 'hack_signers' instead of 'signers'.
5305         * decl.c (java_init_decl_processing):
5306         Push field 'hack_signers' instead of 'signers'.
5307
5308 2003-12-03  Zack Weinberg  <zack@codesourcery.com>
5309
5310         * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before
5311         including iconv.h.
5312
5313 2003-12-03  Ralph Loader  <rcl@ihug.co.nz>
5314
5315         PR java/12374:
5316         * parse.y (qualify_ambiguous_name): Remove lots of broken
5317         field access processing - there's no need to do that here,
5318         because we have resolve_field_access.  Remove
5319         RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else.
5320         * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't
5321         used.
5322
5323 2003-12-01  Jeff Sturm  <jsturm@one-point.com>
5324
5325         Fix PR java/13237
5326         * parse.y (java_complete_lhs): Save location prior to patching
5327         CALL_EXPR.
5328
5329 2003-11-25  Mohan Embar  <gnustuff@thisiscool.com>
5330
5331         PR java/12548
5332         * resource.c (write_resource_constructor): Append
5333         "_resource" to constructor identifier name.
5334
5335 2003-11-25  Jeff Sturm  <jsturm@one-point.com>
5336
5337         Fix PR java/13183.
5338         * constants.c (cpool_for_class): New function.
5339         (outgoing_cpool): Remove global variable.
5340         (alloc_name_constant): Use cpool_for_class.
5341         (build_constants_constructor): Likewise.
5342         * decl.c (java_expand_body): Set current_class.
5343         * java-tree.h (outgoing_cpool) Remove declaration.
5344         (init_outgoing_cpool): Likewise.
5345         * jcf-parse.c (init_outgoing_cpool): Remove function.
5346         (parse_class_file): Don't call init_outgoing_cpool.
5347         * parse.y (java_complete_expand_methods): Don't call
5348         init_outgoing_cpool.  Don't save outgoing_cpool.
5349         (java_expand_classes): Don't restore outgoing_cpool.
5350         (java_finish_classes): Likewise.
5351
5352 2003-11-24  Mohan Embar  <gnustuff@thisiscool.com>
5353
5354         * Make-lang.in: (java.install-common) Add
5355         symlink for $(target_noncanonical)-gcjh for
5356         native builds.
5357
5358 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
5359
5360         * Make-lang.in (java.extraclean): Delete.
5361
5362 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
5363
5364         * Make-lang.in (check-java): Add.
5365
5366 2003-11-19  Jeff Sturm  <jsturm@one-point.com>
5367
5368         Fix PR java/13024.
5369         * except.c (prepare_eh_table_type): Allocate variable-sized
5370         buffer `buf' with alloca.
5371
5372 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
5373
5374         Fix PR java/12857.
5375
5376         decl.c (java_init_decl_processing): Don't initialize
5377         class_not_found_type_node, no_class_def_found_type_node.
5378
5379         java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE,
5380         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index.
5381         (class_not_found_type_node, no_class_def_found_type_node):
5382         Don't define.
5383
5384         parse.y (build_dot_class_method_invocation): Add this_class
5385         argument.  Qualify method invocations to a different class.
5386         (create_new_parser_context): Initialize saved_data_ctx to 0.
5387         (java_parser_context_save_global): Initialize saved_data_ctx to 1.
5388         (build_dot_class_method): Don't load classes.  Register
5389         incomplete types.
5390         (build_incomplete_class_ref): Special cases for interfaces
5391         and inner classes.  Move build_dot_class_method call to here...
5392         (patch_incomplete_class_ref): ...from here.  Pass current_class
5393         to build_dot_class_method_invocation.
5394         (build_assertion): Pass class_type to
5395         build_dot_class_method_invocation.
5396         (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node.
5397
5398 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
5399
5400         Fix PR java/12739.
5401         * java-tree.h (BLOCK_EMPTY_P): Define.
5402         * parse.y (java_complete_lhs): Check for empty blocks
5403         in TRY_FINALLY_EXPR case.
5404
5405 2003-11-17  Andrew Haley  <aph@redhat.com>
5406
5407         * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
5408         (struct lang_decl_var:freed): New variable.
5409         * decl.c (poplevel): Mark local vars that have gone out of scope.
5410         (push_jvm_slot): Don't use the RTL of a var that has gone out of
5411         scope.
5412
5413 2003-11-16  Jason Merrill  <jason@redhat.com>
5414
5415         * Make-lang.in (java.tags): Create TAGS.sub files in each directory
5416         and TAGS files that include them for each front end.
5417
5418 2003-11-15  Tom Tromey  <tromey@redhat.com>
5419
5420         * gjavah.c (print_stub_or_jni): Pass `env' to FatalError.
5421
5422 2003-11-12  Jason Merrill  <jason@redhat.com>
5423
5424         PR optimization/12547
5425         * lang.c (java_tree_inlining_walk_subtrees): Just walk
5426         BLOCK_EXPR_BODY directly.
5427
5428 2003-11-12  Andrew Haley  <aph@redhat.com>
5429
5430         PR java/11045
5431         * parse.y (fold_constant_for_init): Check that we really do have a
5432         constant.
5433
5434         PR java/11533
5435         * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for
5436         init_test_decls being inlined.
5437
5438         PR java/12890:
5439         * parse.y (do_resolve_class): Check return value from
5440         breakdown_qualified().
5441
5442 2003-11-11  Tom Tromey  <tromey@redhat.com>
5443
5444         PR java/12915:
5445         * parse.y (merge_string_cste): Handle case where we have a
5446         pointer that happens to be zero, not null_pointer_node.
5447
5448 2003-11-10  Tom Tromey  <tromey@redhat.com>
5449
5450         * jcf-parse.c (classify_zip_file): Correctly compare
5451         filename_length against length of manifest file's name.
5452
5453 2003-11-08  Tom Tromey  <tromey@redhat.com>
5454
5455         PR java/12894:
5456         * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file.
5457
5458 2003-11-06  Andrew Haley  <aph@redhat.com>
5459
5460         * expr.c (java_stack_swap): Make sure destination stack slots are
5461         of the correct type.
5462
5463 2003-11-03  Kelley Cook  <kcook@gcc.gnu.org>
5464
5465         * Make-lang.in (dvi): Move targets to $(docobjdir).
5466         (gcj.dvi): Simplify rule and adjust target.
5467         (gcj.info): Simplify rule.
5468         (gcj.pod): New intermediate rule.
5469         (gcjh.pod): Likewise.
5470         (jv-scan.pod): Likewise.
5471         (jcf-dump.pod): Likewise.
5472         (gij.pod): Likewise.
5473         (jv-convert.pod): Likewise.
5474         (rmic.pod): Likewise.
5475         (rmiregistry.pod): Likewise.
5476         (gcj.1): Delete.
5477         (gcjh.1): Delete.
5478         (jv-scan.1): Delete.
5479         (jcf-dump.1): Delete.
5480         (gij.1): Delete.
5481         (jv-convert.1): Delete.
5482         (rmic.1): Delete.
5483         (rmiregistry.1): Delete.
5484
5485 2003-11-02  Jeff Sturm  <jsturm@one-point.com>
5486
5487         Fixes PR java/12866.
5488         * parse.y (resolve_qualified_expression_name): Move test
5489         for outer field access methods from here...
5490         (check_thrown_exceptions) ...to here.
5491
5492 2003-11-01  Kelley Cook  <kcook@gcc.gnu.org>
5493
5494         * .cvsignore: Delete.
5495
5496 2003-10-28  Frank Ch. Eigler  <fche@redhat.com>
5497
5498         * verify.c (verify_jvm_instructions): Don't warn about legal
5499         eh binding regions generated for example by jdk 1.4.1.
5500
5501 2003-10-24  David S. Miller  <davem@redhat.com>
5502
5503         * jcf-parse.c (jcf_parse): Fix args to fatal_error().
5504
5505 2003-10-22  Andrew Haley  <aph@redhat.com>
5506
5507         * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
5508         (java_get_callee_fndecl): New.
5509
5510         * jcf-parse.c (java_parse_file): Call emit_catch_table().
5511
5512         * java-tree.h (ctable_decl): New.
5513         (catch_classes):  New.
5514         (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.
5515
5516         * decl.c (java_init_decl_processing): Add catch_class_type.
5517         Add ctable_decl.
5518         Add catch_classes field.
5519
5520         * class.c (build_indirect_class_ref): Break out from
5521         build_class_ref.
5522         (make_field_value): Check flag_indirect_dispatch.
5523         (make_class_data): Ditto.
5524         Tidy uses of PUSH_FIELD_VALUE.
5525         Add field catch_classes.
5526         (make_catch_class_record): New.
5527
5528         * java-tree.h (PUSH_FIELD_VALUE): Tidy.
5529
5530 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
5531
5532         * jcf-write.c: Follow spelling conventions.
5533         * parse.y: Likewise.
5534
5535 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
5536
5537         * ChangeLog: Fix typos.
5538         * expr.c: Fix comment typos.
5539         * jcf-write.c: Likewise.
5540         * lang.c: Likewise.
5541         * lex.c: Likewise.
5542         * mangle.c: Likewise.
5543         * parse-scan.y: Likewise.
5544         * parse.y: Likewise.
5545
5546 2003-10-22  Tom Tromey  <tromey@redhat.com>
5547
5548         * expr.c (expand_byte_code): Only warn about dead bytecode when
5549         extra_warnings is set.
5550
5551 2003-10-22  Bryce McKinlay  <bryce@mckinlay.net.nz>
5552
5553         Fix for PR java/12586.
5554         * mangle.c (find_compression_record_match): Don't iterate through
5555         package namespace elements unless they all match compression_table
5556         entries.
5557
5558 2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>
5559
5560         * Make-lang.in (info): Honor $(parsedir) and $(docobjdir).
5561         (generate-manpages): Likewise.
5562         (java.maintainer-clean): Likewise.
5563         (gcj.info): Likewise.
5564         (gcj.1): Likewise.
5565         (gcjh.1): Likewise.
5566         (jv-scan.1): Likewise.
5567         (jcf-dump.1): Likewise.
5568         (gij.1): Likewise.
5569         (jv-convert.1): Likewise.
5570         (rmic.1): Likewise.
5571         (rmiregistry.1): Likewise.
5572         (java.install-man): Likewise.
5573         (parse-scan.o): Move and define complete compile line.
5574         (parse.o): Likewise.
5575         (jcf-tree-inline.o): Move.
5576
5577 2003-10-20  Mark Mitchell  <mark@codesourcery.com>
5578
5579         * Make-lang.in (info): Update dependencies.
5580         (java.install-info): Remove.
5581         ($(srcdir)/java/gcj.info): Replace with ...
5582         ($(docobjdir)/gcj.info): ... this.
5583
5584 2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>
5585
5586         * Make-lang.in: Replace uses of $(target_alias) with
5587         $(target_noncanonical).
5588
5589 2003-10-09  Tom Tromey  <tromey@redhat.com>
5590
5591         * decl.c (java_init_decl_processing): Declare signers field.
5592         * class.c (make_class_data): Set signers field.
5593
5594 2003-10-09  Jason Merrill  <jason@redhat.com>
5595
5596         * parse.y (patch_assignment): Use make_node to create a BLOCK.
5597         * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a
5598         POINTER_TYPE.
5599
5600 2003-10-06  Mark Mitchell  <mark@codesourcery.com>
5601
5602         * Make-lang.in (java.info): Replace with ...
5603         (info): ... this.
5604         (java.dvi): Replace with ...
5605         (dvi): ... this.
5606         (java.generated-manpages): Replace with ...
5607
5608 2003-10-03  Kelley Cook  <kelleycook@wideopenwest.com>
5609
5610         * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros.
5611
5612 2003-10-01  Andrew Haley  <aph@redhat.com>
5613
5614         * jcf-parse.c (java_parse_file): Write otable and atable.
5615         * java-tree.h (atable_methods): New.
5616         (atable_decl): New.
5617         (atable_syms_decl): New.
5618         (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL,
5619         JTI_ATABLE_SYMS_DECL.  Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*.
5620         (symbol_*type): Rename method_symbol* to symbol*type.
5621         (emit_offset_symbol_table): Delete.
5622         (emit_symbol_table): New.
5623         (get_symbol_table_index): New.
5624         (atable_type): New.
5625         * expr.c (build_field_ref): Handle flag_indirect_dispatch.
5626         (build_known_method_ref): Likewise.
5627         (get_symbol_table_index): Rename from get_offset_table_index.
5628         Parameterize to allow re-use by differing types of symbol table.
5629         (build_invokevirtual): Pass table to get_offset_table_index.
5630         * decl.c (java_init_decl_processing): Push types and decls for
5631         atable and atable_syyms.
5632         * class.c (build_static_field_ref): Handle flag_indirect_dispatch.
5633         (make_class_data): Add new fields atable and atable_syms.
5634         (emit_symbol_table): Rename from emit_offset_symbol_table.
5635         Parameterize to allow re-use by different types of symbol table.
5636         (build_symbol_entry): Renamed from build_method_symbols_entry.
5637
5638 2003-09-30  Roger Sayle  <roger@eyesopen.com>
5639
5640         * jcf-write.c (generate_bytecode_insns): Implement evaluate-once
5641         semantics for SAVE_EXPR, by caching the result in a temporary.
5642
5643 2003-09-28  Richard Henderson  <rth@redhat.com>
5644
5645         * check-init.c (check_init): Save and restore input_location
5646         instead of file and line separately.
5647         * decl.c (java_expand_body): Likewise.
5648         * jcf-write.c (generate_bytecode_insns): Likewise.
5649         * parse.y (safe_layout_class): Likewise.
5650         * jcf-parse.c (read_class, parse_class_file): Likewise.
5651         (java_parse_file): Use %H for warning locator.
5652
5653 2003-09-28  Roger Sayle  <roger@eyesopen.com>
5654
5655         * expr.c (java_check_reference): Use the semantics of COND_EXPRs
5656         with void-type branches instead of using a COMPOUND_EXPR.
5657
5658 2003-09-28  Jeff Sturm  <jsturm@one-point.com>
5659
5660         * decl.c (java_optimize_inline, dump_function): Remove.
5661         * java-tree.h (java_optimize_inline): Remove declaration.
5662         * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set.
5663         * parse.y (source_end_java_method, java_expand_classes):
5664         Likewise.  Remove dead code.
5665
5666 2003-09-27  Roger Sayle  <roger@eyesopen.com>
5667
5668         * lang.c (java_init_options): Set flag_evaluation_order.
5669         * expr.c (force_evaluation_order): Don't attempt to force
5670         evaluation order of binary operations using save_expr.
5671         * parse.y (java_complete_lhs): No longer need to call
5672         force_evaluation_order when constructing binary operators.
5673
5674 2003-09-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
5675             Bryce McKinlay  <bryce@mckinlay.net.nz>
5676
5677         PR java/1333:
5678         * parse.y (not_accessible_field_error): New function.
5679         (resolve_expression_name): Check field access permissions.
5680         (resolve_qualified_expression_name): Use
5681         not_accessible_field_error.
5682         (resolve_qualified_expression_name): Likewise.
5683
5684 2003-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5685
5686         * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value.
5687
5688 2003-09-23  Roger Sayle  <roger@eyesopen.com>
5689
5690         * jcf-write.c (generate_bytecode_insns): Optimize binary operations
5691         with equal operands without side-effects.
5692
5693 2003-09-22  Jeff Sturm  <jsturm@one-point.com>
5694
5695         * decl.c (java_init_decl_processing): Don't emit otable decls
5696         if flag_indirect_dispatch is not set.
5697
5698 2003-09-21  Richard Henderson  <rth@redhat.com>
5699
5700         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
5701         resource.c: Revert.
5702
5703 2003-09-21  Richard Henderson  <rth@redhat.com>
5704
5705         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
5706         resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.
5707
5708 2003-09-20  Richard Henderson  <rth@redhat.com>
5709
5710         * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
5711
5712 2003-09-18  Roger Sayle  <roger@eyesopen.com>
5713
5714         * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
5715         * check-init.c (check_init): Likewise.
5716
5717 2003-09-18  Roger Sayle  <roger@eyesopen.com>
5718
5719         * jcf-write.c (generate_bytecode_insns): Add support for fconst_2.
5720
5721 2003-09-16  Andrew Haley  <aph@redhat.com>
5722
5723         * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR.
5724
5725 2003-09-17  Ranjit Mathew  <rmathew@hotmail.com>
5726
5727         Fixes PR java/9577
5728         * mangle.c (find_compression_record_match): Skip
5729         over a "6JArray" (the array template mangled string)
5730         IDENTIFIER_NODE.
5731         (mangle_array_type): Correct minor typo.
5732         (atms): Move definition to the beginning.
5733
5734 2003-09-16  Bryce McKinlay  <bryce@mckinlay.net.nz>
5735
5736         * class.c (add_miranda_methods): Ensure super-interfaces are laid
5737         out. Fix for PR java/12254.
5738
5739 2003-09-11  Richard Henderson  <rth@redhat.com>
5740
5741         * parse.y (source_end_java_method): Update for new
5742         cgraph_finalize_function argument.
5743
5744 2003-09-09  Richard Henderson  <rth@redhat.com>
5745
5746         * parse.y (source_end_java_method): Update call to
5747         cgraph_finalize_function.
5748
5749 2003-09-03  Jeff Sturm  <jsturm@one-point.com>
5750
5751         * decl.c (java_expand_body): New function.
5752         * expr.c (build_class_init): Set DECL_IGNORED_P.
5753         * java-tree.h (start_complete_expand_method,
5754         java_expand_body): Declare.
5755         * jcf-parse.c (cgraph.h): Include.
5756         (java_parse_file): Handle flag_unit_at_a_time.
5757         * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING,
5758         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
5759         (java_estimate_num_insns): Use walk_tree_without_duplicates.
5760         (java_start_inlining): New function.
5761         * parse.h (java_finish_classes): Declare.
5762         * parse.y: Include cgraph.h.
5763         (block): Don't special-case empty block production.
5764         (craft_constructor): Set DECL_INLINE.
5765         (source_end_java_method): Handle flag_unit_at_a_time.
5766         Replace inline code with call to java_expand_body.
5767         (start_complete_expand_method): Remove static modifier.
5768         (java_expand_method_bodies): Patch function tree for
5769         class initialization and/or synchronization as needed.
5770         Don't begin RTL expansion yet.
5771         (java_expand_classes): Check flag_unit_at_a_time before
5772         calling finish_class.
5773         (java_finish_classes): New function.
5774         (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type.
5775         (patch_assignment): Set DECL_CONTEXT on temporary variable.
5776         (emit_test_initialization): Set DECL_IGNORED_P.
5777
5778 2003-09-03  Roger Sayle  <roger@eyesopen.com>
5779
5780         * builtins.c (enum builtin_type): Delete unused enumeration.
5781         * Make-lang.in (java/builtins.o): Remove built-types.def dependency.
5782
5783 2003-08-28  Tom Tromey  <tromey@redhat.com>
5784
5785         * gcj.texi (Extensions): Document gcjlib URLs.
5786
5787 2003-08-20  Tom Tromey  <tromey@redhat.com>
5788
5789         * gcj.texi (Extensions): Added xref.
5790         (libgcj Runtime Properties): Document
5791         gnu.gcj.runtime.VMClassLoader.library_control.
5792
5793 2003-08-20  Andrew Haley  <aph@redhat.com>
5794
5795         * except.c (prepare_eh_table_type): Use new encoding for exception
5796         handlers when using -fno-assume-compiled.
5797
5798 2003-08-13  Tom Tromey  <tromey@redhat.com>
5799
5800         * gcj.texi (Invoking gij): Document -X and -?.
5801
5802 2003-08-13  Mohan Embar  <gnustuff@thisiscool.com>
5803
5804         * Make-lang.in: Added missing win32-host.o to JAVA_OBJS,
5805         GCJH_OBJS, JCFDUMP_OBJS
5806         * win32-host.c: Removed the unnecessary and broken dependency
5807         on jcf.h
5808
5809 2003-08-11  Tom Tromey  <tromey@redhat.com>
5810
5811         * parse.y (java_check_regular_methods): Typo fixes.  Call
5812         check_interface_throws_clauses.  Use
5813         check_concrete_throws_clauses.
5814         (check_interface_throws_clauses): New function.
5815         (check_concrete_throws_clauses): New function.
5816         (hack_is_accessible_p): New function.
5817         (find_most_specific_methods_list): Added FIXME.
5818         * typeck.c (lookup_do): Use `flags' argument to decide what to
5819         do.  Reimplemented.
5820         (lookup_argument_method_generic): New function.
5821         (lookup_argument_method2): Removed.
5822         * jcf.h (ACC_INVISIBLE): New define.
5823         * jcf-write.c (generate_classfile): Skip invisible methods.
5824         * class.c (add_miranda_methods): New function.
5825         (layout_class_methods): Use it.
5826         (get_access_flags_from_decl): Use ACC_INVISIBLE.
5827         * java-tree.h (METHOD_INVISIBLE): New define.
5828         (lang_decl_func) [invisible]: New field.
5829         (lookup_argument_method_generic): Declare.
5830         (SEARCH_INTERFACE): New define.
5831         (SEARCH_SUPER): Likewise.
5832         (SEARCH_ONLY_INTERFACE): Likewise.
5833         (SEARCH_VISIBLE): Likewise.
5834         (lookup_argument_method2): Removed declaration.
5835
5836 2003-08-05  Tom Tromey  <tromey@redhat.com>
5837
5838         Fix for PR java/11600:
5839         * parse.y (java_complete_lhs): See whether we're calling a method
5840         on an array.
5841         (check_thrown_exceptions): Added `is_array_call' argument;
5842         fixed `clone' checking; updated all callers.
5843
5844 2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>
5845
5846         * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h).
5847
5848 2003-08-03  Tom Tromey  <tromey@redhat.com>
5849
5850         * java-tree.h (METHOD_TRANSIENT): Removed.
5851         * decl.c (pushdecl): Removed some dead code.
5852         * class.c (get_access_flags_from_decl): Can't have transient
5853         method.
5854         (add_method_1): Can't have a transient method.
5855
5856 2003-07-28  Andreas Jaeger  <aj@suse.de>
5857
5858         * jvspec.c: Convert to ISO C90 prototypes.
5859
5860 2003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
5861
5862         * decl.c (force_poplevels): Fix warning call.
5863
5864 2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5865
5866         * expr.c (expand_java_field_op): Don't use xxx_with_decl
5867         (expand_java_field_op): Likewise.
5868         * class.c (layout_class_method): Likewise
5869         (emit_register_classes): Likewise.
5870         * decl.c (pushdecl): Likewise.
5871         (poplevel): Likewise.
5872         (force_poplevels): Likewise.
5873         (give_name_to_locals): Likewise.
5874         * check-init.c (check_for_initialization): Likewise.
5875
5876 2003-07-24  Jason Merrill  <jason@redhat.com>
5877
5878         * java-tree.h: Move boolean_type_node et al to the back end.
5879
5880 2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5881
5882         * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary
5883         casts.
5884
5885 2003-07-19  Neil Booth  <neil@daikokuya.co.uk>
5886
5887         * lang.opt: Don't show -MD_ and -MDD_.
5888
5889 2003-07-18  Neil Booth  <neil@daikokuya.co.uk>
5890
5891         * lang-options.h: Remove.
5892         * lang.opt: Add help text.
5893
5894 2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>
5895
5896         * expr.c: Remove the last argument to expand_assignment().
5897
5898 2003-07-09  Jan Hubicka  <jh@suse.cz>
5899
5900         * java-tree.h (DECL_NUM_STMTS): Rename to...
5901         (DECL_ESTIMATED_INSNS): ... this.
5902         * lang.c (java_estimate_num_insns, java_estimate_num_insns_1):
5903         New static functions.
5904         (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define.
5905         * parser.y (add_stmt_to_compound): Do not account statements.
5906
5907 2003-07-08  Mark Wielaard  <mark@klomp.org>
5908
5909         * gcj.texi: CNI now expands to Compiled Native Interface.
5910
5911 2003-07-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5912
5913         * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND.
5914
5915 2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>
5916
5917         * expr.c (expand_byte_code): Adjist emit_line_note call.
5918
5919 2003-07-06  Neil Booth  <neil@daikokuya.co.uk>
5920
5921         * lang.c (java_handle_option): Don't handle filenames.
5922
5923 2003-07-02  Zack Weinberg  <zack@codesourcery.com>
5924
5925         * jcf-path.c: Don't default-define PATH_SEPARATOR nor
5926         DIR_SEPARATOR.
5927         Use FILENAME_CMP.
5928         * jcf-write.c: Don't default-define DIR_SEPARATOR.
5929         * jcf.h: Delete COMPARE_FILENAMES definition.
5930
5931 2003-07-02  Neil Booth  <neil@daikokuya.co.uk>
5932
5933         * lang.c (java_init_options): Update prototype.
5934
5935 2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
5936
5937         * decl.c (poplevel): Adjust define_label call.
5938
5939 2003-06-27  Zack Weinberg  <zack@codesourcery.com>
5940
5941         * gjavah.c (flag_jni): Make non-static.
5942         * parse-scan.y (ctxp): Make non-static.
5943
5944         * class.c (build_method_symbols_entry)
5945         * expr.c (get_offset_table_index)
5946         * jcf-parse.c (jcf_parse):
5947         Mark the definition static, matching the forward declaration.
5948
5949 2003-06-26  Neil Booth  <neil@daikokuya.co.uk>
5950
5951         * lang.c (java_handle_option): Don't check for missing arguments.
5952
5953 2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>
5954
5955         * class.c (push_class): Use a location_t to save place.
5956         (emit_register_classes): Set input_location. Adjust
5957         expand_function_end call.
5958         * resource.c (write_resource_constructor): Likewise.
5959         * decl.c (end_java_method): Adjust expand_function_end call.
5960         * parse.y (source_end_java_method): Likewise.
5961
5962 2003-06-17  Robert Abeles  <rabeles@archaelogic.com>
5963
5964         * lang.c (java_handle_option): Likewise.
5965
5966 2003-06-16  Neil Booth  <neil@daikokuya.co.uk>
5967
5968         * lang.c (java_handle_option): Special-casing of optional
5969         joined arguments no longer needed.
5970         * lang.opt: Update switches that take optional argument.
5971
5972 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
5973
5974         * lang.opt: Declare Java.
5975         * lang.c (java_init_options): Update.
5976
5977 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
5978
5979         * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h.
5980
5981 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
5982
5983         * lang-specs.h: Rewrite -MD and -MMD to append an underscore.
5984         * lang.c (java_handle_option): -MD and -MMD have an underscore.
5985         * lang.opt: -MD and -MMD have an underscore.
5986
5987 2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>
5988
5989         * class.c (emit_register_classes): Adjust init_function_start
5990         call.
5991         * decl.c (complete_start_java_method): Likewise.
5992         * resource.c (write_resource_constructor): Likewise.
5993
5994 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
5995
5996         * Make-lang.in: Update to use options.c and options.h.
5997         * lang.c: Include options.h not j-options.h.
5998         (java_handle_option): Abort on unrecognized option.
5999         (java_init_options): Request Java switches.
6000
6001 2003-06-11  Neil Booth  <neil@daikokuya.co.uk>
6002
6003         * Make-lang.in: Handle mostlyclean.
6004
6005 2003-06-11  Tom Tromey  <tromey@redhat.com>
6006
6007         * lang.c (java_handle_option): Update dependency_tracking for
6008         OPT_MF case.
6009
6010         * lang.c (java_handle_option): OPT_fbootclasspath_ can take an
6011         empty argument.
6012
6013 2003-06-10  Andrew Haley  <aph@redhat.com>
6014
6015         * resource.c (write_resource_constructor): Use expand_expr to
6016         generate the address of the label attached to a resource.
6017         * Make-lang.in (java/resource.o): Add expr.h
6018
6019 2003-06-10  Andrew Haley  <aph@redhat.com>
6020
6021         * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
6022         (java_decl_ok_for_sibcall): New.
6023
6024 2003-06-09  Neil Booth  <neil@daikokuya.co.uk>
6025
6026         * Make-lang.in (JAVA_OBJS, java/lang.o): Update.
6027         (java/j-options.c, java/j-options.h): New.
6028         * java-tree.h (resource_name, compile_resource_file,
6029         compile_resource_data): Constify.
6030         * jcf-write.c (jcf_write_base_directory): Similarly.
6031         * jcf.h (jcf_write_base_directory): Similarly.
6032         * lang.c: Include j-options.h.
6033         (cl_options_count, cl_options, string_option, java_decode_option,
6034         lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION,
6035         process_option_with_no): Remove.
6036         (resource_name): Constify.
6037         (LANG_HOOKS_HANDLE_OPTION): Override.
6038         (java_handle_option): New.
6039         (java_init): Don't call jcf_path_init.
6040         (java_init_options): Call jcf_path_init.
6041         * lang.opt: New.
6042         * resource.c (compile_resource_data, compile_resource_file): Constify.
6043
6044 2003-06-09  Nathan Sidwell  <nathan@codesourcery.com>
6045
6046         * java-tree.h (DECL_FUNCTION_LAST_LINE): New.
6047         (struct lang_decl_func): Add last_line field.
6048         * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
6049         DECL_SOURCE_LINE_LAST): Remove.
6050         * parse.y (missing_return_error, finish_method_declaration,
6051         lookup_cl, start_artificial_method_body, source_end_java_method,
6052         start_complete_expand_method): Adjust.
6053
6054 2003-06-08  Tom Tromey  <tromey@redhat.com>
6055
6056         * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and
6057         fno-assume-compiled.
6058
6059 2003-06-08  Roger Sayle  <roger@eyesopen.com>
6060
6061         * builtins.c (define_builtin_type, builtin_types): Delete.
6062         (define_builtin): Rewritten to take just the built-in code,
6063         the function's name, type and fallback library function name.
6064         All built-ins used by Java are implicit and BUILT_IN_NORMAL.
6065         (initialize_builtins): Overhaul to define the GCC builtins
6066         used by gcj manually, providing the Java run-time's
6067         implementations as the fallback library function.
6068
6069 2003-06-08  Anthony Green  <green@redhat.com>
6070
6071         * parse.y (patch_cast): Fix conversions from floating-point to
6072         integral types.
6073
6074 2003-06-08  Neil Booth  <neil@daikokuya.co.uk>
6075
6076         * Make-lang.in: Update.
6077         * lang.c: Include opts.h. Define cl_options_count and cl_options.
6078
6079 2003-06-07  Neil Booth  <neil@daikokuya.co.uk>
6080
6081         * lang.c (java_init_options): Update.
6082
6083 2003-06-05  Jan Hubicka  <jh@suse.cz>
6084
6085         * Make-lang.in:  Add support for stageprofile and stagefeedback
6086
6087 2003-05-31  Roger Sayle  <roger@eyesopen.com>
6088
6089         * lang.c (java_init_options): Prescribe wrap-around two's
6090         complement arithmetic overflow by setting flag_wrapv.
6091
6092 2003-05-29  Roger Sayle  <roger@eyesopen.com>
6093
6094         * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete.
6095         (builtin_record): Add an additional builtin_code field to
6096         record which GCC built-in corresponds to the Java function.
6097         (java_builtins):  Add new entries for atan, atan2, exp, log,
6098         pow and tan.
6099         (max_builtin, min_builtin, abs_builtin): Perform constant
6100         folding on the resulting tree.
6101         (java_build_function_call_expr): Likewise, perform constant
6102         folding on the resulting tree.
6103         (initialize_builtins): The NULL creators are now allowed in
6104         the java_builtins table, which is now terminated by an entry
6105         with builtin_code == END_BUILTINS.
6106         (check_for_builtin): Likewise.  If the matching creator is
6107         NULL, construct the call using java_build_function_call_expr
6108         directly with the decl for the corresponding builtin_code.
6109
6110 2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>
6111
6112         * win32-host.c: Normalize copyright boilerplate.
6113
6114 2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6115
6116         * parse.y (print_int_node): Use string concatentation on
6117         HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
6118         function calls into one.
6119
6120 2003-05-13  Zack Weinberg  <zack@codesourcery.com>
6121
6122         * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to
6123         fatal_io_error with calls to fatal_error; add ": %m" to the end of
6124         all the affected error messages.
6125
6126 2003-05-13  Richard Henderson  <rth@redhat.com>
6127
6128         * class.c (layout_class_method): Set DECL_EXTERNAL.
6129         * decl.c (java_mark_decl_local, java_mark_class_local): New.
6130         * java-tree.h (java_mark_class_local): Declare.
6131         * jcf-parse.c (parse_class_file): Use it.
6132         * parse.y (java_expand_classes): Likewise.
6133
6134 2003-05-04  Nathan Sidwell  <nathan@codesourcery.com>
6135
6136         * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h.
6137         * lex.h: #include input.h.
6138         * jv-scan.c (input_filename): Remove.
6139
6140 2003-05-02  Tom Tromey  <tromey@redhat.com>
6141
6142         PR java/10491:
6143         * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
6144         (handle_inner_classes): New function.
6145
6146 2003-05-01  Tom Tromey  <tromey@redhat.com>
6147
6148         PR java/10459:
6149         * parse.y (finish_for_loop): Do nothing if update expression is a
6150         EXPR_WFL_NODE wrapping nothing.
6151         (java_complete_lhs) <COMPOUND_EXPR>: Likewise.
6152
6153 2003-05-02  Nathan Sidwell  <nathan@codesourcery.com>
6154
6155         * lex.h (input_lineno): Remove declaration.
6156         * parse-scan.y: #include input.h.
6157         (input_filename): Remove declaration.
6158         (input_location): Add definition.
6159         (input_line): Remove definition.
6160
6161 2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>
6162
6163         * lex.h (lineno): Rename to ...
6164         (input_line): ... here
6165         * parse-scan.y (lineno): Rename to ...
6166         (input_line): ... here.
6167         (reset_report): Rename lineno to input_line.
6168         * check-init.c (check_init): Likewise.
6169         * class.c (push_class): Likewise.
6170         * decl.c (complete_start_java_method, end_java_method): Likewise.
6171         * expr.c (expand_byte_code): Likewise.
6172         * jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
6173         * jcf-write.c (generate_bytecode_insns): Likewise.
6174         * lex.c (java_init_lex, java_allocate_new_line,
6175         do_java_lex): Likewise.
6176         * parse.h (YYNOT_TWICE): Likewise.
6177         * parse.y (empty_statement, expression_statement,
6178         java_pop_parser_context, java_parser_context_save_global,
6179         yyerror, register_fields, method_header, safe_layout_class,
6180         find_in_imports_on_demand, create_artificial_method,
6181         source_end_java_method, start_complete_expand_method,
6182         build_thisn_assign, java_complete_lhs,
6183         maybe_absorb_scoping_block): Likewise.
6184
6185 2003-04-20  Mohan Embar  <gnustuff@thisiscool.com>
6186
6187         * jcf-io.c (find_class): use DIR_SEPARATOR instead of
6188         '/' when computing java source filename
6189
6190 2003-04-13  Tom Tromey  <tromey@redhat.com>
6191
6192         * gjavah.c (print_c_decl): Indentation fix.
6193
6194 2003-04-12  Zack Weinberg  <zack@codesourcery.com>
6195
6196         * class.c (make_field_value, make_method_value, get_dispatch_table)
6197         (make_class_data, emit_offset_symbol_table)
6198         * constants.c (build_constants_constructor)
6199         * java-tree.h (START_RECORD_CONSTRUCTOR)
6200         * parse.y (maybe_build_array_element_wfl):
6201         Use build_constructor.
6202
6203 2003-04-10  Eric Blake  <ebb9@email.byu.edu>
6204
6205         PR java/10253:
6206         * parse.y (string_convert_int_cst): Always use at least one digit
6207         in string conversion. Remove ASCII dependence.
6208         (merge_string_cste): Fix merging of 3-byte UTF-8 characters.
6209
6210 2003-03-16  Mohan Embar  <gnustuff@thisiscool.com>
6211
6212         * Make-lang.in: added win32-host.c
6213         * jcf.h: defined macro JCF_OPEN_EXACT_CASE which
6214         resolves to open() on non-Win32 platforms and
6215         Win32-specific jcf_open_exact_case() on Win32
6216         * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE
6217         when trying .java and .class files
6218         * win32-host.c: added to repository. Defines
6219         Win32-specific jcf_open_exact_case()
6220
6221 2003-04-10  Andrew Haley  <aph@redhat.com>
6222
6223         * jcf-write.c (struct jcf_partial): num_jsrs: new field.
6224         (maybe_free_localvar): Renamed from localvar_free.
6225         Add new arg, really.
6226         (generate_bytecode_insns): Set new variable, jsrs.
6227         Only free local vars if no jsr insns have been emittted.
6228         Call maybe_free_localvar, not localvar_free.
6229
6230 2003-03-30  Joseph S. Myers  <jsm@polyomino.org.uk>
6231
6232         * gcj.texi: Remove @ at start of file.
6233
6234 2003-03-25  Tom Tromey  <tromey@redhat.com>
6235
6236         * parse.y (create_interface): Call CHECK_DEPRECATED.
6237
6238 2003-03-23  Zack Weinberg  <zack@codesourcery.com>
6239
6240         * Make-lang.in: Link jcf-dump against $(LDEXP_LIB).
6241
6242 2003-03-21  Zack Weinberg  <zack@codesourcery.com>
6243
6244         * javaop.h (jfloat, jdouble): Make them structures mirroring
6245         the bit fields of IEEE float and double respectively.
6246         (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS,
6247         JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New.
6248         (union Word, union DWord): Delete.
6249         (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match.
6250
6251         * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK,
6252         D_NAN_MASK): Delete.
6253         (jni_print_float, jni_print_double): New.  Generate
6254         hexadecimal floating constants.
6255         (print_field_info): Use jni_print_float/double.
6256
6257         * jcf-dump.c: Include math.h.  Use ldexp/frexp to assemble
6258         finite floating point numbers for output; special case
6259         non-finite floats.
6260
6261 2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>
6262
6263         * lang.c (java_dump_tree): Change return type from 'int' to 'bool'.
6264         Replace 0 and 1 with true and false in return statements.
6265
6266 2003-03-19  Tom Tromey  <tromey@redhat.com>
6267
6268         * lex.c (do_java_lex): Renamed from java_lex.
6269         (java_lex): New function.
6270         Include timevar.h.
6271
6272 2003-03-13  Tom Tromey  <tromey@redhat.com>
6273
6274         * parse.y (resolve_inner_class): Error if qualifier is a primitive
6275         type.
6276
6277 2003-03-04  Andrew Haley  <aph@redhat.com>
6278
6279         * gjavah.c (is_first_data_member): New global variable.
6280         (print_c_decl): If it's the first data member, align it as the
6281         superclass.
6282         (process_file): Set is_first_data_member.
6283
6284 2003-03-11  Tom Tromey  <tromey@redhat.com>
6285
6286         * parse.y (resolve_field_access): Initialize class if field is
6287         found in another static field.
6288         * expr.c (build_class_init): Don't optimize out initialization of
6289         implemented interface.
6290
6291 2003-03-11  Andrew Haley  <aph@redhat.com>
6292
6293         * jcf-io.c (caching_stat): Initialize origsep to remove compiler
6294         warning.
6295
6296 2003-03-10  Ranjit Mathew  <rmathew@hotmail.com>
6297
6298         * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR
6299         and DIR_SEPARATOR_2 for a target.
6300         Correct minor typos.
6301
6302         * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR
6303         and DIR_SEPARATOR_2 for a target into account.
6304
6305 2003-03-08  Neil Booth  <neil@daikokuya.co.uk>
6306
6307         * lang.c (java_init): Update prototype, move code to java_post_options.
6308         (java_post_options): Similarly.
6309
6310 2003-03-05  Ranjit Mathew  <rmathew@hotmail.com>
6311
6312         * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to
6313         compare file name components depending on the case-sensitivity
6314         or otherwise of the host file system.
6315
6316         * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of
6317         "strcmp" to compare file name components.
6318         Use IS_DIR_SEPARATOR instead of comparing directly against
6319         DIR_SEPARATOR.
6320         (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of
6321         comparing directly against DIR_SEPARATOR.
6322
6323 2003-03-04  Tom Tromey  <tromey@redhat.com>
6324
6325         * Make-lang.in (java.tags): New target.
6326
6327 2003-03-01  Roger Sayle  <roger@eyesopen.com>
6328
6329         * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3.
6330         (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3.
6331
6332 2003-03-01  Tom Tromey  <tromey@redhat.com>
6333
6334         * parse.y (jdep_resolve_class): Only check deprecation if we found
6335         a decl.
6336
6337 2003-02-28  Tom Tromey  <tromey@redhat.com>
6338
6339         PR java/9695:
6340         * class.c (maybe_layout_super_class): Always pass a WFL to
6341         do_resolve_class.
6342         * parse.y (do_resolve_class): Updated comment to explain
6343         parameters.
6344
6345 2003-02-26  Tom Tromey  <tromey@redhat.com>
6346
6347         * jcf-write.c (generate_classfile): Check whether class is
6348         deprecated before writing attribute count.
6349
6350 2003-02-25  Roger Sayle  <roger@eyesopen.com>
6351
6352         * java/decl.c (java_init_decl_processing): Get soft_fmod_node from
6353         built_in_decls[BUILT_IN_FMOD] rather than define it ourselves.
6354
6355 2003-02-23  Tom Tromey  <tromey@redhat.com>
6356
6357         * lang-options.h: Added -Wdeprecated.
6358         * gcj.texi (Warnings): Document -Wdeprecated.
6359         * java-tree.h (flag_deprecated): Declare.
6360         * lang.c (lang_W_options): Added deprecated.
6361         (flag_deprecated): New global.
6362         * chartables.h: Rebuilt.
6363         * gen-table.pl (process_one): Look at whitespace.
6364         (print_tables): Define LETTER_SPACE, LETTER_MASK.
6365         * parse.h (CLEAR_DEPRECATED): New macro.
6366         (CHECK_DEPRECATED_NO_RESET): New macro.
6367         * jcf-parse.c (handle_deprecated): New function.
6368         (HANDLE_DEPRECATED_ATTRIBUTE): New define.
6369         * jcf-reader.c (get_attribute): Handle Deprecated attribute.
6370         * parse.y (resolve_type_during_patch): Check deprecation.
6371         (jdep_resolve_class): Likewise.
6372         (process_imports): Likewise.
6373         (resolve_expression_name): Likewise.
6374         (check_deprecation): Strip arrays from decl.  Check
6375         flag_deprecated.
6376         (patch_method_invocation): Also check the particular constructor
6377         for deprecation.
6378         (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop.
6379         * jcf-write.c (append_deprecated_attribute): New function.
6380         (generate_classfile): Generate deprecated attribute when
6381         appropriate.
6382         * lex.c (java_parse_doc_section): Return type now void.  Rewrote.
6383         (java_lex) [case '*']: Simplify logic.
6384         (java_start_char_p): Use LETTER_MASK.
6385         (java_part_char_p): Likewise.
6386         (java_space_char_p): New function.
6387
6388 2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
6389
6390         Change base class access representation.
6391         * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
6392         (add_interface_do): Likewise.
6393
6394 2003-02-12  Ranjit Mathew  <rmathew@hotmail.com>
6395
6396         * decl.c (java_init_decl_processing): Change
6397         soft_lookupjnimethod_node to reflect the change in
6398         signature of _Jv_LookupJNIMethod in libjava/jni.cc
6399         * expr.c (build_jni_stub): Calculate and pass the size
6400         on the stack of the arguments to a JNI function. Use
6401         new target macro MODIFY_JNI_METHOD_CALL to allow a
6402         target to modify the call to a JNI method.
6403
6404 2003-02-08  Roger Sayle  <roger@eyesopen.com>
6405
6406         * jcf-io.c (java_or_class_file): Use libiberty's lbasename
6407         instead of basename to avoid compiler warnings on Tru64.
6408
6409 2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>
6410
6411         * gcj.texi: Update to GFDL 1.2.
6412
6413 2003-01-31  Andrew Haley  <aph@redhat.com>
6414
6415         * parse.y (java_expand_classes): Scan the whole class list looking
6416         for access methods that haven't yet been expanded.
6417
6418 2003-01-31 Adrian Bunk <bunk@fs.tum.de>
6419
6420         Fix for java/4269:
6421
6422         * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO
6423         to fix bootstrap on sparc-unknown-netbsdelf1.5.
6424         * jcf-parse.c: Likewise.
6425
6426 2003-01-31  Mark Wielaard  <mark@klomp.org>
6427
6428         * gjavah.c (throwable_p): Allocate 1 more byte for string.
6429
6430 2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
6431
6432         * class.c (make_class): Use BINFO_ELTS.
6433         (set_super_info): Likewse.
6434         (add_interface_do): Likewise.
6435
6436 2003-01-30  Tom Tromey  <tromey@redhat.com>
6437
6438         * jcf-parse.c (read_class): Update identifier's class value if it
6439         changed during parsing.
6440
6441 2003-01-30  Loren James Rittle  <ljrittle@acm.org>
6442
6443         * Make-lang.in (po-generated): Find the targets in $(parsedir).
6444         Propagate change to all other rules as required.
6445         (java/parse-scan.o): Add explicit dependency on
6446         $(parsedir)/java/parse-scan.c .
6447
6448 2003-01-29  Tom Tromey  <tromey@redhat.com>
6449
6450         * parse.y (patch_assignment): Only transform the rhs of an
6451         assignment when compiling to native.
6452
6453 2003-01-28  Tom Tromey  <tromey@redhat.com>
6454
6455         * jcf-write.c (generate_bytecode_conditional): Typo fixes.
6456
6457 2003-01-28  Tom Tromey  <tromey@redhat.com>
6458
6459         * lex.c (java_lex): Don't include UEOF as part of token.
6460         (java_read_unicode): Error if \u sequence prematurely terminated.
6461
6462 2003-01-27  Tom Tromey  <tromey@redhat.com>
6463
6464         * parse.y (java_check_regular_methods): Check for construct after
6465         checking types in throws clause.
6466
6467 2003-01-24  Tom Tromey  <tromey@redhat.com>
6468
6469         * class.c (build_static_field_ref): Only a String or numeric field
6470         can fold to a constant.
6471
6472 2003-01-23  Tom Tromey  <tromey@redhat.com>
6473
6474         * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of
6475         file name in resource buffer.
6476
6477 2003-01-23  Tom Tromey  <tromey@redhat.com>
6478
6479         * expr.c (build_known_method_ref): Use method's context to find
6480         method table index.
6481
6482 2003-01-23  Tom Tromey  <tromey@redhat.com>
6483
6484         * constants.c (set_constant_entry): Allocated cleared memory.
6485
6486 2003-01-22  Tom Tromey  <tromey@redhat.com>
6487
6488         * java-tree.h: Don't use PARAMS.
6489         * resource.c: Add prototypes for all functions.
6490         (write_resource_constructor): Use `const char *' to avoid
6491         warning.
6492
6493 2003-01-22 Nathanael Nerode  <neroden@gcc.gnu.org>
6494
6495         * jcf-parse.c (process_zip_dir): Remove unused variable.
6496
6497 2003-01-22  Tom Tromey  <tromey@redhat.com>
6498
6499         * expr.c (build_invokeinterface): Abort if method's context is not
6500         an interface.
6501
6502 2003-01-22  Tom Tromey  <tromey@redhat.com>
6503
6504         * gcj.texi (Input and output files): Mention non-class entries.
6505         * decl.c (java_init_decl_processing): Call
6506         init_resource_processing.
6507         * java-tree.h (compile_resource_data, write_resource_constructor,
6508         compile_resource_file, init_resource_processing): Declare.
6509         * config-lang.in (gtfiles): Added resource.c.
6510         * Make-lang.in (gt-java-resource.h): New target.
6511         (JAVA_OBJS): Added resource.o.
6512         (java/resource.o): New target.
6513         * resource.c: New file.
6514         * class.c (compile_resource_file): Moved to resource.c.
6515         (registerResource_libfunc): Likewise.
6516         (utf8_decl_list): Mark with GTY; now static.
6517         * jcf-parse.c (classify_zip_file): New function.
6518         (parse_zip_file_entries): Use it; compile .properties files.
6519         (process_zip_dir): Use classify_zip_file and compute_class_name.
6520         Don't write class name into zip directory.
6521         (java_parse_file): Call write_resource_constructor.
6522         (compute_class_name): New function.
6523         * jcf-io.c (read_zip_member): Reindented.
6524
6525 2003-01-21  Tom Tromey  <tromey@redhat.com>
6526
6527         * class.c (supers_all_compiled): New function.
6528         (make_class_data): Use it.
6529
6530 2003-01-21  Tom Tromey  <tromey@redhat.com>
6531
6532         * parse.y (method_header): Native method can't be strictfp.
6533         No method can be transient or volatile.
6534
6535 2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6536
6537         Make-lang.in (jvspec.o-warn): Add -Wno-error.
6538
6539 2003-01-18  Kazu Hirata  <kazu@cs.umass.edu>
6540
6541         * check-init.c: Fix comment typos.
6542         * class.c: Likewise.
6543         * constants.c: Likewise.
6544         * decl.c: Likewise.
6545         * except.c: Likewise.
6546         * expr.c: Likewise.
6547         * java-except.h: Likewise.
6548         * java-tree.h: Likewise.
6549         * javaop.h: Likewise.
6550         * jcf-dump.c: Likewise.
6551         * jcf-io.c: Likewise.
6552         * jcf-parse.c: Likewise.
6553         * jcf-write.c: Likewise.
6554         * lang.c: Likewise.
6555         * mangle.c: Likewise.
6556         * typeck.c: Likewise.
6557         * verify.c: Likewise.
6558
6559 2003-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6560
6561         * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H).
6562         * jcf-write.c: Include "tm_p.h".
6563
6564 2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6565
6566         * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*.
6567
6568 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6569
6570         * builtins.c (java_build_function_call_expr): Renamed from
6571         build_function_call_expr.  All callers changed.
6572
6573         * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H).
6574         * jcf-parse.c: Include tm_p.h.
6575
6576         * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
6577         warning.
6578
6579 2003-01-14  Tom Tromey  <tromey@redhat.com>
6580
6581         * class.c (make_class_data): Check that super is compiled before
6582         building class reference to it.
6583
6584 2003-01-14  Andrew Haley  <aph@redhat.com>
6585
6586         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
6587         varargs function -- correct.
6588
6589 2003-01-14  Andrew Haley  <aph@redhat.com>
6590
6591         * decl.c (java_init_decl_processing): Temporarily back out previous patch.
6592
6593 2003-01-14  Andrew Haley  <aph@redhat.com>
6594
6595         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
6596         varargs function -- correct.
6597
6598         * parse.y (patch_assignment): Copy the rhs of an assignment into a
6599         temporary if the RHS is a reference.
6600
6601 2003-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6602
6603         * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf.
6604         * keyword.h: Regenerated.
6605
6606         * All Files: Convert to ISO C style function definitions.
6607
6608 2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
6609
6610         * parse.y (check_pkg_class_access): ANSIfy definition.
6611
6612 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6613
6614         * decl.c, parse-scan.y, parse.y: Don't cast return value of
6615         xmalloc et al.
6616
6617         * class.c, gjavah.c, parse.y, verify.c: Don't use PTR.
6618
6619 2003-01-09  Geoffrey Keating  <geoffk@apple.com>
6620
6621         Merge from pch-branch:
6622
6623         2002-12-02  Geoffrey Keating  <geoffk@apple.com>
6624
6625         * Make-lang.in (java/gjavah.o): Update dependencies.
6626         * gjavah.c: Include ggc.h.
6627
6628         2002-08-16  Geoffrey Keating  <geoffk@redhat.com>
6629
6630         * Make-lang.in (GCJH_OBJS): Add ggc-none.o.
6631         (JCFDUMP_OBJS): Add ggc-none.o.
6632         (java/jcf-dump.o): Depend on GGC_H.
6633         * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate
6634         CPool substructures.
6635         * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs.
6636         * jcf-dump.c: Include ggc.h.
6637
6638         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
6639
6640         * jcf.h (union cpool_entry): New.
6641         (struct CPool): Use gengtype to mark.  Change field 'data' to be
6642         an array of unions.
6643         (struct JCF): Use gengtype to mark.
6644         (CPOOL_UINT): Update for new cpool_entry type.
6645         (CPOOL_USHORT1): Likewise.
6646         (CPOOL_USHORT2): Likewise.
6647         (CPOOL_FINISH): Use GC to free cpool subfields.
6648         * parse.h (struct parser_ctxt): Mark field current_jcf.
6649         * lex.c (java_init_lex): Use GC to allocate struct JCF.
6650         * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type.
6651         (main_jcf): Use gengtype to mark.
6652         (ggc_mark_jcf): Delete.
6653         (get_constant): Update for new cpool_entry type.
6654         (give_name_to_class): Likewise.
6655         (get_class_constant): Likewise.
6656         (init_outgoing_cpool): Use GGC to allocate struct CPool.
6657         (java_parse_file): Use GGC to allocate struct JCF.
6658         (init_jcf_parse): Don't call ggc_add_root.
6659         * jcf-reader.c (jcf_parse_constant_pool): Update for new
6660         cpool_entry type.
6661         * java-tree.h (current_jcf): Use gengtype to mark.
6662         (CPOOL_UTF): Update for new cpool_entry type.
6663         (outgoing_cpool): Use gengtype to mark.
6664         (struct lang_type): GC struct JCF and struct CPool.
6665         * config-lang.in (gtfiles): Add jcf.h.
6666         * constants.c (find_tree_constant): New.
6667         (set_constant_entry): Allocate cpool subfields using GGC.  Update
6668         for new cpool_entry type.
6669         (find_constant1): Update for new cpool_entry type.
6670         (find_constant2): Likewise.
6671         (find_utf8_constant): Use find_tree_constant.
6672         (find_class_or_string_constant): Remove unnecessary cast to jword.
6673         Update for new cpool_entry type.
6674         (count_constant_pool_bytes): Update for new cpool_entry type.
6675         (write_constant_pool): Likewise.
6676         (alloc_name_constant): Use find_tree_constant.
6677         (build_constants_constructor): Update for new cpool_entry type.
6678
6679         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
6680
6681         * parse.y (mark_parser_ctxt): Delete.
6682         (goal): Don't use ggc_add_root.
6683         (create_new_parser_context): Use GC to allocate struct parser_ctxt.
6684         (java_pop_parser_context): Let GC free parser_ctxt.
6685         (java_parser_context_resume): Likewise.
6686         * parse.h (struct parser_ctxt): Use gengtype to mark.
6687         (ctxp): Likewise.
6688         (ctxp_for_generation): Likewise.
6689         * lex.h (struct java_lc_s): Mark for gengtype.
6690         (java_lexer): Rearrange for gengtype.
6691         * config-lang.in (gtfiles): Add lex.h, parse.h.
6692
6693 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6694
6695         * All Files: Remove PARAMS macro.
6696
6697         * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c,
6698         jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or
6699         `__STDC__' macros.
6700
6701         * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and
6702         VA_CLOSE.
6703
6704 2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
6705
6706         * Make-lang.in (java.install-common, java.uninstall,
6707         java.install-info, java.install-man): Prepend $(DESTDIR)
6708         to destination paths in all (un)installation commands.
6709         (java.install-common): Rewrite $(LN) command to support
6710         DESTDIR with "ln" as well as with "ln -s".
6711
6712 2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
6713
6714         * java-tree.h: Protect against multiple inclusion.
6715
6716 2003-01-07  Tom Tromey  <tromey@redhat.com>
6717
6718         * class.c (add_assume_compiled): Don't adjust parent if we're
6719         already at the root of tree.
6720
6721 2003-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6722
6723         * lang.c (dump_compound_expr): Prototype.
6724
6725 2003-01-03  Tom Tromey  <tromey@redhat.com>
6726
6727         Fix for PR java/8712:
6728         * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR,
6729         when simply checking against `null'.
6730
6731 2003-01-03  Tom Tromey  <tromey@redhat.com>
6732
6733         * gcj.texi (Standard Properties): Document http.proxyHost and
6734         http.proxyPort.
6735
6736         * gcj.texi (GNU Classpath Properties): Document new properties.
6737
6738 2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
6739
6740         * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf,
6741         java/lang-options.h, java/mangle.c, java/mangle_name.c,
6742         java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years.
6743
6744 2003-01-01  Steven Bosscher  <s.bosscher@student.tudelft.nl>
6745
6746         * Make-lang.in, boehm.c, buffer.c,
6747           buffer.h, builtins.c, class.c,
6748           config-lang.in, constants.c,
6749           convert.h, decl.c, except.c,
6750           expr.c, java-except.h,
6751           java-tree.h, javaop.def,
6752           jcf-parse.c, jcf-write.c,
6753           jv-scan.c, jvgenmain.c,
6754           jvspec.c, keyword.gperf,
6755           keyword.h, lang-options.h,
6756           lang-specs.h, lang.c, lex.c,
6757           lex.h, mangle.c, mangle_name.c,
6758           parse-scan.y, parse.h, parse.y,
6759           typeck.c, verify.c, xref.c,
6760           xref.h: Replace "GNU CC" with
6761           "GCC" in the copyright header.
6762
6763         * check-init.c, gjavah.c, javaop.h,
6764           jcf-depend.c, jcf-dump.c, jcf-io.c,
6765           jcf-path.c, jcf-reader.c, jcf.h,
6766           zextract.c, zipfile.h: These files are
6767           "part of GCC". Also say "GCC" not "GNU CC".
6768
6769 2002-12-30  DJ Delorie  <dj@redhat.com>
6770
6771         * Make-lang.in: Protect against texi2pod/pod2man failing.
6772
6773 2002-12-28  Joseph S. Myers  <jsm@polyomino.org.uk>
6774
6775         * gcj.texi: Use @copying.
6776
6777 2002-12-27  Mark Mitchell  <mark@codesourcery.com>
6778
6779         * gjavah.c (print_name_for_stub_or_jni): Adjust call to
6780         print_cxx_classname.
6781         (print_cxx_classname): Add add_scope parameter.
6782         (print_class_decls): Do not emit a semicolon after the extern
6783         "Java" block.
6784         (process_file): Adjust calls to print_cxx_classname.
6785
6786 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
6787
6788         * gcj.texi: Include Cover Texts in man page.
6789
6790 2002-12-23  Jeff Sturm  <jsturm@one-point.com>
6791
6792         * class.c (build_static_field_ref): Check FIELD_FINAL.
6793
6794         * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF
6795         instead of current_constant_pool_data_ref.
6796         * java-tree.h (current_constant_pool_data_ref): Undefine.
6797         (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove.
6798         * jcf-parse.c (init_outgoing_cpool): Don't initialize
6799         current_constant_pool_data_ref.
6800
6801         * except.c (prepare_eh_table_type ): Use DECL_NAME of class type,
6802         not build_internal_class_name.
6803
6804         * parse.y (patch_incomplete_class_ref): Always emit `class$' method.
6805         Use it when class ref isn't certain to be compiled.
6806
6807 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
6808
6809         * gcj.texi: Include gcc-common.texi.
6810         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on
6811         $(srcdir)/doc/include/gcc-common.texi.
6812
6813 2002-12-22  Anthony Green  <green@redhat.com>
6814
6815         * gcj.texi (Limitations): Add note about org.xml.sax and
6816         org.w3c.dom.
6817
6818 2002-12-20  Tom Tromey  <tromey@redhat.com>
6819
6820         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case
6821         where minimum case value is Integer.MIN_VALUE.
6822         Fixes PR java/8955.
6823
6824 2002-12-18  Andrew Haley  <aph@redhat.com>
6825
6826         * parse.y (patch_invoke): Force evaluation order when `check' is
6827         set.  For PR libgcj/8945.
6828
6829 2002-12-16  Mark Mitchell  <mark@codesourcery.com>
6830
6831         * gcj.texi: Change version number to 3.4.
6832
6833 2002-12-05  Ranjit Mathew <rmathew@hotmail.com>
6834         Andrew Haley <aph@redhat.com>
6835
6836         * parse.y (source_end_java_method): Remove custom encoding of line
6837         numbers for a function decl before passing it to the back end.
6838
6839 2002-12-03  Andrew Haley  <aph@redhat.com>
6840
6841         * class.c (make_class_data): New field, "chain".
6842         * decl.c (java_init_decl_processing): Likewise.
6843
6844 2002-12-02  Tom Tromey  <tromey@redhat.com>
6845
6846         For PR java/8740:
6847         * parse.y (do_resolve_class): Handle qualified name via
6848         recursion.
6849
6850 2002-11-30  Zack Weinberg  <zack@codesourcery.com>
6851
6852         * boehm.c, buffer.c, builtins.c, check-init.c, class.c,
6853         constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c,
6854         jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c,
6855         jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c,
6856         parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c:
6857         Include coretypes.h and tm.h.
6858         * Make-lang.in: Update dependencies.
6859
6860 2002-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6861
6862         * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant.
6863
6864 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
6865
6866         * jcf-reader.c: Don't expand JCF_readu4 inside the
6867         expansion of JCF_SKIP.
6868
6869 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
6870
6871         * jcf-reader.c: Don't expand JCF_readu4 inside the
6872         expansion of JCF_SKIP.
6873
6874 2002-11-22  Tom Tromey  <tromey@redhat.com>
6875
6876         * parse.y (patch_binop): Cast right hand side of shift expression
6877         to `int'.  Fixes PR java/8676.
6878
6879 2002-11-22  Ranjit Mathew <rmathew@hotmail.com>
6880             Andrew Haley <aph@redhat.com>
6881
6882         * gcc/java/jcf-write.c (write_classfile): Remove target
6883         class file, if it exists, before renaming the temporary
6884         class file to it.
6885
6886 2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>
6887
6888         * jvspec.c (lang_specific_spec_functions): New.
6889
6890 2002-11-18  Tom Tromey  <tromey@redhat.com>
6891
6892         Fix for PR java/7912:
6893         * expr.c (can_widen_reference_to): Allow cast of array to
6894         Cloneable or Serializable.
6895         * java-tree.h (java_lang_cloneable_identifier_node): Declare.
6896         (java_io_serializable_identifier_node): Likewise.
6897         * parse.y (java_lang_cloneable, java_io_serializable): Removed.
6898         (valid_ref_assignconv_cast_p): Use new identifier nodes.
6899         * lex.c (java_init_lex): Don't initialize java_lang_cloneable and
6900         java_io_serializable.
6901         * decl.c (java_init_decl_processing): Initialize
6902         java_lang_cloneable_identifier_node and
6903         java_io_serializable_identifier_node.
6904         (java_lang_cloneable_identifier_node): New global.
6905         (java_io_serializable_identifier_node): Likewise.
6906
6907 2002-11-14  Jens-Michael Hoffmann  <jensmh@gmx.de>
6908
6909         * buffer.c: Remove unnecessary casts.
6910         * check-init.c: Likewise.
6911         * class.c: Likewise.
6912         * constants.c: Likewise.
6913         * decl.c: Likewise.
6914         * except.c: Likewise.
6915         * gjavah.c: Likewise.
6916         * jcf-io.c: Likewise.
6917         * jcf-parse.c: Likewise.
6918         * jcf-path.c: Likewise.
6919         * jvspec.c: Likewise.
6920         * lang.c: Likewise.
6921         * lex.c: Likewise.
6922         * verify.c: Likewise.
6923
6924 2002-11-06  Tom Tromey  <tromey@redhat.com>
6925
6926         * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in
6927         a JNI header.
6928
6929 2002-11-05  Tom Tromey  <tromey@redhat.com>
6930
6931         Fix for PR java/6388.
6932         * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while.
6933         * java-tree.h (enum java_tree_index): New values
6934         JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE.
6935         (decimal_int_max, decimal_long_max): New defines.
6936         * lex.c (yylex): Rewrote range checking.  Sign extend literals.
6937         (error_if_numeric_overflow): Rewrote range checking.
6938         * decl.c (java_init_decl_processing): Initialize decimal_int_max,
6939         decimal_long_max.
6940
6941 2002-11-02  Tom Tromey  <tromey@redhat.com>
6942
6943         * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE.
6944
6945         * class.c (make_method_value): Put class name, not signature, into
6946         `throws' field.  For PR java/8415.
6947
6948 2002-10-24  Tom Tromey  <tromey@redhat.com>
6949
6950         * gcj.texi (Invoking gij): Document --showversion.
6951         (Standard Properties): java.library.path now set.
6952
6953 2002-10-23  Tom Tromey  <tromey@redhat.com>
6954
6955         * gjavah.c (decode_signature_piece): In JNI mode, print
6956         `jobjectArray' when array depth is nonzero.
6957         Fixes PR java/8296.
6958
6959 2002-10-15  Andrew Haley  <aph@redhat.com>
6960
6961         * parse.y (patch_invoke): Call force_evaluation_order on a static
6962         arg list.
6963         (resolve_qualified_expression_name): Call force_evaluation_order
6964         on a arg list that is part of a Qualified Expression Name.
6965
6966         * lang.c (dump_compound_expr): New.
6967         (java_dump_tree): New.
6968
6969 2002-10-20  Ranjit Mathew <rmathew@hotmail.com>
6970
6971         * gcj.texi: Added item describing the GCJ runtime property
6972         "gnu.gcj.progname".
6973
6974 2002-10-15  Richard Henderson  <rth@redhat.com>
6975
6976         * jcf-parse.c (get_constant): Fix type warning.
6977
6978 2002-10-15  Andrew Haley  <aph@redhat.com>
6979
6980         * java-tree.h (java_inlining_merge_static_initializers): Declare.
6981         (java_inlining_map_static_initializers): Declare.
6982
6983 2002-10-14  Andrew Haley  <aph@redhat.com>
6984
6985         * tree-inline.c (remap_block): All local class initialization
6986         flags go in the outermost scope.
6987         (expand_call_inline): Call java_inlining_map_static_initializers.
6988         (expand_call_inline): Call java_inlining_merge_static_initializers.
6989         * java/lang.c (merge_init_test_initialization): New.
6990         (java_inlining_merge_static_initializers): New.
6991         (inline_init_test_initialization): New.
6992         (java_inlining_map_static_initializers): New.
6993
6994 2002-10-11  Mark Wielaard  <mark@klomp.org>
6995
6996         * gcj.texi (Compatibility): Add Limitations and Extensions section.
6997
6998 2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6999
7000         * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.
7001
7002 2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7003
7004         * parse.y (merge_string_cste): Add parentheses around & within |.
7005
7006 2002-10-08  Tom Tromey  <tromey@redhat.com>
7007
7008         * parse.y (variable_declarator_id): Simplify error path for
7009         array declarator error.  For PR java/8003.
7010
7011 2002-10-08  Zack Weinberg  <zack@codesourcery.com>
7012
7013         * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with
7014         bug_report_url.
7015
7016 2002-10-08  Andrew Haley  <aph@redhat.com>
7017
7018         * parse.y (attach_init_test_initialization_flags): Check for
7019         error_mark_node.
7020
7021 2002-10-07  Anthony Green  <green@redhat.com>
7022
7023         * parse.y (merge_string_cste): Fix bug in string concatenation.
7024
7025 2002-10-03  Michael Koch  <konqueror@gmx.de>
7026
7027         * gcj.texi (Standard properties):
7028         Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit.
7029
7030 2002-10-02  Roger Sayle  <roger@eyesopen.com>
7031
7032         PR optimization/6627
7033         * lang.c (java_init): If storing the vbit in function
7034         pointers, ensure that force_align_functions_log is atleast
7035         one to aid compatability with g++ vtables.
7036
7037 2002-10-01  Nathan Sidwell  <nathan@codesourcery.com>
7038
7039         * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
7040         foul of type-based aliasing.
7041
7042 2002-09-30  Anthony Green  <green@redhat.com>
7043
7044         * gcj.texi (Invoking jv-scan): Fix texinfo.
7045
7046 2002-09-28  Anthony Green  <green@redhat.com>
7047
7048         * gcj.texi (Invoking jv-scan): Add --no-assert documentation.
7049         (Code Generation): Add -fno-assert documentation.
7050         * jv-scan.c (flag_assert): New global.
7051         (options): Add assert option.
7052         (help): Add --no-assert documentation.
7053         * parse-scan.y (flag_assert): New global.
7054         * lang.c (lang_f_options): Add -fassert/-fno-assert support.
7055         (flag_assert): New global.
7056         * java-tree.h (flag_assert): New global.
7057         * lex.c (java_lex): Obey flag_assert.
7058         * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when
7059         calling cc1.
7060
7061 2002-09-26  Andrew Haley  <aph@redhat.com>
7062
7063         * expr.c (build_java_array_length_access): Check for null pointer.
7064         * expr.c (expand_java_arrayload): Likewise.
7065
7066 2002-09-21  Richard Henderson  <rth@redhat.com>
7067
7068         * jcf-parse.c (get_constant): Decode from IEEE no matter
7069         what the target format.
7070
7071 2002-09-20  Kazu Hirata  <kazu@cs.umass.edu>
7072
7073         * ChangeLog: Follow spelling conventions.
7074         * class.c: Likewise.
7075         * decl.c: Likewise.
7076         * expr.c: Likewise.
7077         * gjavah.c: Likewise.
7078         * java-tree.h: Likewise.
7079         * jcf-dump.c: Likewise.
7080         * jcf-parse.c: Likewise.
7081         * jvspec.c: Likewise.
7082         * lang.c: Likewise.
7083         * mangle.c: Likewise.
7084         * parse.y: Likewise.
7085
7086 2002-09-17  Tom Tromey  <tromey@redhat.com>
7087
7088         * lex.c (java_read_unicode_collapsing_terminators): Handle case
7089         where \r appears at EOF.  Fixes PR java/7950.
7090
7091 2002-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7092
7093         * jvspec.c (lang_specific_driver): Remove unused variable.
7094
7095 2002-09-16  Geoffrey Keating  <geoffk@apple.com>
7096
7097         * java-tree.h (union lang_tree_node): Add chain_next option.
7098
7099 2002-09-16  Richard Henderson  <rth@redhat.com>
7100
7101         * jcf-parse.c (get_constant): Runtime check for IEEE format;
7102         use new real.h interface.
7103         * jcf-write.c (find_constant_index): Use new real.h interface.
7104         * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.
7105
7106 2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>
7107
7108         * lang.c: Follow spelling conventions.
7109
7110 2002-09-11  Per Bothner  <per@bothner.com>
7111
7112         * parse.y (fold_constant_for_init):  If a VAR_DECL, convert numerical
7113         constant to the type of the field.
7114         (java_complete_tree):  Remove now-redundant code.
7115
7116         * parse.y (fold_constant_for_init):  'null' is not a constant expr.
7117
7118 2002-09-03  Jesse Rosenstock  <jmr@ugcs.caltech.edu>
7119
7120         For PR java/5794:
7121         * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the
7122         return label if a ret instruction for the jsr has been reached.
7123
7124 2002-09-09  Ranjit Mathew  <rmathew@hotmail.com>
7125
7126         * parse.y (DIR_SEPARATOR): Don't define.
7127         (check_class_interface_creation): Use IS_DIR_SEPARATOR.
7128
7129 2002-08-28  Andrew Haley  <aph@redhat.com>
7130
7131         * verify.c (verify_jvm_instructions): Allow exception handler
7132         inside code that is being protected, but generate a warning.
7133         * except.c (link_handler): Initialize `expanded' in new eh_range.
7134         (binding_depth, is_class_level, current_pc): Declare extern.
7135
7136 2002-09-01  Mark Wielaard <mark@klomp.org>
7137
7138         * gcj.texi: Add chapter about system properties.
7139         Fixed some typos.
7140
7141 2002-08-26  Tom Tromey  <tromey@redhat.com>
7142
7143         * parse.y (try_builtin_assignconv): Allow narrowing primitive
7144         conversion if RHS_TYPE is byte, short, or char.
7145
7146 2002-08-22  Tom Tromey  <tromey@redhat.com>
7147
7148         * gcj.texi (Invoking gij): Document -cp and -classpath.
7149
7150 2002-08-21  Tom Tromey  <tromey@redhat.com>
7151
7152         * Make-lang.in (java/jcf-path.o): Use $(datadir), not
7153         $(prefix)/share.  For PR libgcj/7633.
7154
7155         For PR java/6005 and PR java/7611:
7156         * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define.
7157         (java_can_use_bit_fields_p): New function.
7158
7159 2002-08-16  Tom Tromey  <tromey@redhat.com>
7160
7161         * gcj.texi (Class Initialization): Mention class initialization of
7162         arrays.
7163
7164 2002-07-30  Andrew Haley  <aph@cambridge.redhat.com>
7165
7166         * Make-lang.in (java-tree-inline.o): New.
7167         (JAVA_OBJS): Add java-tree-inline.o.
7168         * parse.y (source_end_java_method): Call java_optimize_inline.
7169         (java_expand_method_bodies): Save method's tree in
7170         DECL_SAVED_TREE.
7171         (add_stmt_to_compound): Keep track of the number of statments.
7172         * lang.c (java_init): Enable flag_inline_trees.
7173         (java_post_options): If flag_inline_functions is on, enable
7174         flag_inline_trees instread.
7175         (decl_constant_value): New.
7176         (java_tree_inlining_walk_subtrees): New.
7177         * java-tree.h (DECL_NUM_STMTS): New macro.
7178         (java_optimize_inline): Declare.
7179         * expr.c (java_expand_expr): Allow a BLOCK to return a value.
7180         Handle a LABEL_EXPR.
7181         * decl.c (build_result_decl): If we already have a DECL_RESULT
7182         don't make another.
7183         (dump_function): New.
7184         (java_optimize_inline): New.
7185         (dump_function): New.
7186
7187 2002-08-13  Jesse Rosenstock  <jmr@fulcrummicro.com>
7188
7189         For PR java/7483:
7190         * parse.y (build_assertion): Invert return from
7191         desiredAssertionStatus.
7192
7193 2002-08-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7194
7195         * jcf-write.c (get_access_flags): Return correct access flags for
7196         private and protected inner classes.
7197
7198 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
7199
7200         * java/Make-lang.in (java.mostlyclean): Remove coverage files.
7201
7202 2002-08-05  Geoffrey Keating  <geoffk@redhat.com>
7203
7204         * mangle_name.c: Don't include obstack.h twice.
7205         * xref.c: Don't include obstack.h.
7206
7207 2002-08-04  Geoffrey Keating  <geoffk@redhat.com>
7208
7209         * class.c: (permanent_obstack): Delete declaration.
7210         * constants.c: (permanent_obstack): Delete declaration.
7211         * except.c: (permanent_obstack): Delete declaration.
7212         * expr.c: (permanent_obstack): Delete declaration.
7213         * jcf-parse.c: (permanent_obstack): Delete declaration.
7214         (saveable_obstack): Delete declaration.
7215         * parse.h: (permanent_obstack): Delete declaration.
7216         * typeck.c: (permanent_obstack): Delete declaration.
7217
7218 2002-08-04  Joseph S. Myers  <jsm@polyomino.org.uk>
7219
7220         * gcj.texi (version-gcc): Increase to 3.3.
7221
7222 2002-07-22  Tom Tromey  <tromey@redhat.com>
7223
7224         * lex.c (java_lex): Check for `e' or `E' after 0.
7225
7226 2002-07-21  Richard Henderson  <rth@redhat.com>
7227
7228         * lang.c (java_unsafe_for_reeval): New.
7229         (LANG_HOOKS_UNSAFE_FOR_REEVAL): New.
7230
7231 2002-07-21  Neil Booth  <neil@daikokuya.co.uk>
7232
7233         * jcf-path.c (GET_ENV_PATH_LIST): Remove.
7234         (jcf_path_init): Use GET_ENVIRONMENT.
7235
7236 2002-07-10  Roger Sayle  <roger@eyesopen.com>
7237             Zack Weinberg <zack@codesourcery.com>
7238
7239         * builtins.c (initialize_builtins): Remove defines that
7240         handled C/C++ specific junk hereby removed from builtins.def.
7241
7242 2002-07-07  Neil Booth  <neil@daikokuya.co.uk>
7243
7244         * lang.c (java_post_options): Update prototype.
7245
7246 2002-07-05  Roger Sayle  <roger@eyesopen.com>
7247
7248         * builtins.c (initialize_builtins): Ignore the additional
7249         parameter to DEF_BUILTIN.  Handle more C/C++ specific junk in
7250         the builtins.def file.
7251
7252 2002-07-01  Tom Tromey  <tromey@redhat.com>
7253
7254         For PR libgcj/7073:
7255         * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE
7256         specially.
7257
7258 2002-07-01  Roger Sayle  <roger@eyesopen.com>
7259
7260         * java/decl.c (builtin_function): Accept additional parameter.
7261         (java_init_decl_processing): Pass an additional NULL_TREE
7262         argument to builtin_function.
7263
7264 2002-06-29  T.J. Mather  <tjmather@maxmind.com>
7265
7266         * gcj.texi: Fixed gcj invocation example so that it compiles.
7267
7268 2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7269
7270         * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11.
7271         * parse.y (mark_parser_ctxt): Likewise.
7272         (check_modifiers, declare_local_variables): Avoid incorrect
7273         hardcoded constant 10.
7274
7275         * lex.c (java_read_char): Avoid "comparison is always true"
7276         warning.
7277
7278 2002-06-25  Andreas Schwab  <schwab@suse.de>
7279
7280         * expr.c (JSR): Avoid undefined operation on PC.
7281
7282 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7283
7284         * decl.c (clear_binding_level): Const-ify.
7285
7286 2002-06-13  Akim Demaille  <akim@epita.fr>
7287
7288         * parse.y (class_declaration, interface_declaration): Make sure
7289         all their rules have an action, in order to avoid meaningless `$$
7290         = $1' and their type clashes.
7291
7292 2002-06-11  Tom Tromey  <tromey@redhat.com>
7293
7294         * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC.
7295         * parse-scan.y (statement_without_trailing_substatement): Added
7296         assert_statement.
7297         (assert_statement): New rule.
7298         * java-tree.h (struct lang_type) [assertions]: New field.
7299         (TYPE_USES_ASSERTIONS): New macro.
7300         (CLASS_USES_ASSERTIONS): Likewise.
7301         (FIELD_SYNTHETIC): New define.
7302         * lex.c (java_lval;): Added ASSERT_TK.
7303         * parse.y (ASSERT_TK): Added.
7304         (statement_without_trailing_substatement): Added assert_statement.
7305         (assert_statement): New rule.
7306         (build_assertion): New function.
7307         (maybe_generate_pre_expand_clinit): Create and initialize
7308         $assertionsDisabled.
7309         (lookup_package_type): Removed decl.
7310         * keyword.h: Rebuilt.
7311         * keyword.gperf (assert): New token.
7312
7313 2002-06-10  Akim Demaille  <akim@epita.fr>
7314
7315         * parse.y (interface_type_list, class_member_declaration)
7316         (unary_expression_not_plus_minus): Remove duplicate %type.
7317         Whitespace changes.
7318
7319 2002-06-09  Tom Tromey  <tromey@redhat.com>
7320
7321         * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H.
7322
7323         * parse.y (method_header): Give error message in all cases.
7324         Fixes PR java/6865.
7325
7326 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7327
7328         Don't use RTL inlining. Fix for PR java/6820.
7329         * lang.c (LANG_HOOKS_POST_OPTIONS): Define.
7330         (flag_really_inline): New.
7331         (java_decode_option): Set flag_really_inline if -finline-functions
7332         is seen.
7333         (java_post_options): New function. Turn off inlining unless
7334         flag_really_inline is set.
7335
7336 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7337
7338         * gjavah.c (throwable_p): Accept argument as either a classname or
7339         signature fragment. Create null-terminated classname string for super
7340         when calling itself recursively.
7341         (decode_signature_piece): Skip first character from class name
7342         signature when calling throwable_p.
7343
7344 2002-06-08  H.J. Lu  (hjl@gnu.org)
7345
7346         * jcf-path.c (jcf_path_init): Allocate 1 more byte for string.
7347
7348 2002-06-04  Tom Tromey  <tromey@redhat.com>
7349
7350         * jcf-write.c (perform_relocations): Optmize a goto to a goto.
7351
7352 2002-06-04  Michael Koch  <konqueror@gmx.de>
7353
7354         * gcj.texi (Input Options): Fixed typo.
7355
7356 2002-06-04  Zack Weinberg  <zack@codesourcery.com>
7357
7358         * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y,
7359         typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks,
7360         all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE,
7361         and all now-pointless local variables.  Rename other local
7362         variables to reflect their not being handles.
7363
7364         * java-tree.h, jcf-dump.c, jcf-io.c: Remove all
7365         #if JCF_USE_STDIO blocks.
7366
7367         * parse.y: Add missing semicolon at end of rule.
7368
7369 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
7370
7371         * check-init.c (attach_initialized_static_class): Delete, unused.
7372         * parse.y: Use htab_t instead of struct hashtable, update
7373         all uses.
7374         * java-tree.h: Include hashtab.h instead of hash.h.
7375         (struct lang_decl_func): Use htab_t, set up for gengtype.
7376         (struct init_test_hash_entry): Delete.
7377         (struct treetreehash_entry): New.
7378         (java_treetreehash_find): New
7379         (java_treetreehash_new): New prototype.
7380         (java_treetreehash_create): New prototype.
7381         (java_mark_tree): Delete prototype.
7382         (java_hash_hash_tree_node): Delete prototype.
7383         (java_hash_compare_tree_node): Delete prototype.
7384         (attach_initialized_static_class): Delete prototype.
7385         * expr.c (build_class_init): Update to use java_treetreehash
7386         functions.
7387         (java_expand_expr): Update to use htab_t.
7388         (emit_init_test_initialization): Likewise.
7389         * decl.c (java_mark_tree): Delete.
7390         * class.c (init_test_hash_newfunc): Delete.
7391         (java_hash_hash_tree_node): Delete.
7392         (java_hash_compare_tree_node): Delete.
7393         (add_method_1): Update to use java_treetreehash functions.
7394         (JAVA_TREEHASHHASH_H): New macro.
7395         (java_treetreehash_hash): New function.
7396         (java_treetreehash_compare): New function.
7397         (java_treetreehash_find): New function.
7398         (java_treetreehash_new): New function.
7399         (java_treetreehash_create): New function.
7400         * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H.
7401
7402         * Make-lang.in (java/parse.o): Depend on debug.h.
7403         * java-tree.h (struct lang_identifier): Use gengtype.
7404         (union lang_tree_node): New.
7405         (struct lang_decl_func): Use gengtype.
7406         (struct lang_decl_var): Likewise.
7407         (struct lang_decl): Likewise.
7408         * parse.y: Include debug.h.
7409         * lang.c (LANG_HOOKS_MARK_TREE): Delete.
7410
7411         * lang.c (struct language_function): New dummy structure.
7412
7413         * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set
7414         descriminator for DECL_LANG_SPECIFIC.
7415         (struct lang_decl_func): Rename from struct lang_decl.
7416         (enum lang_decl_desc): New.
7417         (struct lang_decl): Make it a union.  Update all the accessor macros.
7418         (struct lang_type): Use gengtype.
7419         * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC.
7420         * decl.c (java_dup_lang_specific_decl): All lang_decl structures
7421         are now the same size.
7422         (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC;
7423         use discriminator to mark DECL_LANG_SPECIFIC.
7424
7425         * Make-lang.in (gt-java-builtins.h): New rule.
7426         (java/builtins.o): Add dependency on gt-<filename>.h.
7427         * builtins.c: Use gengtype for roots.
7428         (union string_or_tree): Use gengtype.
7429         (struct builtin_record): Use gengtype.
7430         * config-lang.in (gtfiles): Add builtins.c.
7431
7432         * Make-lang.in (gt-java-class.h, gt-java-constants.h,
7433         gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h,
7434         gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h,
7435         gt-java-parse.h, gtype-java.h): Add rules to generate.
7436         (parse.o): Add dependency on gt-java-parse.h, gt-java.h.
7437         (class.o): Add dependency on gt-*.h.
7438         (constants.o): Likewise.
7439         (decl.o): Likewise.
7440         (expr.o): Likewise.
7441         (jcf-parse.o): Likewise.
7442         (jcf-write.o): Likewise.
7443         (lang.o): Likewise.
7444         * config-lang.in (gtfiles): New.
7445         * class.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7446         * constants.c: Replace uses of ggc_add_* with GTY markers.
7447         Include gt-*.h.
7448         * decl.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7449         * expr.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7450         * java-tree.h: Replace uses of ggc_add_* with GTY markers.
7451         * jcf-parse.c: Replace uses of ggc_add_* with GTY markers.
7452         Include gt-*.h.
7453         * jcf-write.c: Replace uses of ggc_add_* with GTY markers.
7454         Include gt-*.h.
7455         * lang.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7456         * mangle.c: Replace uses of ggc_add_* with GTY markers.  Include
7457         gt-*.h.
7458         * parse.y: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7459         Include gtype-java.h.
7460
7461 2002-06-02  Tom Tromey  <tromey@redhat.com>
7462
7463         Fix for PR java/5913:
7464         * parse.y (patch_binop): Call patch_string on op1.
7465
7466 2002-06-02  Tom Tromey  <tromey@redhat.com>
7467
7468         Fix for PR java/1343, PR java/6336:
7469         * parse.y (make_nested_class_name): Remove extraneous `else'; fix
7470         formatting.  Changed return type.
7471         (anonymous_class_counter): Moved to top of file.
7472         (maybe_make_nested_class_name): Append number to class name for
7473         function-local classes.
7474
7475 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
7476
7477         * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h.
7478         * Make-lang.in: Update dependency lists.
7479
7480 2002-05-18  Mark Mitchell  <mark@codesourcery.com>
7481
7482         * gjavah.c (throwable_p): Do not free the name of the class after
7483         passing it to find_class.
7484         * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition.
7485         * jcf-io.c (dirent.h): Include it.
7486         (fnmatch.h): Likewise.
7487         (compare_path): New function.
7488         (java_or_class_file): Likewise.
7489         (memoized_dirlist_entry): New type.
7490         (memoized_dirlist_lookup_eq): New function.
7491         (memoized_dirlists): New variable.
7492         (caching_stat): New function.
7493         (memoized_class_lookup_eq): New function.
7494         (memoized_class_lookups): Likewise.
7495         (find_class): Use memoized_class_lookups and caching_stat.
7496         * jcf.h (JCF_USE_SCANDIR): Define.
7497         * parse.y (java_expand_classes): Write the class files in reverse
7498         order.
7499
7500 2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7501
7502         * Make-lang.in: Allow for PWDCMD to override hardcoded pwd.
7503
7504 2002-05-13  Mark Mitchell  <mark@codesourcery.com>
7505
7506         * jcf-write.c (write_classfile): Unlink the temporary file if it
7507         cannot be renamed.  Use concat to build up the name of the
7508         temporary file.
7509
7510 2002-05-08  Mark Mitchell  <mark@codesourcery.com>
7511
7512         * jcf-write.c (write_classfile): Write the file to a
7513         temporary file and then rename it.
7514
7515 2002-05-07  Tom Tromey  <tromey@redhat.com>
7516
7517         * gjavah.c (throwable_p): Use xstrdup, not strdup.
7518
7519         Fix for PR java/1200:
7520         * gjavah.c (throwable_p): New function.
7521         (decode_signature_piece): Use it.  A `WeakReference' isn't the
7522         same as a `jweak'.
7523         Include hashtab.h.
7524         (gcjh_streq): New function.
7525
7526 2002-05-07  Andreas Jaeger  <aj@suse.de>
7527
7528         * parse.y (finish_for_loop): Fix if statement.
7529
7530 2002-05-06  Tom Tromey  <tromey@redhat.com>
7531
7532         Fix for PR java/5941:
7533         * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for
7534         loop update expression.
7535         (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR.
7536         * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro.
7537
7538 2002-05-04  Mark Wielaard  <mark@klomp.org>
7539
7540         For PR java/6519:
7541         * parse.y (build_string_concatenation): Return just op1 only when op2
7542         is null and op1 is a STRING_CST, otherwise always construct a
7543         StringBuffer.
7544
7545 2002-04-27  Tom Tromey  <tromey@redhat.com>
7546
7547         For PR java/6382:
7548         * parse.y (string_convert_int_cst): New function.
7549         (merge_string_cste): Use it.
7550
7551 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
7552
7553         * java-tree.h (java_parse_file): Update.
7554         (java_set_yydebug): Remove.
7555         * jcf-parse.c (yydebug): Remove.
7556         (java_set_yydebug): Die.
7557         (java_parse_file): Update.
7558         * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
7559
7560 2002-04-24  Tom Tromey  <tromey@redhat.com>
7561
7562         For PR java/6425:
7563         * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose
7564         EXPR_WFL_QUALIFICATION of qual_wfl.
7565
7566 2002-04-23  Per Bothner  <per@bothner.com>
7567
7568         * expr.c (PRE_JSR):  Call NOTE_LABEL for return address.
7569         * java-tree.h (BCODE_RETURN_TARGET):  Removed - never set.
7570         (BCODE_TARGET):  Remove BCODE_RETURN_TARGET.
7571
7572 2002-04-23  Tom Tromey  <tromey@redhat.com>
7573
7574         For PR java/6314:
7575         * jvspec.c (lang_specific_driver): Use --resource, not -R.  Also
7576         recognize `-fcompile-resource='.
7577         * gcj.texi (Invoking gcj): Use --resource, not -R.  Expanded text
7578         a bit.
7579
7580 2002-04-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
7581
7582         * jcf-parse.c: (yyparse): Don't prepend "./" to relative
7583         paths. Fixes PR java/2791.
7584
7585 2002-04-19  Andrew Haley  <aph@redhat.com>
7586
7587         * jcf-write.c (push_long_const): lo, hi: New variables.
7588         Use rshift_double to extract the high part of a 64-bit long.
7589         Use WORD_TO_INT to extract the low part.
7590
7591         * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned
7592         HOST_WIDE_INT for num.  Use JPOOL_UINT to get it.
7593         CONSTANT_Double: Use JPOOL_UINT to get both halve of a double.
7594
7595 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
7596
7597         * typeck.c (incomplete_type_error): Remove.
7598
7599 2002-04-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7600
7601         * class.c (make_class_data): Set DECL_ALIGN on static class data,
7602         for hash synchronization.
7603         * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
7604         * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
7605         class_type_node.
7606
7607 2002-04-16  Mark Wielaard  <mark@klomp.org>
7608
7609         * jcf-write.c (generate_bytecode_insns): Only write const_0 if not
7610         negative zero.
7611
7612 2002-04-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7613
7614         Fix for PR java/6294:
7615         * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner
7616         interfaces.
7617
7618 2002-04-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7619
7620         Fix for PR java/6085:
7621         * parse.y (patch_method_invocation): Always use build_access_to_thisn
7622         to get enclosing "this" argument for inner-class constructor
7623         invocation. Pass correct arguments to build_access_to_thisn.
7624
7625 2002-04-10  Andreas Jaeger  <aj@suse.de>
7626
7627         * gcj.texi (Input Options): Fix extdirs patch.
7628
7629 2002-04-10  Anthony Green  <green@redhat.com>
7630
7631         * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration.
7632
7633 2002-04-09  Anthony Green  <green@redhat.com>
7634
7635         * gcj.texi (Input Options): Add --extdirs documentation.
7636         * jcf-dump.c (OPT_extdirs): New macro.
7637         (options): Add extdirs option.
7638         (help): Describe --extdirs.
7639         (main): Handle OPT_extdirs.
7640         * gjavah.c (OPT_extdirs): New macro.
7641         (options): Add extdirs option.
7642         (help): Describe --extdirs.
7643         (main): Handle OPT_extdirs.
7644         * jcf-path.c (jcf_path_init): Add extdirs support.
7645         (jcf_path_extdirs_arg): New function.
7646         (extensions): New variable to hold extensions path entries.
7647         * jvspec.c: Remove -fextdirs= when compiling main().
7648         * lang.c (java_decode_option): Handle -fextdirs=.
7649         * jcf.h (jcf_path_extdirs_arg): Declare new function.
7650         * Make-lang.in: Compile jcf-path with version info for use in
7651         identifying the appropriate libgcj.jar.
7652
7653 2002-04-08  Tom Tromey  <tromey@redhat.com>
7654
7655         For PR libgcj/5303:
7656         * .cvsignore: Added rmic.1 and rmiregistry.1.
7657         * gcj.texi (Top): Link to new nodes.
7658         (Invoking rmic): New node.
7659         (Invoking rmiregistry): Likewise.
7660         * Make-lang.in (java.generated-manpages): Added rmic.1 and
7661         rmiregistry.1.
7662         (java.maintainer-clean): Likewise.
7663         ($(srcdir)/java/rmic.1): New target.
7664         ($(srcdir)/java/rmiregistry.1): Likewise.
7665         (java.install-man): Handle rmic.1 and rmiregistry.1.
7666
7667 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7668
7669         * gcj.texi (Invocation): Update JvAttachCurrentThread documentation.
7670         Add note about handling uncaught exceptions. Add an exception handler
7671         to example.
7672
7673 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7674
7675         * parse.y (resolve_qualified_expression_name): Clear "from_super" flag
7676         after using it to patch CALL_EXPR.
7677
7678 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7679
7680         * gcj.texi (Invocation): Document CNI invocation API.
7681
7682 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
7683
7684         * expr.c (truthvalue_conversion): Rename.  Update.
7685         (expand_compare): Update.
7686         * java-tree.h (java_truthvalue_conversion): New.
7687         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
7688
7689 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
7690
7691         * java-tree.h (java_mark_addressable): New.
7692         * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
7693         * typeck.c (mark_addressable): Rename, update.
7694
7695 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
7696
7697         * expr.c (build_java_binop): Update.
7698         * java-tree.h (java_signed_type, java_unsigned_type,
7699         java_signed_or_unsigned_type): Update.
7700         * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
7701         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
7702         * parse.y (patch_binop): Update.
7703         * typeck.c (signed_or_unsigned_type, unsigned_type,
7704         signed_type): Update.
7705
7706 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
7707
7708         * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
7709         (java_dummy_print): Remove.
7710         (lang_print_error): Rename.  Exit early if inhibiting output.
7711         (inhibit_error_printing_function): New.
7712         (java_init): Don't set hook.
7713         (lang_init_source): Use new boolean.
7714
7715 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
7716
7717         * parse.y (do_resolve_class): Fix infinite recursion.
7718
7719 2002-03-29  Tom Tromey  <tromey@redhat.com>
7720
7721         * parse.y (check_inner_circular_reference): Ignore incomplete
7722         types.
7723
7724 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
7725
7726         * Make-lang.in (builtins.o): Update.
7727         * boehm.c (get_boehm_type_descriptor): Update.
7728         * builtins.c: Include langhooks.h.
7729         * decl.c (java_init_decl_processing): Update.
7730         * java-tree.h (java_type_for_mode, java_type_for_size): New.
7731         * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
7732         Redefine.
7733         * typeck.c (type_for_mode, type_for_size): Update.
7734
7735 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
7736
7737         * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING.
7738
7739 2002-03-28  Tom Tromey  <tromey@redhat.com>
7740
7741         * except.c (expand_end_java_handler): If the handler type is NULL,
7742         use java.lang.Throwable.  Fixes PR java/5986.
7743
7744 2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
7745
7746         Fix for PR java/4715:
7747         * jcf-parse.c (parse_source_file_3): New function.
7748         (read_class): Call it.
7749         (java_parse_file): Likewise.
7750
7751 2002-03-28  Jan Hubicka  <jh@suse.cz>
7752
7753         * java/lang.c (java_init_options): Set flag_trapping_math to 0.
7754
7755 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7756
7757         * parse.y (resolve_package): Initialize "decl".
7758         (lookup_package_type): Remove unused function.
7759
7760 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7761
7762         Fix for PR java/5993:
7763         * parse.y (resolve_package): Return the decl if resolution was
7764         successful. Don't special case "java.lang" and "java.lang.reflect"
7765         packages. Set type_name to the merged identifier.
7766         (resolved_qualified_expression_name): Print error using "name" if
7767         resolve_package returns NULL_TREE.
7768
7769 2002-03-27  Tom Tromey  <tromey@redhat.com>
7770
7771         * expr.c (expand_invoke): Don't generate null pointer check if
7772         we're calling <init>.
7773
7774 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
7775
7776         * expr.c (java_lang_expand_expr): Rename java_expand_expr,
7777         fix prototype.
7778         * java-tree.h (java_lang_expand_expr): Similarly.
7779         * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
7780         (java_init): Don't set hook.
7781
7782 2002-03-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7783
7784         Fix for PR java/5850:
7785         * parse.y (lookup_field_wrapper): Call itself recursively for enclosing
7786         context if field was not found in the current scope.
7787         * expr.c (lookup_field): Don't look in enclosing contexts.
7788
7789 2002-03-26  Tom Tromey  <tromey@redhat.com>
7790
7791         Fix for PR java/5942:
7792         * parse.y (init_src_parse): Added sanity check.
7793         * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12
7794         elements, not 11.
7795
7796 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
7797
7798         * decl.c (lang_mark_tree): Rename java_mark_tree.
7799         * java-tree.h (java_mark_tree): New.
7800         * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
7801
7802 2002-03-25  Zack Weinberg  <zack@codesourcery.com>
7803
7804         * lex.c: Change java_perform_atof to take normal parameters
7805         instead of a pointer to a parameter block.  Call it directly
7806         from java_lex.
7807
7808 2002-03-22  Mark Wielaard  <mark@klomp.org>
7809
7810         Fix for PR java/5368:
7811         * parse.y (resolve_qualified_expression_name): Use decl not field_decl
7812         when printing error message.
7813
7814 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
7815
7816         * decl.c (maybe_build_cleanup): Remove.
7817
7818 2002-03-22  Tom Tromey  <tromey@redhat.com>
7819
7820         Andrew Haley  <aph@cambridge.redhat.com>
7821
7822         * expr.c (build_field_ref): Don't build a check if the field is a
7823         member of `this'.
7824
7825 2002-03-21  Eric Blake  <ebb9@email.byu.edu>
7826
7827         Fix for PR java/6026:
7828         * lex.c (java_lex): Fix parsing of consecutive floats.
7829
7830 2002-03-21  Tom Tromey  <tromey@redhat.com>
7831
7832         * parse.y (build_access_to_thisn): Stop when FROM is not an inner
7833         class.
7834
7835 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
7836
7837         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
7838         insert_block, getdecls, kept_level_p, global_bindings_p): New.
7839
7840 2002-03-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
7841
7842         * gcj.texi: @code{gcj} becomes @command{gcj}.
7843         @code{gcc} becomes @command{gcc}.
7844         GcjRaw changed to gnu.gcc.RawData.
7845
7846 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
7847
7848         * decl.c (start_java_method): Use new hook.
7849         * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
7850         (java_init): Remove old hook.
7851
7852 2002-03-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
7853
7854         * builtins.c (define_builtin): Do nothing if `type' is null.
7855         Fixes PR java/5876.
7856
7857 2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7858
7859         * parse.y (parser_check_super_interface): Fix error message
7860         grammar/order.
7861
7862 2002-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7863
7864         * jcf-parse.c (get_constant): Delete unused variables.
7865
7866 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
7867
7868         * java-tree.h (java_parse_file): New.
7869         * jcf-parse.c (yyparse): Rename java_parse_file.
7870         * lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
7871
7872 2002-03-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7873
7874         * parse.y (craft_constructor): Return the constructor decl.
7875         (java_expand_classes): Update comments.
7876         (lookup_method_invoke): Call fix_constructors immediately for
7877         anonymous class. Fixes PR java/5935.
7878
7879 2002-03-15  Anthony Green  <green@redhat.com>
7880
7881         * jcf-parse.c (yyparse): Don't emit class registration
7882         constructor when compiling resource files.
7883
7884 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7885
7886         * lang.c (java_tree_code_type, java_tree_code_length,
7887         tree_code_name): Delete.
7888         (tree_code_type, tree_code_length, tree_code_name): Define.
7889         (java_init): Don't try to copy into the various tree_code
7890         arrays.
7891
7892 2002-03-12  Tom Tromey  <tromey@redhat.com>
7893
7894         * jcf-parse.c (get_constant) [CONSTANT_String]: String values are
7895         UTF-8, not UCS-2.  Fixes PR java/5923.
7896
7897         * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is
7898         a call_expr wrapped in a convert.  Fixes PR java/5848.
7899
7900 2002-03-12  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7901
7902         * jcf-write.c (write_classfile): Improve error strings.
7903
7904 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
7905
7906         * lex.c: Adjust comments to GNU standards.
7907
7908 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
7909
7910         Fix for PR java/5902:
7911         * lex.c (java_lex): Fix parsing of literals.
7912
7913 2002-03-11  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7914
7915         * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr
7916         to prevent it getting evaluated twice in the store checking case.
7917         * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when
7918         examining OBJECT.
7919
7920 2002-03-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7921
7922         * decl.c (java_init_decl_processing): Make sure class_type_node
7923         alignment is not less than 64 bits if hash synchronization is enabled.
7924
7925 2002-03-08  Per Bothner  <per@bothner.com>
7926
7927         * parse.y (java_complete_lhs):  Check if patch_assignment
7928         returned an error-mark.
7929
7930         * parse.y (try_builtin_assignconv):  Don't special-case zero.
7931
7932 2002-03-08  Per Bothner  <per@bothner.com>
7933
7934         Fix for PR java/5812.
7935         * expr.c (build_java_jsr):  Take pc arguments, and do lookup_label
7936         here instead of in JSR macro.  Likewise with load_type_state call.
7937         Do the latter on if the return_pc has been verified (the jsr returns).
7938         (JSR):  Now just call build_java_jsr.
7939
7940 2002-03-07  Jeff Sturm  <jsturm@one-point.com>
7941
7942         * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define.
7943         (java.install-common): Link native driver to
7944         JAVA_TARGET_INSTALL_NAME.
7945
7946 2002-03-05  David Billinghurst <David.Billinghurst@riotinto.com>
7947
7948         * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED
7949         * builtins.c(sin_builtin): Likewise
7950         * builtins.c(sqrt_builtin): Likewise
7951
7952 2002-03-03  Zack Weinberg  <zack@codesourcery.com>
7953
7954         * java/expr.c, java/jcf-parse.c, java/lex.c:
7955         Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
7956         REAL_ARITHMETIC blocks unconditional.  Delete some further
7957         #ifdef blocks predicated on REAL_ARITHMETIC.
7958
7959 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7960
7961         * class.c (init_class_processing): Use ARRAY_SIZE in lieu of
7962         explicit sizeof/sizeof.
7963         * decl.c (java_init_decl_processing): Likewise.
7964         * jcf-parse.c (init_jcf_parse): Likewise.
7965         * parse.y (init_src_parse): Likewise.
7966
7967 2002-03-02  Per Bothner  <per@bothner.com>
7968
7969         Make --CLASSPATH by a synonym for --classpath and -classpath.
7970         Implement --bootclasspath.
7971         * jcf-path.c (classpath_u):  Rename static variable to classpath_user.
7972         (classpath_l):  Remove.
7973         (jcf_path_CLASSPATH_arg):  Remove.
7974         (jcf_path_bootclasspath_arg):  New function.
7975         (jcf_path_seal):  Simplify accordingly.
7976
7977         * jcf.h (jcf_path_bootclasspath_arg):  New declarations.
7978         (jcf_path_CLASSPATH):  Remove declaration.
7979         * jvspec.c (jvgenmain_spec):  Also accept -fbootclasspath*.
7980         (lang_specific_driver):  Translate -bootclasspath.
7981         * lang-options.h:  Add --bootclasspath.  Update --CLASSPATH.
7982         * lang.c (decode_lang_options):  Do jcf_path_init first.
7983         Handle -fCLASSPATH same as -fclasspath.  Also process -fbootclasspath.
7984         * gjavah.c:  Also handle --bootclasspath.
7985         Handle --CLASSPATH as a synonum for --classpath.
7986         * jcf-dump.c: Likewise.
7987
7988         "." is not part of system path, but is the default for --classpath.
7989         * jcf-path.c (jcf_path_init):  Don't add "." to sys_dirs.
7990         (jcf_path_seal):  Add "." if no CLASSPATH specified.
7991
7992         * gcj.texi:  Document changes.
7993
7994 2002-03-01  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7995
7996         * expr.c (build_java_arraystore_check): Fix formatting.
7997
7998 2002-02-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
7999
8000         Fix for PR java/5758, java/5632:
8001         * jcf-parse.c (load_class): Renamed local variable, consider `.' an
8002         inner-class separator too.
8003         * parse.y (do_resolve_class): New local `decl_result.'
8004         Progressively build a name for what can have been loaded.
8005
8006 2002-02-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8007
8008         * expr.c (java_array_data_offset): Removed function.
8009         (JAVA_ARRAY_LENGTH_OFFSET): Removed macro.
8010         (build_java_array_length_access): Obtain "length" value using a
8011         COMPONENT_REF, instead of INDIRECT_REF and arithmetic.
8012         (build_java_arrayaccess): Correct comment. Access "data" using a
8013         COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF.
8014         (build_java_arraystore_check): New function.
8015         (expand_java_arraystore): Use build_java_arraystore_check.
8016         * parse.y (patch_assignment): Simplify code to insert a store check
8017         when lvalue is an ARRAY_REF. Use build_java_arraystore_check.
8018         * check-init.c (check_init): Update to reflect that an array length
8019         access is now a COMPONENT_REF.
8020         * gcj.texi (Code Generation): Improve documentation of
8021         -fno-bounds-check. Add documentation for -fno-store-check.
8022         * java-tree.h (flag_store_check): Declare.
8023         (build_java_arraystore_check): Declare.
8024         * lang.c (flag_store_check): Initialize to 1.
8025         (lang_f_options): Add store-check option.
8026         * jvspec.c: Don't pass store-check option to jvgenmain.
8027         * lang-options.h: Add help string for -fno-store-check.
8028
8029 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
8030
8031         * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl.
8032         * java-tree.h (java_dup_lang_specific_decl): New.
8033         * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
8034
8035 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
8036
8037         * builtins.c, decl.c: Delete traditional-mode-related code
8038         copied from the C front end but not used, or used only to
8039         permit the compiler to link.
8040
8041 2002-02-22  Tom Tromey  <tromey@redhat.com>
8042
8043         Fix for PR java/2369:
8044         * jvspec.c (verify_class_name): New function.
8045         (lang_specific_driver): Call it.
8046         (JAVA_START_CHAR_P): New macro.
8047         (JAVA_PART_CHAR_P): Likewise.
8048
8049 2002-02-22  Per Bothner  <per@bothner.com>
8050
8051         * class.c:  Change vtable to be more compatible with g++ v3 abi.
8052         (get_dispatch_table):  Prepend offset-to-top (always 0) and
8053         type_info pointer (currently unimplemented hence NULL) to vtable.
8054         Specifically, prepend offset-to-top and typeinfo ptr (currently null).
8055         (make_class_data):  Variable dtable_start_offset is sizeof 2 pointers.
8056         Adjust vtable pointers by dtable_start_offse - i.e. skip new words.
8057         (build_dtable_decl):  Add declarations for new fields.
8058
8059 2002-02-20  Per Bothner  <per@bothner.com>
8060
8061         * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call
8062         to finit$ (otherwise generate_bytecode_insns drops it). However, we
8063         don't need to set it on the COMPOUND_EXPR - the caller does that.
8064
8065 2002-02-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
8066
8067         * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option
8068         `--CLASSPATH' becomes `--classpath.'
8069         * gjavah.c: Likewise.
8070         * jcf-dump.c: Likewise.
8071         * lang-options.h: Likewise.
8072         * lang.c: Likewise.
8073         * jcf-path.c: Updated comment.
8074         (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.'
8075         (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.'
8076         * jcf.h (jcf_path_CLASSPATH_arg): Ditto.
8077         (jcf_path_CLASSPATH_arg): Ditto.
8078         (classpath_u): Updated leading comment.
8079
8080 2002-02-20  Per Bothner  <per@bothner.com>
8081
8082         * builtins.c (check_for_builtin):  New function.
8083         (build_call_or_builtin):  Remove.
8084         * java-tree.h:  Update accordingly.
8085         * expr.c (expand_invoke):  Use build + check_for_builtin instead
8086         of build_call_or_builtin.
8087         * parse.y (patch_invoke):  Likewise.  This avoids needlessly creating
8088         a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER
8089         flag (which had caused jcf-write to incorrectly emit invokevirtual).
8090
8091 2002-02-17  Tom Tromey  <tromey@redhat.com>
8092
8093         * java-tree.h (TYPE_STRICTFP): New macro.
8094         (struct lang_type) [strictfp]: New field.
8095         (CLASS_STRICTFP): New macro.
8096         (METHOD_STRICTFP): New macro.
8097         (struct lang_decl) [strictfp]: New field.
8098         * parse.y (method_header): Disallow strictfp constructor or
8099         abstract method.
8100         (STRICT_TK): Move before MODIFIER_TK.
8101         * parse.h (CLASS_MODIFIERS): Added ACC_STRICT.
8102         (METHOD_MODIFIERS): Likewise.
8103         (INTERFACE_MODIFIERS): Likewise.
8104         * jcf-write.c (get_access_flags): Likewise.
8105         * class.c (set_class_decl_access_flags): Recognize ACC_STRICT.
8106         (add_method_1): Likewise.
8107         (get_access_flags_from_decl): Likewise.
8108         * jcf-dump.c (print_access_flags): Print in standard order.  Also,
8109         recognize strictfp flag.
8110         * jcf.h (ACC_STRICT): New define.
8111
8112 2002-02-12  David Billinghurst <Davod.Billinghurst@riotinto.com>
8113
8114         * class.c(build_utf8_ref): Move declaration of decl_size
8115
8116 2002-02-07  Tom Tromey  <tromey@redhat.com>
8117
8118         * gcj.texi (Input Options): --CLASSPATH does not suppress system
8119         path.
8120
8121 2002-02-04  Anthony Green  <green@redhat.com>
8122
8123         * class.c (build_utf8_ref): Put UTF-8 constants into merged
8124         sections if available.
8125
8126 2002-02-04  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8127
8128         * parse.y (java_expand_classes): Fix typo in static field loop.
8129
8130 2002-02-02  Richard Henderson  <rth@redhat.com>
8131
8132         * class.c (add_field): Mark static fields external.
8133         (build_class_ref): Remove redundant set.
8134         * parse.y (java_expand_classes): Mark static fields of classes
8135         to be compiled as local.
8136         * jcf-parse.c (parse_class_file): Likewise.
8137
8138 2002-02-02  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
8139
8140         * gcj.texi (About CNI): New node.
8141
8142 2002-02-01  Craig Rodrigues  <rodrigc@gcc.gnu.org>
8143
8144         PR java/5080
8145         * jcf-parse.c : Check for HAVE_LOCALE_H before using
8146         setlocale() with LC_CTYPE as a parameter.
8147         * jv-scan.c: Same.
8148
8149 2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>
8150
8151         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
8152         Follow GNU Coding Standards for --version.
8153
8154 2002-01-28  Tom Tromey  <tromey@redhat.com>
8155
8156         * expr.c (build_jni_stub): Ensure storage for `meth' is
8157         generated.
8158         * parse.y (java_complete_expand_methods): Set
8159         current_function_decl before building JNI stub.
8160
8161 2002-01-26 Andreas Tobler <a.tobler@schweiz.ch>
8162
8163         * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not
8164         BUILT_IN_SQRTF.
8165
8166 2002-01-22  Tom Tromey  <tromey@redhat.com>
8167
8168         * decl.c (java_init_decl_processing): Use add_predefined_file.
8169         Predefine RawData.java.
8170         (predef_filenames): Removed.
8171         (java_init_decl_processing): Don't register predef_filenames.
8172         * jcf-parse.c (add_predefined_file): New function.
8173         (predefined_filename_p): Rewrote.
8174         (predefined_filename_p): No longer static.
8175         * decl.c (java_init_decl_processing): Call initialize_builtins.
8176         * Make-lang.in (JAVA_OBJS): Added builtins.o.
8177         (java/builtins.o): New target.
8178         * builtins.c: New file.
8179         * parse.y (patch_invoke): Use build_call_or_builtin.
8180         * java-tree.h (build_call_or_builtin): Declare.
8181         (initialize_builtins): Declare.
8182         (java_set_exception_lang_code): Removed unused declaration.
8183         (PREDEF_FILENAMES_SIZE): Removed.
8184         (java_tree_index): Added JTI_PREDEF_FILENAMES.
8185         (predef_filenames): New define.
8186         (add_predefined_file): Declare.
8187         (predefined_filename_p): Declare.
8188         * expr.c (expand_invoke): Use build_call_or_builtin.
8189
8190 2002-01-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8191
8192         * parse.y (patch_switch_statement): Fix format specifier.
8193
8194 2002-01-16  Tom Tromey  <tromey@redhat.com>
8195
8196         More for PR java/5365:
8197         * gjavah.c (print_stub_or_jni): Cause exception to be thrown by
8198         default.
8199         (process_file): Generate include for
8200         java.lang.UnsupportedOperationExceptions.
8201
8202 2002-01-15  Andreas Jaeger  <aj@suse.de>
8203
8204         * .cvsignore: Add man pages.
8205
8206 2002-01-15  Tom Tromey  <tromey@redhat.com>
8207
8208         Fix for PR java/5365:
8209         * gjavah.c (process_file): Turn class name into a file name.
8210
8211 2002-01-14  Matthias Klose  <doko@debian.org>
8212
8213         * gcj.texi: Fix whitespace and formatting errors in the
8214         synopsis of the man pages. Update copyright.
8215
8216 2002-01-14  Tom Tromey  <tromey@redhat.com>
8217
8218         For PR libgcj/5303:
8219         * Make-lang.in (java.install-man): Handle jv-convert man page.
8220         (java.generated-manpages): Added jv-convert.1.
8221         (java.uninstall): Remove jv-convert.1.
8222         (java.maintainer-clean): Likewise.
8223         ($(srcdir)/java/jv-convert.1): New target.
8224         * gcj.texi (Top): Link to jv-convert node.
8225         (Individual utilities): Likewise.
8226         (Invoking jv-convert): New node.
8227
8228 2001-01-10  Jeff Sturm  <jsturm@one-point.com>
8229             Martin Kahlert  <martin.kahlert@infineon.com>
8230
8231         * jcf-parse.c (get_constant): Don't swap lo/hi for big
8232         endian targets when HOST_BITS_PER_WIDE_INT >= 64.
8233
8234 2002-01-03  Graham Stott  <grahams@redhat.com>
8235
8236         * class.c (compile_resource_file): Update copyright date.
8237         Constify filename parameter.
8238         (java-tree.h): Update copyright date.
8239         (compile_resource_file): Constify filename parameter.
8240
8241 2002-01-03  Graham Stott  <grahams@redhat.com>
8242
8243         * gcc/jcf-parse.c: Update copyright date.
8244         (yyparse): Constify resource_filename.
8245
8246 2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8247
8248         * parse.y (src_parse_roots): Don't needlessly zero init.
8249
8250 2001-12-31  Tom Tromey  <tromey@redhat.com>
8251
8252         * parse.y (dump_java_tree): New function.
8253         (source_end_java_method): Call it.
8254         (end_class_declaration): Likewise.
8255         * lang.c (java_decode_option): Call dump_switch_p.
8256
8257 2001-12-28  Tom Tromey  <tromey@redhat.com>
8258
8259         * gen-table.pl: Don't process characters after \uffff.  Added
8260         comment pointing to input file.
8261
8262 2001-12-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8263
8264         * gen-table.pl: Const-ify output.  Document the location of a
8265         suitable unicode input file.
8266
8267         * chartables.h: Regenerate.
8268
8269 2001-12-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8270
8271         * chartables.h: Const-ify.
8272         * gjavah.c (options): Likewise.
8273         * jcf-dump.c (options): Likewise.
8274         * jv-scan.c (options): Likewise.
8275         * lex.c (java_start_char_p, java_part_char_p): Likewise.
8276         * parse.y (binop_lookup): Likewise.
8277
8278 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8279
8280         * Make-lang.in (keyword.h): Pass -C to gperf to const-ify
8281         the static arrays that are output.
8282         * jvspec.c (jvgenmain_spec): Make static.
8283         * keyword.gperf (struct java_keyword, java_keyword): Const-ify.
8284         * keyword.h: Regenerate.
8285         * lang.c (string_option, process_option_with_no, lang_f_options,
8286         lang_W_options): Const-ify.
8287         * lex.c (java_lex): Likewise.
8288
8289 2001-12-21  Richard Henderson  <rth@redhat.com>
8290
8291         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into ..
8292         (get_boehm_type_descriptor): ... here.  Arrange for the
8293         TREE_TYPE to get set properly.
8294
8295 2001-12-21  Richard Henderson  <rth@redhat.com>
8296
8297         * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor
8298         only if the target requires collect2.
8299
8300         * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL.
8301
8302 2001-12-20  Tom Tromey  <tromey@redhat.com>
8303
8304         For PR java/4509:
8305         * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
8306         CAN_COMPLETE_NORMALLY for the node.
8307         * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
8308         generate code for second branch if first branch can't complete
8309         normally.
8310         (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
8311         the loop head if the loop body can't complete normally.
8312
8313 2001-12-20  Tom Tromey  <tromey@redhat.com>
8314
8315         For PR java/4766:
8316         * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle
8317         case where `finally' clause can't complete normally.
8318
8319 2001-12-20  Tom Tromey  <tromey@redhat.com>
8320
8321         Fixes PR java/5057:
8322         * parse.y (analyze_clinit_body): Added this_class parameter.
8323         Check for more cases where we must keep <clinit>.
8324         (maybe_yank_clinit): Cleaned up flow control.
8325
8326 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8327
8328         * decl.c (java_init_decl_processing): Don't initialize
8329         finit_leg_identifier_node.
8330         * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE.
8331         (finit_leg_identifier_node): Remove.
8332         (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE.
8333
8334 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8335
8336         * mangle.c (mangle_member_name): Don't special-case for
8337         NO_DOLLAR_IN_LABEL.
8338         * mangle_name.c (unicode_mangling_length): Likewise.
8339         (append_unicode_mangled_name): Likewise.
8340         * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL
8341         code.
8342
8343 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8344
8345         * expr.c (build_java_array_length_access): Don't force null pointer
8346         check unless flag_check_references is set.
8347
8348 2001-12-20  Tom Tromey  <tromey@redhat.com>
8349
8350         Fix for PR java/3417:
8351         * parse.y (patch_assignment): Added special processing for
8352         `return'.
8353         (patch_return): Don't convert booleans to integers, and don't
8354         special-case `null'.
8355
8356 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
8357
8358         * config-lang.in (diff_excludes): Remove.
8359
8360 2001-12-17  Joseph S. Myers  <jsm28@cam.ac.uk>
8361
8362         * gcj.texi: Update link to GCC manual.
8363
8364 2001-12-17  Tom Tromey  <tromey@redhat.com>
8365
8366         * parse.y (link_nested_class_to_enclosing): Removed useless
8367         statement.
8368
8369 2001-12-16  Tom Tromey  <tromey@redhat.com>
8370
8371         * mangle.c (mangle_method_decl): Never emit `C2' constructor.
8372         Fixes PR java/5088.
8373
8374 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
8375
8376         * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h,
8377         jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix
8378         spelling errors.
8379
8380 2001-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8381
8382         * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value.
8383
8384 2001-12-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8385
8386         * decl.c (java_init_decl_processing): Build otable_type correctly.
8387         otable_decl is an otable_type.
8388
8389 2001-12-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8390
8391         * java-tree.h (otable_methods, otable_decl, otable_syms_decl,
8392         otable_type, otable_ptr_type, method_symbol_type,
8393         method_symbols_array_type, method_symbols_array_ptr_type): New
8394         field/global tree definitions.
8395         (flag_indirect_dispatch): New flag.
8396         * decl.c (java_init_decl_processing): Initialize new otable and
8397         otable_syms type nodes and decls. Add new field "index" to
8398         method_type_node.
8399         * class.c (build_method_symbols_entry): New function.
8400         (make_method_value): Set "index" to to method's vtable index for
8401         virtual methods when indirect-dispatch is not used.
8402         (make_class_data): For indirect-dispatch, don't emit the dtable_decl,
8403         and set vtable_method_count to -1. Set otable and otable_syms field
8404         if indirect-dispatch is used and there was something to put in them.
8405         (build_method_symbols_entry): New function.
8406         (emit_offset_symbol_table): New function.
8407         * expr.c (get_offset_table_index): New function.
8408         (build_invokevirtual): Build array reference to otable at the index
8409         returned by get_offset_table_index, and use the result as the vtable
8410         offset.
8411         (build_invokeinterface): Similar.
8412         * jcf-parse.c (yyparse): If indirect-dispatch, call
8413         emit_offset_symbol_table at the end of compilation, after all classes
8414         have been generated.
8415         * jvspec.c: Don't pass findirect-dispatch to jvgenmain.
8416         * lang.c (flag_indirect_dispatch): Define.
8417         (lang_f_options): Add indirect-dispatch flag.
8418
8419 2001-12-14  Matthias Klose  <doko@debian.org>
8420
8421         * gcj.texi: Markup for man page generation. Document missing
8422         options printed by <tool> --help.
8423         Terminate description of gij's -ms option with a dot.
8424         * Make-lang.in ($(srcdir)/java/*.1): New targets.
8425         (java.generated-manpages java.install-man, java.uninstall,
8426         java-maintainer-clean) Updated.
8427
8428 2001-12-14  Hans Boehm  <Hans_Boehm@hp.com>
8429
8430         * class.c (get_dispatch_table): Fix java vtable layout
8431         for TARGET_VTABLE_USES_DESCRIPTORS.
8432         * decl.c (java_init_decl_processing): Initialize
8433         alloc_no_finalizer_node, finalize_identifier_node.
8434         * expr.c (class_has_finalize_method): New function.
8435         (expand_java_NEW): Generate calls for finalizer-free allocation.
8436         (build_invokevirtual): Fix java vtable layout for
8437         TARGET_VTABLE_USES_DESCRIPTORS.
8438         * java-tree.h (enum java_tree_index): New entries:
8439         JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
8440         (alloc_no_finalizer_node, finalize_deintifier_node): New macros.
8441         (class_has_finalize_method): declare.
8442         (HAS_FINALIZER_P): New macro.
8443         * parse.y (patch_invoke): Generate calls for finalizer-free
8444         allocation.
8445
8446 2001-12-12  Matthias Klose  <doko@debian.org>
8447
8448         * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove
8449         whitespace at end of line.
8450
8451 2001-12-11  Tom Tromey  <tromey@redhat.com>
8452
8453         * lex.c (java_init_lex): Define wfl_to_string as
8454         gnu.gcj.runtime.StringBuffer unless generating bytecode.
8455
8456 2001-12-11  Jeff Sturm  <jsturm@one-point.com>
8457
8458         * class.c (make_method_value): Use null_pointer_node to
8459         represent empty exception table.
8460
8461 2001-12-10  Tom Tromey  <tromey@redhat.com>
8462
8463         * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT.
8464
8465 2001-12-10  Douglas B. Rupp  <rupp@gnat.com>
8466
8467         * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION).
8468
8469 2001-12-09  Per Bothner  <per@bothner.com>
8470
8471         * check-init.c (current_switch_has_default):  New static field.
8472         (check_init):  Case DEFAULT_EXPR: Set current_switch_has_default.
8473         Case SWITCH_EXPR:  Save/restore current_switch_has_default.  If no
8474         DEFAULT_EXPR seen, simulate a default alternative that copies state.
8475
8476 2001-12-09  Tom Tromey  <tromey@redhat.com>
8477
8478         * check-init.c (check_init): Don't allow pre- or post- increment
8479         or decrement of final variable.
8480         (final_assign_error): Minor error message rewording.
8481
8482 2001-12-08  Tom Tromey  <tromey@redhat.com>
8483
8484         * java-tree.h: Fixed typo.
8485
8486         * gjavah.c (decompile_method): Don't decompile to `return this'
8487         for static methods.
8488
8489         * gjavah.c (cxx_keywords): Re-sorted.
8490         * lex.c (cxx_keywords): Re-sorted.
8491
8492         * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything
8493         else.
8494
8495         * gjavah.c (print_namelet): Clear subnamelets.
8496         (HANDLE_METHOD): Set `method_printed' earlier.
8497
8498 2001-12-07  Tom Tromey  <tromey@redhat.com>
8499
8500         * lang.c (lang_f_options): Added
8501         optimize-static-class-initialization.
8502         (java_decode_option): Removed special case.
8503
8504 2001-12-07  Per Bothner  <per@bothner.com>
8505
8506         * check-init.c (check_init):  Fix typo freeing memory twice.
8507
8508 2001-12-05  Per Bothner  <per@bothner.com>
8509
8510         Restore support for static class initialization optimization.
8511         * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable.
8512         * check-init.c (check_int):  At end of BLOCK handle initialization
8513         blocks, which used to be done in java_complete_expand_method but did
8514         not handle the case where check_for_initialization might allocate
8515         more than a word of bits.
8516         * decl.c (lang_make_tree):  The smic field is now a tree.
8517         * expr.c (build_class_init):  Set DECL_FUNCTION_INIT_TEST_CLASS field.
8518         * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE):  New macro.
8519
8520         * parse.y (emit_test_initialization):  Combine hash_lookup calls.
8521
8522         * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND):
8523         Change from a hash table to a list.
8524         (struct_lang_decl):  Change field 'smic' to match.
8525         * class.c (add_method_1):  Initialize
8526         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list.
8527         * parse.y (adjust_init_test_initialization):  Removed - inlined into -
8528         (java_expand_method_bodies): -here, since 'smic' is now a list.
8529         (patch_invoke):  Add to 'smic' list, instead of hash_lookup.
8530
8531         * check-init.c (WORD_SIZE):  Use BITS_PER_UNIT.
8532
8533         * class.c (java_hash_compare_tree_node):  Fix casts.
8534
8535 2001-12-04  Per Bothner  <per@bothner.com>
8536
8537         * check-init.c:   Handle definite unassignment to finals in addition
8538         to definite assignment.
8539         (loop_current_locals):  New field.
8540         (num_current_locals, int start_current_locals, num_current_words):
8541         Make static.
8542         (SET_P, CLEAR_P, SET_BIT):  Add needed but missing parentheses.
8543         (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED,
8544         CLEAR_ASSIGNED, CLEAR_UNASSIGNED):  New macros.
8545         (get_variable_decl, check_final_reassigned):  New functions.
8546         (check_init, check_bool_init):  Modify as needed for checking finals.
8547         (check_for_initialization):  Take extra parameter and return void.
8548         Do extra start-up logic to check final fields for assignment.
8549         * parse.y (check_static_final_variable_assignment_flag,
8550         reset_static_final_variable_assignment_flag, check_final_assignment,
8551         check_final_variable_local_assignment_flag,
8552         reset_final_variable_indirect_assignment_flag,
8553         reset_final_variable_global_assignment_flag):  Remove functions.
8554         (java_complete_expand_methods, outer_field_access_fix,
8555         patch_assignment): Remove no-longer used logic.
8556         * java-tree.h (DECL_FIELD_FINAL_IUD):  Change usage and comments.
8557         * parse.y (register_fields, java_complete_tree):  Update accordingly.
8558
8559         * check-init.c (ALLOC_WORDS/FREE_WORDS):  Use xmalloc/free, not alloca.
8560         (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER):  New.
8561         (check_cond_init, check_bool2_init):  Use DECLARE_BUFFERS.
8562
8563         * java-tree.h (STATIC_CLASS_INIT_OPT_P):  Temporarily turn off.
8564
8565         * java-tree.h (DECL FINAL):  New bit-field.
8566         (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL):  Define as DECL_FINAL.
8567         (LOCAL_FINAL_P):  Use DECL_FINAL rather than old LOCAL_FINAL.
8568         (DECL_INIT_CALLS_THIS):  New macro.
8569         (struct lang_decl):  New bit-field init_calls_this.
8570         (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC,
8571         DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE
8572         (DECL_BIT_INDEX):  Change to use pointer_alias_set since we now
8573         use it for both local variables and final fields.
8574         (struct lang_decl_var):  Remove bit-fields final_liic, final_ierr,
8575         and local_final.
8576         (struct lang_type):  Remove hfv bit-field.
8577         (check_for_initialization):  Change to return void.
8578
8579         * java-tree.h (IS_ARRAY_LENGTH_ACCESS):  New macros.
8580         * expr.c (build_java_array_length_access):  Set IS_ARRAY_LENGTH_ACCESS.
8581         * check-init.c (final_assign_error):  New helper function.
8582         (check_final_reassigned, check_init):  Use it.
8583         (check_init):  Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length.
8584
8585         * java-tree.h (struct lang_decl, struct lang_decl_var):  Change all
8586         bit-fields to unsigned.
8587
8588 2001-12-03  Per Bothner  <per@bothner.com>
8589
8590         * parse.y (patch_binop):  Minor constant folding.
8591
8592         * parse.y (build_current_thisn):  Shorter 'buffer'.
8593
8594 2001-12-03  Per Bothner  <per@bothner.com>
8595
8596         * decl.c (complete_start_java_method):  Now generate TRY_FINALLY_EXPR
8597         instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR.
8598         * jcf-write.c (generate_bytecode_insns):  Remove support for
8599         CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used.
8600         * check-init.c (check_init):  Likewise.
8601
8602 2001-12-03  Per Bothner  <per@bothner.com>
8603
8604         * verify.c (subroutine_nesting):  New function.
8605         (verify_jvm_instructions):  Use it to fix logic for checking that
8606         we're done with the current subroutine.
8607
8608         * verify.c (verify_jvm_instruction): For OPCODE_checkcast and
8609         OPCODE_instanceof use POP_TYPE macro for better diagnostics.
8610
8611 2001-12-03  Per Bothner  <per@bothner.com>
8612
8613         * jcf.h:  Fix obvious typo in comment.
8614         * typeck.c (build_null_signature):  Add comment.
8615
8616 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
8617
8618         * expr.c: Remove leading capital from diagnostic messages, as
8619         per GNU coding standards.
8620         * jcf-io.c: Similarly.
8621         * jcf-parse.c: Similarly.
8622         * jv-scan.c: Similarly.
8623         * jvspec.c: Similarly.
8624         * mangle.c: Similarly.
8625
8626 2001-12-02  Tang Ching-Hui  <nicholas@cs.nthu.edu.tw>
8627             Alexandre Petit-Bianco  <apbianco@redhat.com>
8628
8629         * expr.c (build_java_arrayaccess): Call save_expr on array for
8630         correct evaluation order, modified comment, fixed indentation.
8631         * parse.y: (patch_assignment): Correctly extract the array base
8632         from the tree generate by build_java_arrayaccess, added comments.
8633         (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF.
8634         Fixes PR java/3096, PR java/3803, PR java/3965.
8635
8636 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
8637
8638         * expr.c (expand_byte_code): Remove trailing periods from messages.
8639         * jcf-parse.c (load_class, jcf_parse): Similarly.
8640         * jcf-write.c (generate_classfile): Similarly.
8641         * lex.c (java_lex): Similarly.
8642
8643 2001-11-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8644
8645         * class.c (add_interface_do): Set BINFO_VPTR_FIELD.
8646
8647 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
8648
8649         * Make-lang.in (java.generated-manpages): New dummy target.
8650
8651 2001-11-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
8652
8653         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
8654         ASM_FINAL_SPEC.
8655         (lang_specific_pre_link): Use set_input to set input_filename.
8656         Append `main' here.
8657         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
8658         (main): Fix definition.
8659         Strip `main' from classname.
8660         Fixes PR java/227.
8661
8662 2001-11-18  Roger Sayle <roger@eyesopen.com>
8663
8664         * parse.h (java_expand_switch): Remove old prototype.
8665
8666 2001-11-18  Tom Tromey  <tromey@redhat.com>
8667
8668         Fix for PR java/1401:
8669         * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where
8670         arg0 is null.
8671         (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case
8672         correctly.
8673
8674 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
8675
8676         * lang.c (finish_parse): Rename to java_finish.
8677         (LANG_HOOKS_FINISH, java_finish): New.
8678
8679 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
8680
8681         * decl.c (init_decl_processing): Rename java_init_decl_processing.
8682         * java-tree.h: New prototype.
8683         * lang.c (java_init): Update prototype.  Combine with old init_parse.
8684
8685 2001-11-13  Tom Tromey  <tromey@redhat.com>
8686
8687         * gjavah.c (method_signature): New global.
8688         (HANDLE_METHOD): Set it.
8689         (decompile_return_statement): New function.
8690         (decompile_method): Use it.
8691         (print_method_info): Removed `synth' argument.
8692
8693 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
8694
8695         * java-tree.h (java_set_yydebug): New.
8696         * jcf-parse.c (set_yydebug): Rename java_set_yydebug.
8697         * lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
8698         (print_lang_decl, print_lang_type, print_lang_identifier,
8699         print_lang_statistics, lang_print_xnode): Remove.
8700
8701 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
8702
8703         * jcf-parse.c (init_lex): Remove.
8704         * lang.c (language_string, lang_identify): Remove.
8705         (struct lang_hooks): Constify.
8706         (LANG_HOOKS_NAME): Override.
8707         (init_parse): Update.
8708
8709 2001-11-08  Andreas Franck  <afranck@gmx.de>
8710
8711         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle
8712         program_transform_name the way suggested by autoconf.
8713         (java.install-common): Also transform auxiliary program names with
8714         program_transform_name.
8715
8716 2001-11-08  Tom Tromey  <tromey@cygnus.com>
8717
8718         * parse.y (trap_overflow_corner_case): New rule.
8719         (unary_expression): Use it.
8720         * lex.c (java_init_lex): Don't set minus_seen.
8721         (yylex): Don't use minus_seen.  Communicate overflow to parser for
8722         it to handle.
8723         (error_if_numeric_overflow): New function.
8724         * parse.h (minus_seen): Removed field.
8725         (JAVA_RADIX10_FLAG): New define.
8726
8727 2001-11-07  Tom Tromey  <tromey@redhat.com>
8728
8729         Patch for PR java/1414:
8730         * parse.y (case_label_list): New global.
8731         (goal): Register case_label_list with GC.
8732         (java_complete_lhs): Save new case on case_label_list.
8733         (patch_switch_statement): Check for duplicate case labels.
8734
8735 2001-11-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
8736
8737         * parse.y (patch_assignment): Removed unused third argument.
8738         (java_complete_lhs): Removed unused third argument to patch_assignment.
8739
8740 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
8741
8742         * lang.c: Include langhooks-def.h.
8743         * Make-lang.in: Update.
8744
8745 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
8746
8747         * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
8748
8749 2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8750
8751         * mangle.c (find_compression_record_match): Don't match compression
8752         records for package name elements unless they occur at the start of
8753         the name. Fix for PR java/4717.
8754
8755 2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8756
8757         * expr.c (expand_java_field_op): Don't special-case references to
8758         java.lang.PRIMTYPE.TYPE.
8759         (build_primtype_type_ref): Removed.
8760         * java-tree.h (build_primtype_type_ref): Remove prototype.
8761         * parse.y (maybe_build_primttype_type_ref): Removed.
8762         (complete_function_arguments): Don't special-case references to
8763         java.lang.PRIMTYPE.TYPE.
8764         (patch_assignment): Likewise.
8765         (array_constructor_check_entry): Likewise.
8766
8767 2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
8768
8769         * mangle.c (static tree compression_table): Fixed leading comment.
8770         * parse.h (struct parser_ctxt): Fixed field comment.
8771         * parse.y (check_pkg_class_access): New prototype, fixed leading
8772         comment, new parameter used to emit error only if passed as true.
8773         (parse_check_super): Pass extra argument to check_pkg_class_access.
8774         (do_resolve_class): Likewise.
8775         (process_imports): Likewise.
8776         (read_import_dir): Fixed indentation.
8777         (find_in_imports_on_demand): New local class_type_name. Local
8778         node_to_use deleted. while loop changed into for loop. Report
8779         multiple definition only for accessible classes. Improved error
8780         message.
8781         (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
8782         assigned to parameter list, fixed indentation. while loop changed
8783         into for loop, restore TREE_CHAIN on local `tem' before the next
8784         iteration.
8785
8786 2001-10-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8787
8788         * lang.c (lang_get_alias_set): Deleted.
8789
8790 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8791
8792         * gjavah.c (jni_print_char): Fix thinko in last change.
8793
8794         * gjavah.c (jni_print_char, decode_signature_piece): Use
8795         safe-ctype macros and/or fold extra calls into fewer ones.
8796         * lex.c (java_read_unicode, java_lex): Likewise.
8797         * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
8798         JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
8799         * mangle_name.c (append_unicode_mangled_name,
8800         unicode_mangling_length): Likewise.
8801
8802 2001-10-17  Richard Henderson  <rth@redhat.com>
8803
8804         * Make-lang.in (java/lang.o): Depend on langhooks.h.
8805
8806 2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
8807
8808         * lang.c (langhooks.h): Included.
8809         (LANG_HOOKS_INIT): Redefined.
8810         (LANG_HOOKS_INIT_OPTIONS): Likewise.
8811         (LANG_HOOKS_DECODE_OPTION): Likewise.
8812         (struct lang_hooks lang_hooks): New initialization.
8813
8814 2001-10-11  Per Bothner  <per@bothner.com>
8815
8816         * parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
8817         rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
8818         The former is simpler, and jcf-write.c handles it better.
8819         (java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
8820         or WITH_CLEANUP_EXPR.
8821         * jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
8822         longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
8823
8824         * parse.y (patch_if_else_statement):  If the condition is constant,
8825         optimize away the test.
8826
8827 2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
8828
8829         * parse.y (patch_cast): Call patch_string on the first operand of
8830         the incoming node, update it if necessary. Fixes PR java/4510.
8831
8832 2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8833
8834         * parse.y (find_as_inner_class): Don't disregard the enclosing scope
8835         when name qualifier matches a package name.
8836
8837 2001-10-08  Tom Tromey  <tromey@redhat.com>
8838
8839         Fix for PR java/4489:
8840         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
8841         force a new label when computing `body_block'.
8842
8843 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8844
8845         * jcf-io.c (format_uint): Const-ify.
8846         * lang.c (java_tree_code_type, java_tree_code_length): Likewise.
8847         * lex.c (java_get_line_col): Likewise.
8848         * parse.y (build_incdec): Likewise.
8849
8850 2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
8851
8852         * parse.y (register_incomplete_type): Set JDEP_SUPER to be given
8853         a NULL enclosing context if appropriate. Fixes PR java/4466.
8854
8855 2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
8856
8857         * parse.y (patch_assignment): Use lvalue's original TYPE when
8858         building the final COMPOUND_EXPR.
8859         (try_reference_assignconv): Fixed leading comment.
8860
8861 2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
8862
8863         * parse.y (check_final_variable_indirect_assignment): For
8864         COMPOUND_EXPR, return only if finals were found initialized
8865         properly, if not, keep on checking.
8866         (check_final_variable_global_assignment_flag): New local
8867         error_found, set when appropriate and used to decide whether to
8868         report uninitialized finals. Fixed typo in comment.
8869
8870 2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
8871
8872         * decl.c (init_decl_processing): Fixed typo in predef_filenames
8873         last three initializations. Fixes PR java/4360.
8874
8875 2001-09-21  Richard Henderson  <rth@redhat.com>
8876
8877         * class.c (get_dispatch_table): Handle function descriptors.
8878         (build_dtable_decl): Likewise.
8879         * expr.c (build_invokevirtual): Likewise.
8880
8881 2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
8882
8883         * parse.y (patch_method_invocation): Build class initialization
8884         when static finals are used to qualify method invocation.
8885         Fixes PR java/4366.
8886
8887 2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>
8888
8889         * parse.h: (WFL_STRIP_BRACKET): Re-written using
8890         build_type_name_from_array_name.
8891         (STRING_STRIP_BRACKETS): New macro.
8892         * parse.y (build_type_name_from_array_name): New function.
8893         (array_creation_expression:): Accumulate []s instead of [s.
8894         (cast_expression:): Accumulate []s instead of [s after cast type
8895         name.
8896         (build_array_from_name): Local string deleted, use
8897         build_type_name_from_array_name.
8898         (build_unresolved_array_type): Accumulate []s instead of [s after
8899         type name.
8900         (register_fields): Fixed comment.
8901         (resolve_class): Local name, base deleted, new locals tname and
8902         array_dims. Use build_type_name_from_array_name. Use array_dims to
8903         build array type.
8904         (purify_type_name): Use STRING_STRIP_BRACKETS.
8905
8906 2001-09-18  Andreas Jaeger  <aj@suse.de>
8907
8908         * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
8909         * jv-scan.c: Likewise.
8910
8911 2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
8912
8913         * parse.y (patch_method_invocation): Inner class creation context
8914         check not enforced within constructors. Fixes PR java/1873.
8915
8916 2001-09-16  Tom Tromey  <tromey@redhat.com>
8917
8918         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
8919         NOTE_PUSH for single-case push.  Fixes PR java/4189.
8920
8921 2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
8922
8923         * java-tree.h (TYPE_IMPORT_LIST): New macro.
8924         (TYPE_IMPORT_DEMAND_LIST): Likewise.
8925         (struct lang_type): New fields import_list and import_demand_list.
8926         * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
8927         TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
8928         (do_resolve_class): New local saved_enclosing_type, initialized,
8929         passed as parameter to find_in_imports and find_in_imports_on_demand.
8930         (find_in_imports): Added paramater enclosing_type, use its
8931         TYPE_IMPORT_LIST when applicable.
8932         (find_in_imports_on_demand): Added parameter enclosing_type, use
8933         its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
8934         declaration and initialization.
8935         (fold_constant_for_init): Switch/restore current_class to the
8936         appropriate context.
8937
8938 2001-09-13  Mark Mitchell  <mark@codesourcery.com>
8939
8940         * verify.c (verify_jvm_instructions): Fix typo.
8941
8942 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8943
8944         * expr.c (expand_invoke): Const-ification.
8945         * parse.y (patch_method_invocation): Likewise.
8946
8947 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8948
8949         * gjavah.c (cxx_keywords): Const-ification.
8950         * keyword.gperf (java_keyword): Likewise.
8951         * lang.c (java_tree_code_name): Likewise.
8952         * lex.c (cxx_keywords): Likewise.
8953         * parse.y (java_parser_context_suspend, merge_string_cste): Likewise.
8954
8955 2001-09-11  Richard Henderson  <rth@redhat.com>
8956
8957         * parse.h (ctxp_for_generation): Mark extern.
8958
8959 2001-09-10  Richard Henderson  <rth@redhat.com>
8960
8961         * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.
8962
8963 2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
8964
8965         * typeck.c (java_array_type_length, build_prim_array_type):
8966         Represent empty arrays by NULL index.
8967
8968 2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>
8969
8970         * java-tree.h (compile_resource_file): Grouped with other prototypes.
8971         * jvspec.c (lang_specific_driver): Removed unused local `ptr.'
8972
8973 2001-09-06  Anthony Green  <green@redhat.com>
8974
8975         * class.c (O_BINARY): Define if necessary.
8976         (registerResource_libfunc): Declare.
8977         (init_class_processing): Initilize registerResource_libfunc.
8978         (compile_resource_file): New function.
8979         * java-tree.h (resource_name): Declare.
8980         (compile_resource_file): Declare.
8981         * jcf-parse.c (yyparse): Handle compiling java resource files.
8982         * lang.c (java_decode_option): Handle -fcompile-resource option.
8983         * jvspec.c (lang_specific_driver): Handle -R flag for compiling
8984         resource files.
8985         * gcj.texi (Code Generation): Add documentation for -R flag.
8986
8987 2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>
8988
8989         * jcf-write.c (generate_classfile): Issue an error in case of
8990         field/initial value mismatch.
8991         * parse.y (analyze_clinit_body): Keep <clinit> if an array is
8992         being initialized and we're generating bytecode.
8993         (java_complete_lhs): In MODIFY_EXPR section: added comments,
8994         set DECL_INITIAL properly when appropriate.
8995         Fixes PR java/4230
8996         Fixes PR java/4204
8997
8998 2001-09-01  Per Bothner  <per@bothner.com>
8999
9000         * parse.y (maybe_yank_clinit):  A field without an initializer is not
9001         relevant.  All initializers except static final and constant require
9002         <clinit>, regardless of flag_emit_class_files.
9003
9004 2001-08-31  Per Bothner  <per@bothner.com>
9005
9006         * class.c (set_constant_value):  When not emitting class files, then a
9007         String ConstantValue is a utf8const_ptr_type.
9008
9009 2001-08-30  Per Bothner  <per@bothner.com>
9010
9011         * jcf-write.c (generate_classfile):  Check that field is primitive
9012         or string before emitting ConstantValue attribute.
9013
9014 2001-08-30  Per Bothner  <per@bothner.com>
9015
9016         * parse.y (resolve_qualified_expression_name):  If creating a
9017         COMPOUND_EXPR, set it's type correctly.
9018
9019 2001-08-30  Per Bothner  <per@bothner.com>
9020
9021         * jcf-io.c (open_class):  Set filename field.
9022
9023         * jcf-parse,c (parse_class_file):  Set current_function_decl
9024         for better error message when Code attribute is missing.
9025
9026         * lang.c (put_decl_node, lang_print_error):  Re-arrange for
9027         better diagnostics, especially for constructors.
9028
9029 2001-08-30  Per Bothner  <per@bothner.com>
9030
9031         * jcf-write.c (generate_classfile):  Don't write ConstantValue
9032         attribute if field is not final, for compatibility with jdk.
9033
9034         * jcf-write.c (generate_classfile):  Convert ConstantValue values
9035         to correct type.  Work-around for front-end bug.
9036         * class.c (set_constant_value):  Error if constant has wrong type.
9037
9038 2001-08-30  Per Bothner  <per@bothner.com>
9039
9040         * jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
9041         "Double" are printed at verbosity 1.
9042
9043         * jcf-dump.c (main):  Disable flag_print_attributes if --javap.
9044
9045         * jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.
9046
9047 2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
9048
9049         * parse.y (patch_assignment): Don't verify final re-assignment here.
9050         (java_complete_lhs): Verify assignments to finals calling
9051         patch_assignment. Verify re-assignments to finals before calling
9052         patch_assignment.
9053
9054 2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>
9055
9056         * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
9057         Fixes PR java/1413
9058
9059 2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
9060
9061         * lex.c (java_lex): new local found_hex_digits. Set and then used
9062         in test to reject invalid hexadecimal numbers.
9063         * parse.y (java_complete_tree): Prevent unwanted cast with
9064         initialized floating point finals.
9065         (patch_binop): Emit a warning when detecting a division by zero,
9066         mark result not constant, don't simplify non integer division.
9067
9068 2001-08-28  Per Bothner  <per@bothner.com>
9069
9070         * jcf-write.c  (generate_bytecode_insns):  For increments and
9071         decrements just recurse to push constant.  Improvement on Mark's patch.
9072
9073 2001-08-28  Mark Mitchell  <mark@codesourcery.com>
9074
9075         * jcf-write.c (generate_bytecode_insns): Generate an integer to
9076         real conversion for increments and decrements of reals.
9077
9078 2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9079
9080         * parse.y (resolve_qualified_expression_name): Handle unresolved
9081         qualified expressions, prevent numerical qualifiers, fixed typo.
9082         Fixes PR java/4141
9083
9084 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
9085
9086         * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
9087         don't report anything but deprecated class when marked so. Handle
9088         VAR_DECL.
9089         (patch_method_invocation): Check deprecation on methods and types.
9090         (patch_binop): code becomes an enum tree_code, added default: to
9091         switch to handle that. Detect division by zero, try to fold and
9092         return before using a subroutine.
9093
9094 2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
9095
9096         * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
9097         file smaller than 4 bytes.
9098         * parse.y (check_inner_circular_reference): New function.
9099         (check_circular_reference): Likewise.
9100         (array_initializer:): Accept {,}.
9101         (java_check_circular_reference): Rewritten using
9102         check_circular_reference and check_inner_circular_reference.
9103         (java_complete_expand_method): Unconditionally save and restore
9104         the unpurged exception list.
9105         (build_dot_class_method_invocation): Unmangle signature parameter.
9106
9107 2001-08-21  Tom Tromey  <tromey@redhat.com>
9108
9109         * decl.c (init_decl_processing): Add `throws' field to method
9110         descriptor.
9111         * class.c (make_method_value): Compute `throws' field for method.
9112
9113 2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
9114
9115         * parse.y (resolve_inner_class): Keep local_enclosing to NULL if
9116         circularity is detected.
9117         (ctors_unchecked_throws_clause_p): Fixed leading comment.
9118
9119 2001-08-17  Richard Henderson  <rth@redhat.com>
9120
9121         * class.c (emit_register_classes): Add align parameter to
9122         call to assemble_integer.
9123
9124 2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>
9125
9126         * jcf-parse.c (load_class): New locals saved and class_loaded. If
9127         loading a class_or_name fails, try considering an innerclass name
9128         and load the enclosing context.
9129         * parse.y (resolve_inner_class): New function.
9130         (find_as_inner_class): Added leading comment.
9131         (register_incomplete_type): Keep the current context as enclosing
9132         context for JDEP_FIELD dependencies.
9133         (do_resolve_class): Locals new_class_decl and super initialized to
9134         NULL. Call resolve_inner_class, explore the enclosing context
9135         superclass if necessary.
9136         Fixes PR java/4007
9137
9138 2001-08-16  Tom Tromey  <tromey@redhat.com>
9139
9140         * jcf-dump.c (main): Updated for change to jcf_path_seal.
9141         * gjavah.c (main): Updated for change to jcf_path_seal.
9142         * lang.c (version_flag): New global.
9143         (java_decode_option): Recognize `-version'.
9144         (java_init): Update for change to jcf_path_seal.
9145         * jcf.h (jcf_path_seal): Added `print' argument.
9146         * jcf-path.c (jcf_path_seal): Added `print' argument.
9147
9148 2001-08-13  Zack Weinberg  <zackw@panix.com>
9149
9150         * Make-lang.in (java/decl.o): Update dependencies.
9151         * decl.c: Include libfuncs.h, don't include toplev.h.
9152
9153 2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
9154
9155         * decl.c (init_decl_processing): exception_type_node,
9156         class_not_found_type_node, and no_class_def_found_type_node
9157         initialized. predef_filenames augmented accordingly.
9158         instinit_identifier_node initialized.
9159         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
9160         * java-tree.h (enum java_tree_index): New entries
9161         JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
9162         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
9163         (exception_type_node): New macro.
9164         (class_not_found_type_node): Likewise.
9165         (no_class_def_found_type_node): Likewise.
9166         (instinit_identifier_node): Likewise.
9167         (PREDEF_FILENAMES_SIZE): Adjusted.
9168         (TYPE_HAS_FINAL_VARIABLE): Fixed typo.
9169         (struct lang_type): Fixed typo in bitfield name.
9170         (DECL_INSTINIT_P): New macro.
9171         (ID_INSTINIT_P): Likewise.
9172         * jcf-write.c (generate_classfile): instinit$ bears the Synthetic
9173         attribute.
9174         * parse.y (encapsulate_with_try_catch): New function.
9175         (generate_instinit): Likewise.
9176         (build_instinit_invocation): Likewise.
9177         (ctors_unchecked_throws_clause_p): Likewise.
9178         (add_instance_initializer): Deleted.
9179         (build_instance_initializer): Likewise.
9180         (in_instance_initializer): Likewise.
9181         (check_method_redefinition): instinit$ not to be verified.
9182         (java_complete_expand_methods): Generate instinit$, simplified code.
9183         (build_dot_class_method): Eliminated unnecessary locals. Use
9184         encapsulate_with_try_catch, removed unnecessary code.
9185         (fix_constructors): New local iii. Use build_instinit_invocation.
9186         (patch_method_invocation): Added comment.
9187         (maybe_use_access_method): Don't consider instinit$.
9188         (find_applicable_accessible_methods_list): Shorten the search for
9189         instinit$ too.
9190         (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
9191         (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
9192         (patch_throw_statement): Likewise. Fixed typo.
9193
9194 2001-08-12  David Edelsohn  <edelsohn@gnu.org>
9195
9196         Revert:
9197         2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9198         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
9199         ASM_FINAL_SPEC.
9200         (lang_specific_pre_link): Use set_input to set input_filename.
9201         Append `main' here.
9202         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
9203         (main): Fix definition.
9204         Strip `main' from classname.
9205         Fixes PR java/227.
9206
9207 2001-08-11  Zack Weinberg  <zackw@panix.com>
9208
9209         * lex.h: Don't include setjmp.h.  Don't define
9210         SET_FLOAT_HANDLER or prototype set_float_handler.
9211
9212 2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9213
9214         * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
9215         `poplevel' in the right order.
9216
9217 2001-08-09  Richard Henderson  <rth@redhat.com>
9218
9219         * Make-lang.in (class.o): Depend on TARGET_H.
9220         * class.c (emit_register_classes): Use target hooks instead of
9221         assemble_constructor and assemble_destructor.
9222
9223 2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>
9224
9225         * check-init.c (flags.h): Include
9226         (check_init): Don't report uninitialized static class
9227         initialization flags, don't free bit index when doing static class
9228         initialization optimization.
9229         (check_for_initialization): Return type changed to `unsigned int.'
9230         (attach_initialized_static_class): New function.
9231         * class.c (add_method_1): Create the initialized static class
9232         table if necessary.
9233         (finish_class): Always emit deferred inline methods.
9234         * decl.c (emit_init_test_initialization): Moved to expr.c
9235         (complete_start_java_method): Don't traverse
9236         DECL_FUNCTION_INIT_TEST_TABLE.
9237         (lang_mark_tree): Mark hash tables in function decls.
9238         * expr.c (emit_init_test_initialization): Moved from decl.c.
9239         (build_class_init): Create LAG_DECL_SPECIFIC for the static class
9240         initialization flag, set DECL_CONTEXT and
9241         LOCAL_CLASS_INITIALIZATION_FLAG.
9242         (java_lang_expand_expr): Emit initialization code for static class
9243         initialized flags when entering block, if necessary.
9244         * gcj.texi (-fno-optimize-static-class-initialization): Documented.
9245         * java-tree.h (flag_optimize_sci): New global variable declaration.
9246         (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
9247         (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
9248         (LOCAL_FINAL_P): Fixed typo in comment.
9249         (FINAL_VARIABLE_P): Likewise.
9250         (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
9251         (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
9252         (struct lang_decl): New fields `ict', `smic' and `cif.'
9253         (check_for_initialization): New returned value for global.
9254         (attach_initialized_static_class): New global function.
9255         (STATIC_CLASS_INIT_OPT_P): New macro.
9256         * lang-options.h (-fno-optimize-static-class-initialization): New flag.
9257         * lang.c (java_decode_option): Handle
9258         `-fno-optimize-static-class-initialization'
9259         * parse.y (start_complete_expand_method): New function.
9260         (java_expand_method_bodies): Likewise.
9261         (attach_init_test_initialization_flags): Likewise.
9262         (adjust_init_test_initialization): Likewise.
9263         (emit_test_initialization): Likewise.
9264         (java_complete_expand_methods): Nullify abstract and native method
9265         bodies.
9266         (java_complete_expand_method): New locals `fbody', `block_body'
9267         and `exception_copy.' Reorganized: directly return on empty method
9268         bodies, call `start_complete_expand_method', remember definitely
9269         initialized static class in function, don't expand method bodies.
9270         (java_expand_classes): Call `java_expand_method_bodies' before
9271         `finish_class' when compiling to native.
9272         (resolve_expression_name): Use `orig' after building outer class
9273         field access.
9274         (patch_invoke): Remember static method invocations.
9275
9276 2001-08-06  Richard Henderson  <rth@redhat.com>
9277
9278         * class.c (emit_register_classes): Pass a symbol_ref and priority
9279         to assemble_constructor.
9280
9281 2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>
9282
9283         * java-tree.h (all_class_filename): New macro.
9284         (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
9285         (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
9286         newly created IDENTIFIER_NODE to `all_class_filename.'
9287
9288 2001-08-01  Jeff Sturm  <jsturm@one-point.com>
9289
9290         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
9291         Use ggc_add_tree_root to register roots.
9292
9293 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
9294
9295         * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
9296         second operand calling check_init.
9297         * decl.c (complete_start_java_method): Swaped second and third
9298         arguments while creating WITH_CLEANUP_EXPR node.
9299         * jcf-write.c (generate_bytecode_insns): Use second operand
9300         instead of third when handling WITH_CLEANUP_EXPR.
9301         * parse.y (java_complete_lhs): Expand second operand of
9302         WITH_CLEANUP_EXPR nodes.
9303         (patch_synchronized_statement): Swaped second and third arguments
9304         while creating WITH_CLEANUP_EXPR node.
9305
9306 2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
9307
9308         * parse.y (create_interface): Avoid cyclic inheritance report when
9309         syntax error encountered during class definition.
9310         Fixes PR java/2956
9311
9312 2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9313
9314         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
9315         ASM_FINAL_SPEC.
9316         (lang_specific_pre_link): Use set_input to set input_filename.
9317         Append `main' here.
9318         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
9319         (main): Fix definition.
9320         Strip `main' from classname.
9321         Fixes PR java/227.
9322
9323 2001-07-18  Tom Tromey  <tromey@redhat.com>
9324
9325         For PR java/2812:
9326         * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
9327         * lex.c (java_new_lexer): Use ICONV_CONST.
9328         (java_read_char): Likewise.
9329         * Make-lang.in (jc1$(exeext)): Link against LIBICONV.
9330         (jv-scan$(exeext)): Likewise.
9331
9332 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
9333
9334         * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
9335         * parse.y (check_class_interface_creation): Allow `private' if the
9336         enclosing is not an interface.
9337         (create_interface): Interface tagged public if the enclosing
9338         context is an interface.
9339         (create_class): Class tagged public if the enclosing context
9340         is an interface.
9341         Fixes PR java/2959
9342
9343 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
9344
9345         * class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
9346         Fixes PR java/2665
9347
9348 2001-07-14  Tim Josling  <tej@melbpc.org.au>
9349
9350         * check-init.c (check_init): Remove references to EXPON_EXPR.
9351
9352 2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
9353
9354         * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
9355         TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
9356         Fixes PR java/3602
9357
9358 2001-07-13  Tom Tromey  <tromey@redhat.com>
9359
9360         * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
9361         invocation.
9362
9363 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
9364
9365         * parse.y (patch_method_invocation): Don't override primary if one
9366         is already provided, but let this$<n> be built. Fixed comment.
9367
9368 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
9369
9370         * parse.y (empty_statement:): Report empty statement error only
9371         when found at class declaration level.
9372         Fixes PR java/3635
9373
9374 2001-07-12  Tom Tromey  <tromey@redhat.com>
9375
9376         * expr.c (expand_load_internal): New function.
9377         (LOAD_INTERNAL): Use it.
9378
9379 2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>
9380
9381         * parse.y (verify_constructor_super): Compare anonymous class ctor
9382         args with `valid_method_invocation_conversion_p.'
9383         Fixes PR java/3285
9384
9385 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
9386
9387         * lang-specs.h: Forbit the use if `-femit-class-file{s}' without
9388         `-fsyntax-only.' Fixes PR java/3248
9389
9390 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
9391
9392         * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
9393
9394 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
9395
9396         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
9397         current function is static. Fixes PR java/1970
9398
9399 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9400
9401         * parse.y (patch_method_invocation): Add enclosing context to ctor
9402         calls if necessary. Fixes PR java/2953
9403
9404 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9405
9406         * parse.y (resolve_package): Abort if qualified expression member
9407         isn't right.
9408         (qualify_ambiguous_name): Don't qualify as type if `this' in use.
9409         Fixes PR java/1391
9410
9411 2001-07-07  Zack Weinberg  <zackw@stanford.edu>
9412
9413         * verify.c: Don't use // comments.
9414
9415 2001-07-05  Tom Tromey  <tromey@redhat.com>
9416
9417         * lang.c (flag_assume_compiled): Removed.
9418         * java-tree.h (flag_assume_compiled): Removed.
9419         * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
9420         -fhash-synchronization, -fuse-divide-subroutine,
9421         -fcheck-references, -femit-class-file, -femit-class-files,
9422         -fassume-compiled.  Updated --encoding information.  Changed
9423         -foutput-class-dir to `-d'.
9424
9425 2001-07-04  Daniel Berlin  <dan@cgsoftware.com>
9426
9427         * jcf-parse.c (parse_class_file): Add lineno parameter to
9428         debug_start_source_file call.
9429
9430 2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>
9431
9432         * gcj.texi: Use gpl.texi.
9433         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
9434         dependencies and use doc/include in search path.
9435
9436 2001-07-03  Jeff Sturm  <jsturm@one-point.com>
9437
9438         * parse.y (fix_constructors): Test if a CALL_EXPR invokes
9439         `this'.  If so, don't build instance initializers.
9440
9441 2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
9442
9443         * parse.y (resolve_expression_name): Improved error message for
9444         inner class cases. Fixes PR java/1958
9445
9446 2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>
9447
9448         * lang.c: #include diagnostic.h
9449         (lang_print_error): Add a `diagnostic_context *' parameter.
9450         (java_dummy_print): Likewise.
9451         * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h
9452
9453 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9454
9455         * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
9456         * jcf.h (typedef struct JCF): New bitfield `finished.'
9457         (JCF_FINISH): Set `finished.'
9458         (JCF_ZERO): Reset `finished.'
9459         Fixes PR java/2633
9460
9461 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9462
9463         * parse.y (class_body_declaration:): Don't install empty instance
9464         initializers.
9465         Fixes PR java/1314
9466
9467 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9468
9469         * class.c (set_super_info): Call `set_class_decl_access_flags.'
9470         (set_class_decl_access_flags): New function.
9471         * java-tree.h (set_class_decl_access_flags): New prototype.
9472         * jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
9473         (parse_class_file): New local `decl_max_locals.' Take wide types
9474         into account to compute DECL_MAX_LOCALS.
9475         * parse.y (type_import_on_demand_declaration:): Ignore duplicate
9476         imports on demand.
9477
9478 2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>
9479
9480         * zipfile.h: Use GCC_JCF_H instead of JCF_H.
9481
9482 2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
9483
9484         * class.c (java_hash_tree_node): Fixed indentation in leading comment.
9485         * parse.y (do_resolve_class): Moved comments out to leading comment
9486         section. Removed local `start', New local `_ht' and
9487         `circularity_hash.'  Record `enclosing' in hash table and search
9488         it to detect circularity.  Use `enclosing' as an argument to
9489         `lookup_cl.' Free the hash table when done.
9490
9491 2001-06-19  Tom Tromey  <tromey@redhat.com>
9492
9493         * lex.c (java_read_char): Disallow invalid and overlong
9494         sequences.  Fixes PR java/2319.
9495
9496 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
9497
9498         * decl.c (create_primitive_vtable): Don't call make_decl_rtl.
9499
9500 2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
9501
9502         * expr.c (force_evaluation_order): Match wrapped ctor calls, locate
9503         arguments accordingly.
9504
9505 2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>
9506
9507         * gcj.texi: Move contents to just after title page.
9508
9509 2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>
9510
9511         * parse.y (type_literals:): Use `build_incomplete_class_ref' with
9512         builtin type.
9513         (patch_incomplete_class_ref): Build the class ref, build the class
9514         init if necessary, complete the tree.
9515         Fixes PR java/2605
9516
9517 2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
9518
9519         * parse.y (lookup_field_wrapper): Test `name' code.
9520         (resolve_qualified_expression_name): Test `qual_wfl' code.
9521         (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
9522         handle `qual_wfl' by code.
9523         (maybe_build_primttype_type_ref): Test `wfl' code.
9524
9525 2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
9526
9527         * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
9528         fdl.texi.
9529         (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
9530         the dvi file in the java directory.
9531
9532 2001-05-25  Sam TH  <sam@uchicago.edu>
9533
9534         * gen-table.pl javaop.h jcf.h lex.h,
9535         parse.h: Fix header include guards.
9536
9537 2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>
9538
9539         * jv-scan.c (version): Update copyright year.
9540
9541 2001-05-21  Per Bothner  <per@bothner.com>
9542
9543         * jcf-parse.c (read_class):  If class is from .class or .zip file
9544         and it's already been read, don't push/pop parser context.
9545
9546 2001-05-18  Per Bothner  <per@bothner.com>
9547
9548         * jvspec.c (lang_specific_pre_link):  Re-arrange the linker
9549         command line so the jvgenmain-generated main program comes first.
9550
9551 2001-05-15  Tom Tromey  <tromey@redhat.com>
9552
9553         * class.c (build_utf8_ref): Don't generate identifier based on
9554         utf8const contents.
9555
9556 2001-05-12  Richard Henderson  <rth@redhat.com>
9557
9558         * java-tree.def (JAVA_EXC_OBJ_EXPR): New.
9559         * expr.c (java_lang_expand_expr): Expand it.
9560         (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
9561         calling build_exception_object_ref.
9562         * parse.y (catch_clause_parameter): Likewise.
9563         (build_dot_class_method): Likewise.
9564         (try_reference_assignconv): Likewise.
9565         * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
9566         * jcf-write.c (generate_bytecode_insns): Likewise.
9567
9568 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
9569
9570         * parse.y (build_unresolved_array_type): Set
9571         EXPR_WFL_QUALIFICATION on the newly created wfl.
9572         Fixes PR java/2538. Fixes PR java/2535.
9573
9574 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
9575
9576         * parse.y (fix_constructors): Removed unnecessary assignment to
9577         local. Moved assignment to `this$<n>', fixed comments and
9578         indentation.
9579         (build_wfl_wrap): Fixed indentation.
9580         Fixes PR java/2598, java/2579 and java/2658.
9581
9582 2001-05-03  Mo DeJong  <mdejong@redhat.com>
9583
9584         * lex.c (java_new_lexer): Call iconv_close on temp handle used to
9585         check for byte swap.
9586
9587 2000-05-02  Jeff Sturm  <jsturm@one-point.com>
9588
9589         * expr.c (build_class_init): Move MODIFY_EXPR
9590         outside of COND_EXPR.  Remove variable `call'.
9591
9592 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9593
9594         * decl.c: NULL_PTR -> NULL.
9595         * jcf-write.c: Likewise.
9596
9597 2001-05-01  Tom Tromey  <tromey@redhat.com>
9598
9599         * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
9600         (java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
9601         * gcj.texi: Updated copyright text.  Include fdl.texi.
9602         (Top): Link to new node.
9603
9604 2001-05-01  Per Bothner  <per@bothner.com>
9605
9606         * parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.
9607
9608 2001-05-01  Per Bothner  <per@bothner.com>
9609
9610         * parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
9611         import_list contains the name, not the TREE_PURPOSE.
9612
9613 2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9614
9615         * jcf-io.c (read_zip_member): Cast to long in comparison with
9616         signed value.
9617
9618         * jvspec.c (lang_specific_driver): Initialize variables.
9619
9620         * mangle.c (find_compression_record_match): Likewise.
9621
9622         * typeck.c (build_null_signature): Provide static prototype.  Mark
9623         parameter with ATTRIBUTE_UNUSED.
9624
9625         * verify.c (verify_jvm_instructions): Initialize variable.
9626
9627 2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
9628
9629         * parse.y (do_resolve_class): Check for cyclic inheritance during
9630         inner class resolution.
9631
9632 2001-04-27  Per Bothner  <per@bothner.com>
9633
9634         * parse.y (java_expand_classes):  Don't change ctxp_for_generation
9635         while iterating, since that could cause gc to lose stuff.
9636
9637 2001-04-26  Per Bothner  <per@bothner.com>
9638
9639         Fix method search wrt scope of inner classes to match JLS2.
9640         * typeck.c (build_null_signature):  New static function.
9641         (has_method):  New function.  Uses build_null_signature and lookup_do.
9642         * java-tree.h (has_method):  New declaration.
9643         * parse.y (find_applicable_accessible_methods_list):  Do not search
9644         context of inner classes here.
9645         (patch_method_invocation):  Search scope, ie. current and outer clases,
9646         for method matching simple name, to find class.
9647
9648 2001-04-26  Per Bothner  <per@bothner.com>
9649
9650         * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
9651         Fix thinko:  If a single case, use if_icmpeq, not ifeq.
9652
9653         * constants.c (find_methodref_with_class_index):  New function.
9654         (find_methodref_index):  Use find_methodref_with_class_index.
9655         * java-tree.h (find_methodref_with_class_index):  New declaration.
9656         * jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
9657         DECL_CONTEXT, instead use new find_methodref_with_class_index function.
9658         If context changed from interface to class, don't use invokeinterface.
9659
9660 2001-04-25  Per Bothner  <per@bothner.com>
9661
9662         * verify.c (verify_jvm_instructions):  For field instructions,
9663         check that field index is valid.  For invoke instructions, check that
9664         method index is valid.
9665
9666 2001-04-25  Alexandre Oliva  <aoliva@redhat.com>
9667
9668         * config-lang.in (target_libs): Copy from $libgcj_saved.
9669
9670 2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
9671
9672         * decl.c (init_decl_processing): Add new class "protectionDomain"
9673         field.
9674         * class.c (make_class_data): Set initial value for "protectionDomain".
9675
9676 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9677
9678         * jvspec.c (lang_specific_driver): Fix memory allocation
9679         deficit, by using concat in lieu of xmalloc/sprintf.
9680
9681 2001-04-20  Per Bothner  <per@bothner.com>
9682
9683         Fixes to compile multiple .class files at once.
9684         * decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
9685         * java-tree.h (CLASS_PARSED_P):  New macro.
9686         (CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
9687         * jcf-parse.c (jcf_parse_source):  Inline into read_class.
9688         (read_class):  Avoid some code duplication.
9689         Don't call JCF_FINISH for a .class file - might be needed later.
9690         (jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
9691         rather than CLASS_LOADED_P, since latter implies class laid out.
9692         (yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
9693         * parse.y:  Don't need to set CLASS_LOADED_P for array types.
9694
9695 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9696
9697         * Make-lang.in (java/boehm.o): Depend on toplev.h.
9698
9699         * boehm.c: Include toplev.h.
9700
9701 2001-04-06  Tom Tromey  <tromey@redhat.com>
9702             Alexandre Petit-Bianco  <apbianco@redhat.com>
9703
9704         Fix for PR gcj/1404 and PR gcj/2332:
9705         * parse.y (build_array_from_name): If we use the type_wfl then
9706         accumulate dimensions from the original type as well.
9707         (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
9708
9709 2001-04-06  Tom Tromey  <tromey@redhat.com>
9710
9711         * parse.y (analyze_clinit_body): Return true if the second operand
9712         of a METHOD_EXPR is nonzero.
9713
9714 2001-04-06  Tom Tromey  <tromey@redhat.com>
9715
9716         * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
9717         directory.
9718         ($(srcdir)/java/parse.c): Likewise.
9719
9720 2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
9721
9722         * gcj.texi: Use `which-gcj' instead of `which-g77.'
9723         (version-gcc): Initialized.
9724         (which-gcj): Likewise.
9725
9726 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
9727
9728         * java-tree.h (struct lang_decl): New macro
9729         `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
9730         * parse.y (build_instance_initializer): New function.
9731         (add_instance_initializer): Use it.
9732         (java_fix_constructors): Set `current_class' before fix pass.
9733         (fix_constructors): Just return if already fixed. Move `super()'
9734         invocation ahead. Use `build_instance_initializer.'
9735         Fixes PR java/1315.
9736
9737 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
9738
9739         * parse.y (resolve_qualified_expression_name): Pass field's
9740         DECL_CONTEXT to `not_accessible_p.'
9741         (not_accessible_p): Changed parameters order in `inherits_from_p'
9742         invocation.
9743
9744 2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>
9745
9746         * lang-options.h: Add flag_check_references.
9747
9748 2001-04-04  Per Bothner  <per@bothner.com>
9749
9750         * java-tree.h (CONSTANT_VALUE_P):  New macro.
9751         * jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
9752         * parse.y (maybe_build_class_init_for_field):  New static function.
9753         (resolve_expression_name, resolve_field_access):  Use
9754         maybe_build_class_init_for_field instead of build_class_init
9755         This does not do the init if the field is compile-time-constant.
9756         (resolve_field_access):  Simplify.
9757
9758         * parse.y (fold_constant_for_init):  Merge test into switch.
9759
9760 2001-04-03  Zack Weinberg  <zackw@stanford.edu>
9761
9762         * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
9763         on gansidecl.h.
9764         * buffer.c, jvgenmain.c: Don't include gansidecl.h.
9765
9766 2001-04-02  Zack Weinberg  <zackw@stanford.edu>
9767
9768         * expr.c (pop_type_0): Save the result of the first
9769         lang_printable_name call in a scratch buffer, so it
9770         won't be clobbered by the second call.
9771
9772 2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
9773
9774         * parse-scan.y (array_type:): Rewritten.
9775         (type_declaration:): `empty_statement' replaces `SC_TK.'
9776         (class_member_declaration:): `empty statement' added.
9777         (method_body:): Simplified.
9778         (static_initializer:): Likewise.
9779         (primary_no_new_array:): Use `type_literals.'
9780         (type_literals:): New rule.
9781         (dims:): Set and update `bracket_count.'
9782         Fixes PR java/1074. Fixes PR java/2412.
9783
9784 2001-03-28  Hans Boehm  <boehm@acm.org>
9785
9786         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
9787         (get_boehm_type_descriptor): Set type on returned value to be a
9788         pointer length integer.
9789
9790 2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9791
9792         * expr.c (pop_type_0): Call `concat' rather than building the
9793         string manually.
9794         (pop_type): Add format specifier in call to `error'.
9795
9796         * parse.y (patch_method_invocation): Avoid casting away
9797         const-ness.
9798
9799 2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>
9800
9801         * jvgenmain.c (do_mangle_classname): End string constant with '\0'.
9802
9803 2001-03-28  Richard Henderson  <rth@redhat.com>
9804
9805         IA-64 ABI Exception Handling:
9806         * Make-lang.in (except.o): Don't depend on eh-common.h.
9807         * check-init.c (check_init): Handle EXC_PTR_EXPR.
9808         * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
9809         [soft_exceptioninfo_call_node]: Remove.
9810         [eh_personality_libfunc, lang_eh_runtime_type]: New.
9811         (end_java_method): No emit_handlers.
9812         * except.c (java_set_exception_lang_code): Remove.
9813         (method_init_exceptions): Don't call it.
9814         (prepare_eh_table_type): No CATCH_ALL_TYPE.
9815         (build_exception_object_ref): New.
9816         (expand_end_java_handler): Update for except.h name changes.
9817         (emit_handlers, expand_resume_after_catch): Remove.
9818         * expr.c (java_lang_expand_expr): Update for except.h name changes.
9819         (process_jvm_instruction): Use build_exception_object_ref.
9820         * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
9821         (soft_exceptioninfo_call_node): Remove.
9822         (build_exception_object_ref): Declare.
9823         * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
9824         soft_exceptioninfo_call_node.  Move processing ...
9825         [EXC_PTR_EXPR]: ... here.
9826         * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
9827         * parse.y (catch_clause_parameter): Use build_exception_object_ref.
9828         (source_end_java_method): No java_set_exception_lang_code or
9829         emit_handlers.
9830         (build_dot_class_method): Use build_exception_object_ref.
9831         (try_reference_assignconv): Check EXC_PTR_EXPR not
9832         soft_exceptioninfo_call_node.
9833
9834 2001-03-28  Richard Henderson  <rth@redhat.com>
9835
9836         * java-tree.h (throw_node): Define as a single member of
9837         java_global_trees instead of a separate array.
9838         (JTI_THROW_NODE): New.
9839         * decl.c (throw_node): Don't declare.
9840         (init_decl_processing): Init a scalar throw_node.
9841         Don't register it for gc.
9842         * check-init.c (check_init): Reference scalar throw_node.
9843         * expr.c (build_java_athrow): Likewise.
9844         * jcf-write.c (generate_bytecode_insns): Likewise.
9845         * parse.h (BUILD_THROW): Likewise.
9846
9847 2001-03-28  Richard Henderson  <rth@redhat.com>
9848
9849         * decl.c (end_java_method): Do not save and restore
9850         flag_non_call_exceptions.
9851         * parse.y (source_end_java_method): Likewise.
9852         * lang.c (flag_exceptions): Don't declare.
9853         (java_init_options): Set flag_non_call_exceptions.  Set
9854         flag_exceptions here ...
9855         (java_init): ... not here.
9856
9857 2001-03-27  Richard Henderson  <rth@redhat.com>
9858
9859         * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
9860         exceptions_via_longjmp.
9861
9862         * lang.c (flag_new_exceptions): Don't declare it.
9863         (java_init_options): Or set it.
9864
9865 2001-03-27  Richard Henderson  <rth@redhat.com>
9866
9867         * decl.c (end_java_method): Rename asynchronous_exceptions to
9868         flag_non_call_exceptions.
9869         * parse.y (source_end_java_method): Likewise.
9870
9871 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9872
9873         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
9874
9875 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
9876
9877         * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.
9878
9879 2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
9880
9881         * parse.y (find_as_inner_class): Follow current package
9882         indications not to mistakingly load an unrelated class.
9883
9884 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9885
9886         * constants.c (PUTN): Use memcpy, not bcopy.
9887
9888         * lex.c (java_read_char): Use memmove, not bcopy.
9889
9890         * parse.y (java_parser_context_resume): Use memcpy, not bcopy.
9891
9892 2001-03-23  Per Bothner  <per@bothner.com>
9893
9894         * verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
9895         macro for better error pin-pointing.
9896         * java-tree.h:  Fix typo in comment.
9897
9898         * jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
9899         Don't include jsr/goto in exception range.
9900         Check if start and end of exception range are the same (also TRY_EXPR).
9901         Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
9902         However, do emit the following goto even if try_block is empty.
9903         Defer freeing exception_decl until after the finalizer, to make
9904         sure the local isn't reused in the finalizer.  Fixes PR java/1208.
9905
9906         * parse.y (java_complete_lhs):  If the try-clause is empty, just
9907         return the finally-clause and vice versa.
9908
9909 2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
9910
9911         * gcj.texi (Input Options): documented the check for attribute
9912         `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
9913         * java-tree.h (flag_force_classes_archive_check): Declared extern.
9914         * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
9915         (jcf_parse): Check for the right classes archive if necessary.
9916         * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
9917         (jcf_parse_fields): Fixed indentation.
9918         * jcf-write.c (append_gcj_attribute): New function.
9919         (generate_classfile): Compute the attribute count, invoke
9920         `append_gcj_attribute'.
9921         * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
9922         turned into bit-fields. New bit-field `right_zip.'
9923         (JCF_ZERO): Set `right_zip' to zero.
9924         * lang-options.h (-fforce-classes-archive-check): Added flag.
9925         * lang.c (flag_force_classes_archive_check): New flag.
9926         (lang_f_options): New entry `force-classes-archive-check.'
9927         Fixes PR java/1213.
9928
9929 2001-02-07  Andrew Haley  <aph@redhat.com>
9930
9931         * gcj.texi (Configure-time Options): Add -fcheck-references.
9932         * expr.c (build_java_indirect_ref): New function.
9933         (java_check_reference): New function.
9934         (build_java_array_length_access): Use build_java_indirect_ref to
9935         check for null references.
9936         (build_java_arrayaccess): Likewise.
9937         (build_get_class): Likewise.
9938         (build_field_ref): Likewise.
9939         (invoke_build_dtable): Likewise.
9940         (build_invokeinterface): Likewise.
9941         * lang.c (lang_f_options): Add flag_check_references.
9942         * jvspec.c (jvgenmain_spec): Add flag_check_references.
9943         * java-tree.h (flag_check_references): New variable.
9944         * lang.c (flag_check_references): Likewise.
9945         * parse.y (patch_invoke): Use java_check_reference.
9946         (patch_assignment): Allow for extra nesting in
9947         _Jv_CheckArrayStore.
9948
9949 2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>
9950
9951         * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
9952         * lex.c (cxx_keywords): Likewise.
9953
9954 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
9955
9956         * parse.y (qualify_ambiguous_name): Broaden `length'
9957         recognition. Help MODIFY_EXPR be resolved as expression names.
9958         Fixes PR java/2066. Fixes PR java/2400.
9959
9960 2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>
9961
9962         * gjavah.c (process_file): Mark interface definitions with
9963         "__attribute__ ((java_interface))".
9964
9965 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
9966
9967         * class.c (layout_class): Fixed push_super_field's second
9968         argument. Fixes PR java/2333.
9969         (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
9970         too early to lay innerclasses out.
9971
9972 2001-03-20  Tom Tromey  <tromey@redhat.com>
9973             Alexandre Petit-Bianco <apbianco@redhat.com>
9974
9975         * parse.y (patch_assignment): Handle the case of a SAVE_EXPR
9976         inside an array reference. Insertion of the array store check
9977         rewritten. Fixes PR java/2299.
9978
9979 2001-03-20  Tom Tromey  <tromey@redhat.com>
9980
9981         * lex.c (java_read_unicode): Only accept leading `u's.
9982
9983 2001-03-20  Tom Tromey  <tromey@redhat.com>
9984
9985         * jcf-parse.c (read_class): Initialize `class'.
9986
9987 2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
9988
9989         * jcf_parse.c (jcf_parse): Eliminate unused variable.
9990
9991 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
9992
9993         * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
9994         (layout_class): Likewise.
9995         (layout_class_method): Likewise.
9996         (emit_register_classes): Likewise.
9997         * decl.c (builtin_function): Likewise.
9998         (give_name_to_locals): Likewise.
9999
10000 2001-03-19  Per Bothner  <per@bothner.com>
10001
10002         * jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
10003         before trying to load an inner class.
10004
10005         Fixes to process to command-line .class files in two passes.
10006         * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
10007         (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
10008         (CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
10009         * class.c (is_compiled_class):  Fix for renamed flag.
10010         * parse.y (maybe_create_class_interface_decl):  Likewise.
10011         * jcf-parse.c (yyparse):  Also set if compiling .class files.
10012         * jcf-parse.c (read_class);  Read current_class.
10013         (jcf_parse):  Make static.
10014         (load_inner_classes):  New function, with code moved from jcf_parse,
10015         because we need to inner classes after the command-line files are read.
10016         (yyparse):  Set finput to NULL when it doesn't need to be closed.
10017         Reduce use of main_jcf (basically only for archive) and
10018         use finput instead of main_jcf->read_state.
10019         Inline jcf_figure_file_type into yyparse.
10020         Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
10021         Defer load_inner_classes and parse_class_file to a second pass,
10022         after we've correctly mapped command-line .clas fiels to classes.
10023         (jcf_figure_file_type):  Removed.
10024         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
10025         (JCF_ZERO):  Also clear zipd field.
10026         * zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.
10027
10028 2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
10029
10030         * jcf-parse.c (yyparse): Change ch from char * to char.
10031
10032 2001-03-19  Per Bothner  <per@bothner.com>
10033
10034         * jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
10035         Add constructed filelist-file at end, following -xjava.  Thus any .o
10036         and library files are not affected by the -xjava.  Also wrap
10037         explicit @FILE with -xjava and -xnone.
10038
10039 2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>
10040
10041         * class.c (build_static_field_ref): Call make_decl_rtl() after
10042         setting the DECL_EXTERNAL flag.
10043
10044 2001-03-17  Per Bothner  <per@bothner.com>
10045
10046         * decl.c (clear_binding_level):  Fix initializer (broke 03-15).
10047
10048         * jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
10049         when result is is needed (target is STACK_TARGET).
10050
10051         * parse.h (JDEP_SOLV):  Removed.
10052         * parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.
10053
10054         * parse.y (incomplete_class_list): Removed.
10055         (obtain_incomplete_type): Don't use or set incomplete_class_list.
10056         It doesn't work if resolve_class changes the name of an array type
10057         that is on the list and then someone else looks for the modified name.
10058         Also, seems liable to break when compiling multiple source files at
10059         once.  So the simplest is to just remove incomplete_class_list -
10060         it is only a minor space win and it is not even clear it saves time.
10061
10062         * parse.y (resolve_class):  Remove unneeded promote_type.
10063
10064 2001-03-15  Per Bothner  <per@bothner.com>
10065
10066         * java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
10067         * parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
10068         * parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
10069         Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.
10070
10071         * jcf-parse.c (yyparse):  Set/reset input_filename for source file.
10072         * parse.y (java_expand_classes):  Likewise.
10073
10074         * parse.y (expand_start_java_method):  Was only called once and had a
10075         misleading name, so inline in caller java_complete_expand_method.
10076         (enter_a_block):  Likewise inline in enter_block and remove.
10077
10078         Remove junk from when gcc/java was created (by copying from C/C++).
10079         * decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
10080         (struct binding_level):  Remove fields keep, keep_if_subblocks,
10081         more_cleanups_ok, have_cleanups (which have never been used).
10082         (pushlevel, poplevel):  Remove related useless code.
10083
10084         * class.c (make_class_data):  The class_dtable_decl (i.e. the
10085         vtable for Class) should be external, except when compiling Class.
10086
10087         * jvspec.c (lang_specific_driver):  Fix -C handling.
10088         Check -save-temps to see if temp @FILE should be deleted.
10089         Follow-up to/fix for February 16 patch.
10090
10091         * verify.c (verify_jvm_instructions):  Better error msgs for dup.
10092         (type_stack_dup):  Remove no-longer neded error check.
10093
10094 2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>
10095
10096         * mangle.c (mangle_record_type): Rename 'from_pointer' argument
10097         to 'for_pointer'. If this type is for a pointer (argument) mangling,
10098         don't surround the element with 'N..E' if the type name is
10099         unqualified.
10100
10101 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
10102
10103         * class.c (build_static_field_ref): Use COPY_DECL_RTL,
10104         DECL_RTL_SET_P, etc.
10105         (make_method_value): Likewise.
10106         (get_dispatch_table): Likewise.
10107
10108         * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
10109
10110 2001-03-07  Tom Tromey  <tromey@redhat.com>
10111
10112         * config-lang.in (lang_requires): Define.
10113
10114 2001-03-07  Brad Lucier  <lucier@math.purdue.edu>
10115
10116         * typeck.c (convert): Check flag_unsafe_math_optimizations,
10117         not flag_fast_math.
10118
10119 2001-03-05  Per Bothner  <per@bothner.com>
10120
10121         Fix a problem where rest_of_decl_compilation applied to
10122         class_dtable_decl causes problems because it was done too early,
10123         before output file was opened.
10124         * decl.c (init_decl_processing):  Remove init of class_dtable_decl.
10125         * class.c (class_dtable_decl):  Add macro - element of class_roots.
10126         (make_class_data):  Define class_dtable_decl.
10127         * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.
10128
10129 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
10130
10131         * java/class.c, java/decl.c, java/java-tree.h: Replace all
10132         uses of 'boolean' with 'bool'.
10133
10134 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
10135
10136         * lang-specs.h: Add zero initializer for cpp_spec field to all
10137         array elements.
10138
10139 2001-02-16  Per Bothner  <per@bothner.com>
10140
10141         Handle compiling multiple input files at once, and @FILE syntax.
10142         * gcj.texi:  Updated documentation to match.
10143         * java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
10144         * jcf-parse.c (parse_source_file):  Split into ...
10145         (parse_source_file_1):  New function - and:
10146         (parse_source_file_2):  New function.
10147         (yyparse):  On -ffilelist-file, open and scan named file.
10148         On first pass over files, only do parse_source_file_1.
10149         A new second pass calls parse_source_file_2 for each file to compile.
10150         (init_jcf_parse):  Call init_src_parse.
10151         * jvspec.c (INDIRECT_FILE_ARG):  New flag.
10152         (lang_specific_driver):  Support @FILELIST-FILE syntax, as well
10153         as multiple input file combined in one compilation.
10154         * lang-options.h:  Add -ffilelist-file
10155         * lang.c (flag_filelist_file):  New flag variable.
10156         (lang_f_options):  Handle -ffilelist-file.
10157         * lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
10158         * parse.h (struct parse_ctxt):  Remove fields incomplete_class and
10159         gclass_list - use global fields of src_parse_roots instead.
10160         * parse.y (src_parse_roots):  New array.
10161         (incomplete_class_list, gclass_list):  New macros.
10162         (push_parser_context, java_pop_parser_context,
10163         java_parser_context_resume):  Don't fiddle with deleted fields.
10164         (various):  Use incomplete_class gclass_list and global macros
10165         instead of parse_ctxt fields - the lists are global.
10166         (init_src_parse):  New function.
10167
10168 2001-02-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10169
10170         * decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
10171
10172 2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
10173
10174         * parse.y (check_inner_class_access): Moved declaration of local
10175         `enclosing_decl_type' to the right location.
10176
10177 2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>
10178
10179         * parse.y (parser_check_super_interface): Don't call
10180         check_pkg_class_access for an inner interface.
10181         (parser_check_super): Don't call check_pkg_class_access for inner
10182         class.
10183         (do_resolve_class): Simplify enclosing type loop. Don't call
10184         check_pkg_class_access if CL and DECL are not set.
10185         (find_in_imports_on_demand): Set DECL if class_type needed to be
10186         loaded. Don't call check_pkg_class_access for an inner class.
10187         (check_inner_class_access): Rewritten to implement member access
10188         rules as per spec 6.6.1.
10189         (check_pkg_class_access): Handle the empty package correctly.
10190         (in_same_package): New function. Determine if two classes are in the
10191         same package.
10192
10193 2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>
10194
10195         * typeck.c (build_java_array_type): Don't try to poke a public `clone'
10196         method into array types.
10197         * parse.y (patch_method_invocation): Bypass access check on clone call
10198         to array instance.
10199
10200 2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
10201
10202         * expr.c (build_instanceof): Check for arrays when trying fold to
10203         false.
10204
10205 2001-02-15  Jim Meyering  <meyering@lucent.com>
10206
10207         * Make-lang.in (java.install-common): Depend on `installdirs'.
10208         (java.install-info): Likewise.
10209
10210 2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>
10211
10212         * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.
10213
10214 2001-02-14  Tom Tromey  <tromey@redhat.com>
10215             Alexandre Petit-Bianco  <apbianco@cygnus.com>
10216
10217         Fix for PR java/1261.
10218         * typeck.c (build_java_array_type): Add public `clone' method to
10219         arrays.
10220         * parse.y (resolve_qualified_expression_name): Use current_class
10221         when checking for inaccessibility.
10222         (patch_method_invocation): Fixed error message when accessibility
10223         denied.  Added `from_super' argument.
10224
10225 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
10226
10227         * parse.y (resolve_class): Don't build a fake decl. Use the one
10228         already built.
10229         * typeck.c (build_java_array_type): Build and assign decl to array
10230         type.
10231
10232 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
10233
10234         * parse.y (not_accessible_p): Changed leading comment. Added extra
10235         `where' argument. Use it to enforce protected access rules.
10236         (resolve_qualified_expression_name): Added extra argument to
10237         not_accessible_p.
10238         (patch_method_invocation): Use argument `primary' to provide
10239         not_accessible_p with an extra argument.
10240         (lookup_method_invoke): Added extra argument to not_accessible_p.
10241         (search_applicable_method_list): Likewise.
10242
10243 2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
10244
10245         * parse.y (resolve_qualified_expression_name): Try to resolve as
10246         an inner class access only if `decl' is a TYPE_DECL.
10247
10248 2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10249
10250         * decl.c (classdollar_identifier_node): Initialize.
10251         * java-tree.h (enum java_tree_index): New entry
10252         `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
10253         (classdollar_identifier_node): New macro.
10254         (ID_CLASSDOLLAR_P): Likewise.
10255         * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
10256         (build_dot_class_method_invocation): Likewise.
10257         (find_applicable_accessible_methods_list): `class$' can't be
10258         inherited.
10259
10260 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
10261
10262         * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
10263
10264 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
10265
10266         * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
10267         * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
10268         gone.
10269
10270 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
10271
10272         * mangle_name (append_unicode_mangled_name): Emit `_' or `U'
10273         outside of the `__U' sequence too.
10274         (unicode_mangling_length): Count `_' or `U' outside of the `__U'
10275         sequence too.
10276
10277 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
10278
10279         * jvgenmain.c (error): Reversed 2001-02-01 deletion.
10280
10281 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10282
10283         * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
10284         (JVGENMAIN_OBJS): Likewise.
10285         * java-tree.h (append_gpp_mangled_name): New prototype.
10286         * jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
10287         Removed cast calling `gcc_add_root.'
10288         * jvgenmain.c (mangle_obstack): New global, initialized.
10289         (main): Use it.
10290         (do_mangle_class): Constify local `ptr.'
10291         Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
10292         append_gpp_mangle_name and update `count' if necessary.
10293         Use `mangle_obstack.'
10294         * mangle.c (append_unicode_mangled_name): Removed.
10295         (append_gpp_mangled_name): Likewise.
10296         (unicode_mangling_length): Likewise.
10297         (mangle_member_name): Return type set to `void.'
10298         (mangle_field_decl): Don't append `U' in escaped names.
10299         (mangle_method_decl): Likewise.
10300         (mangle_member_name): Just use `append_gpp_mangled_name.'
10301         * mangle_name.c: New file.
10302
10303 2001-02-07  Per Bothner  <per@bothner.com>
10304
10305         * check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.
10306
10307         * check-init.c (check_init):  Don't call done_alternative after
10308         processing loop code, as a LOOP_EXPR never terminates normally.
10309
10310 2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
10311
10312         * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.
10313
10314 2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10315
10316         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
10317         DECLs.
10318
10319 2001-02-06  Tom Tromey  <tromey@redhat.com>
10320
10321         * lex.c (java_new_lexer): Longer error message.
10322
10323 2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
10324             Alexandre Petit-Bianco  <apbianco@cygnus.com>
10325
10326         * typeck.c (build_prim_array_type): Added leading comment.
10327         (build_java_array_type): Moved locals out of
10328         block. Always create the `data' field, fixed alignment to match
10329         C++.
10330
10331 2001-02-04  Tom Tromey  <tromey@redhat.com>
10332
10333         * expr.c (java_lang_expand_expr): Don't bother recomputing
10334         `length'.  Use rest_of_decl_compilation, not make_decl_rtl.
10335         Fixes PR java/1866.
10336
10337 2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10338
10339         * parse.y (process_imports): Save the original name of the import
10340         for better error report.
10341
10342 2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>
10343
10344         * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
10345         of macros used when compiling jvspec.c.
10346         * jvspec.c (lang_specific_driver): Link with the shared
10347         libgcc by default.
10348
10349 2001-02-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10350
10351         * check-init.c (check_init): Call internal_error instead of fatal.
10352         * expr.c (java_lang_expand_expr): Likewise.
10353         * jcf-parse.c (get_constant): Likewise.
10354         * mangle.c (java_mangle_decl): Likewise.
10355         * parse.y (make_nested_class_name, java_complete_lhs): Likewise.
10356         (operator_string): Likewise.
10357         * check-init.c (check_init): Call abort instead of fatal.
10358         * class.c (build_class_ref): Likewise.
10359         * constants.c (write_constant_pool): Likewise.
10360         * decl.c (start_java_method): Likewise.
10361         * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
10362         (java_stack_dup, encode_newarray_type): Likewise.
10363         (build_java_array_length_access): Likewise.
10364         (build_java_check_indexed_type, expand_java_pushc): Likewise.
10365         (build_java_soft_divmod, build_invokeinterface): Likewise.
10366         * java-tree.h (INNER_CLASS_P): Likewise.
10367         * jcf-parse.c (parse_signature, get_name_constant): Likewise.
10368         (give_name_to_class, get_class_constant): Likewise.
10369         * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
10370         (find_constant_index, generate_bytecode_conditional): Likewise.
10371         (generate_bytecode_insns, perform_relocations): Likewise.
10372         * lex.c (java_unget_unicode, java_lex): Likewise.
10373         * mangle.c (mangle_type, mangle_record_type): Likewise.
10374         (mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
10375         (finish_mangling): Likewise.
10376         * parse.h (MARK_FINAL_PARMS): Likewise.
10377         * parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
10378         (obtain_incomplete_type, java_complete_class): Likewise.
10379         (java_check_regular_methods, java_complete_expand_method): Likewise.
10380         (cut_identifier_in_qualified, check_deprecation): Likewise.
10381         (patch_invoke, find_applicable_accessible_methods_list): Likewise.
10382         (java_complete_lhs, lookup_name_in_blocks): Likewise.
10383         (check_final_variable_indirect_assignment, build_unaryop): Likewise.
10384         * typeck.c (set_local_type, parse_signature_type): Likewise.
10385         (parse_signature_string, build_java_signature): Likewise;
10386         (set_java_signature): Likewise.
10387         * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
10388         * class.c (add_method): Call fatal_error instead of fatal.
10389         (build_static_field_ref): Likewise.
10390         * expr.c (build_known_method_ref, expand_invoke): Likewise.
10391         * jcf-parse.c (get_constant, jcf_parse): Likewise.
10392         * lex.c (java_new_new_lexer): Likewise.
10393         * jv-scan.c (main): Likewise.
10394         (fatal_error): Renamed from fatal.
10395         * jcf-parse.c (yyparse): Call fatal_io_error instead of
10396         pfatal_with_name.
10397         * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
10398         (yyparse): Likewise.
10399         * jcf-write.c (make_class_file_name, write_classfile): Likewise.
10400         * lex.c (java_get_line_col): Likewise.
10401         * jcf-parse.c (load_class): Make errors non-fatal.
10402         * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
10403
10404 2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>
10405
10406         * jvgenmain.c (class_mangling_suffix): Remove unused string.
10407         (error): Remove unused function.
10408         (main): Don't use "__attribute__ alias" on generated class symbol.
10409
10410 2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10411
10412         * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
10413         argument.
10414         * parse.y (finish_method_declaration): Code accounting for WFLed
10415         method DECL_NAMEs deleted.
10416         (check_abstract_method_definitions): Likewise.
10417         (resolve_type_during_patch): Layout resolved type.
10418         * typeck.c (lookup_do): Removed unused local.
10419
10420 2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>
10421
10422         * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
10423         * decl.c (init_decl_processing): Use integer_minus_one_node, not
10424         integer_negative_one_node.
10425         * expr.c (build_java_binop): Likewise.
10426
10427 2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>
10428
10429         * zextract.c (read_zip_archive): Read file_offset before writing
10430         zipd and consequently clobbering the header contents.
10431
10432 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10433
10434         * Make-lang.in: Remove all dependencies on defaults.h.
10435         * decl.c: Don't include defaults.h.
10436         * expr.c: Likewise.
10437         * parse.y: Likewise.
10438
10439 2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10440
10441         * ChangeLog (2001-01-21): Fixed typo.
10442         * class.c (layout_class_method): Code accounting for WFLed
10443         method DECL_NAMEs deleted.
10444         * constant.c (find_methodref_index): Likewise.
10445         * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
10446         * java-tree.h (DECL_FUNCTION_WFL): New macro.
10447         (struct lang_decl): New field `wfl'.
10448         (java_get_real_method_name): Prototype deleted.
10449         * mangle.c (mangle_method_decl): Code accounting for WFLed
10450         method DECL_NAMEs deleted.
10451         * parse.h (GET_METHOD_NAME): Macro deleted.
10452         * parse.y (reset_method_name): Deleted.
10453         (method_header): Set DECL_FUNCTION_WFL.
10454         (check_abstract_method_header): Code accounting for WFLed method
10455         DECL_NAMEs deleted.
10456         (java_get_real_method_name): Deleted.
10457         (check_method_redefinition): Code accounting for WFLed method
10458         DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
10459         (java_check_regular_methods): Likewise.
10460         (java_check_abstract_methods): Likewise.
10461         (java_expand_classes): Don't call `reset_method_name.'
10462         (search_applicable_method_list): Use DECL_NAMEs instead of
10463         GET_METHOD_NAME.
10464         * typeck.c (lookup_do): Code accounting for WFLed method
10465         DECL_NAMEs deleted.
10466
10467 2001-01-25  Richard Earnshaw  <rearnsha@arm.com>
10468
10469         * lex.c (java_read_char): Check for EOF from getc first.
10470
10471 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10472
10473         * class.c (layout_class): Don't lay the superclass out if it's
10474         already being laid out.
10475         * jcf-parse.c (handle_innerclass_attribute): New function.
10476         (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
10477         handle_innerclasses_attribute.
10478         (jcf_parse): Don't load an innerclasses if it's already being
10479         laid out.
10480         * jcf-write.c (append_innerclass_attribute_entry): Static
10481         `anonymous_name' and its initialization deleted. `ocii' and `ini'
10482         to be zero for anonymous classes.
10483
10484 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10485
10486         * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
10487         necessary.
10488         * jcf-parse.c (set_source_filename): Use
10489         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
10490
10491 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10492
10493         * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
10494         gets a unique asm name.
10495
10496 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10497
10498         * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
10499         (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
10500         if necessary.
10501         (HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
10502         * jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
10503         * parse.y (lookup_package_type_and_set_next): Deleted.
10504         (resolve_package): Removed unnecessary code.
10505         (find_applicable_accessible_methods_list): `finit$' can't be
10506         inherited.
10507         * verify.c (pop_argument_types): Added missing prototype.
10508
10509 2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>
10510
10511         * config-lang.in: Disable java by default.
10512
10513 2001-01-23  Tom Tromey  <tromey@redhat.com>
10514
10515         * gcj.texi (Copying): New node.
10516         Added copyright information.
10517
10518 2001-01-21  Per Bothner  <per@bothner.com>
10519
10520         Various fixes to allow compiling a compressed .jar/.zip archive.
10521         * zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
10522         (struct ZipFile):  Add fields name and next (from  ZipFileCache).
10523         (struct ZipDirectory):  New field zipf points to owning ZipFile.
10524         * jcf.h (struct ZipDirectory):  Add forward declaration.
10525         (struct JCF):   Declare zipd field to have type struct ZipDirectory.
10526         Remove seen_in_zip and zip_offset fields.
10527         (JCF_SEEN_IN_ZIP):  New macro.
10528         * zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
10529         * jcf-io.c:  Change all ZipFileCache to ZipFile.
10530         (read_zip_member):  New function.
10531         (open_in_zip):  Call read_zip_member.
10532         * jcf-parse.c (find_in_current_zip):  Remove function.
10533         (read_class):  Merge in find_in_current_zip functionality.
10534         Call read_zip_member if needed.
10535         (parse_zip_file_entries):  Use read_zip_member.
10536         (process_zip_dir):  Update for removed and added JCF fields.
10537         (jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.
10538
10539 2001-01-21  Per Bothner  <per@bothner.com>
10540
10541         Minor optimization of static ggc roots.
10542         * jcf-parse.c (parse_roots):  New static field.
10543         (current_field, current_method, current_file_list):  Replace by macros
10544         naming fields of parse_roots.
10545         (init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
10546         * class.c (class_roots):  New static field.
10547         (registered_class, fields_ident, info_ident, class_list):
10548         New macros naming fields of parse_roots.
10549         (build_static_field_ref):  Don't register roots here.
10550         (layout_class):  Static field list replaced by macro class_list.
10551         (init_class_processing):  Call ggc_add_tree_root for 4 roots.
10552         Initialize fields_ident and info_ident here.
10553
10554 2001-01-21  Per Bothner  <per@bothner.com>
10555
10556         * jcf-parse.c (ggc_mark_jcf):  New function.
10557         (init_jcf_parse):  Register current_jcf as ggc root.
10558
10559 2001-01-21  Per Bothner  <per@bothner.com>
10560
10561         * lang.c (put_decl_node):  Print method's name.
10562
10563 2001-01-21  Per Bothner  <per@bothner.com>
10564
10565         * verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
10566         (verify_jvm_instructions):  Use it, for better error messages on loads.
10567
10568 2001-01-21  Per Bothner  <per@bothner.com>
10569
10570         * verify.c (merge_type_state):  Still may have to merge even if
10571         LABEL_VERIFIED (label).
10572
10573 2001-01-21  Per Bothner  <per@bothner.com>
10574
10575         * parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
10576         to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
10577
10578 2001-01-19  Per Bothner  <per@bothner.com>
10579
10580         * expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
10581         if expeting an interface type.  Refines Tom's change of 2000-09-12.
10582
10583 2001-01-18  Per Bothner  <per@bothner.com>
10584
10585         * gcj.texi (Input Options): Mention .java files.
10586
10587 2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10588
10589         * lang-options.h (-Wunsupported-jdk11): Removed.
10590         * lang.c (flag_not_overriding): Deleted.
10591         (flag_static_local_jdk1_1): Likewise.
10592         (lang_W_options): Removed "unsupported-jdk11" entry.
10593         * parse.y (java_check_methods): Removed dead code.
10594
10595 2001-01-17  Tom Tromey  <tromey@redhat.com>
10596
10597         Changes suggested by Per Bothner:
10598         * gcj.texi (Input Options): Don't mention input files.
10599         (Code Generation): Updated --main information.
10600         (Invoking jcf-dump): Mention that --javap is incomplete.
10601         From Alexandre Petit-Bianco:
10602         (Warnings): Don't mention -Wunsupported-jdk11.
10603         My stuff:
10604         (Compatibility): Mention JDK 1.2-ness of libraries.
10605         (Resources): Mention resources used when writing gcj.
10606
10607 2001-01-17  Tom Tromey  <tromey@redhat.com>
10608
10609         * gcj.texi: New file.
10610         * Make-lang.in ($(srcdir)/java/gcj.info): New target.
10611         (java.info): Depend on gcj.info.
10612         (java/gcj.dvi): New target.
10613         (java.dvi): Depend on gcj.dvi.
10614         (java.install-info): Wrote.
10615
10616 2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>
10617
10618         * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
10619         having called make_decl_rtl.
10620
10621 2001-01-14  Per Bothner  <per@bothner.com>
10622
10623         Various patches to emit better messages on verification errors.
10624         * expr.c (push_type_0):  Return error indication on stack overflow,
10625         instead of callinfg fatal.
10626         (push_type):  Now just call push_type_0 (nd fatal on overflow).
10627         (pop_type_0):  Return detailed error message (in a char** argument).
10628         (pop_type):  If pop_type_0 fails, print error message.
10629         (pop_argument_types):  Moved to verify.c.
10630         * verify.c (pop_argument_types):  Moved from expr.c.
10631         Return a (possible) error message, rather than void.
10632         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
10633         (verify_jvm_instruction):  Use new macros, improving error messages.
10634         For case OPCODE_astore use object_ptr_type_node.
10635         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
10636         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
10637
10638         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
10639         constant, return body without wrapper.  (Improves constant folding.)
10640         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
10641
10642 2001-01-13  Per Bothner  <per@bothner.com>
10643
10644         * expr.c (expand_java_field_op):  Assigning to a final field outside
10645         an initializer does not violate JVM spec, so should be warning, not
10646         error.  (Sun's verifier does not complain - though MicroSoft's does.)
10647
10648 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
10649
10650         * gjavah.c (version), jcf-dump.c (version): Update copyright year
10651         to 2001.
10652
10653 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
10654
10655         * parse.y (resolve_expression_name): Permit instance variables from
10656         enclosing context in super constructor call.
10657         (resolve_qualified_expression_name): Permit enclosing class's qualified
10658         "this" in super constructor call.
10659
10660 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
10661
10662         * class.c (build_utf8_ref): Remove last argument in call to
10663         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
10664         (build_class_ref): Likewise.
10665         (build_static_field_ref): Likewise.
10666         (get_dispatch_table): Likewise.
10667         (layout_class_method): Likewise.
10668         (emit_register_classes): Likewise.
10669         * constants.c (build_constant_data_ref): Likewise.
10670         * decl.c (builtin_function): Likewise.
10671         (create_primitive_vtable): Likewise.
10672         * expr.c (build_known_method_def): Likewise.
10673         (build_jni_stub): Likewise.
10674         (java_lang_expand_expr): Likewise.
10675
10676 2001-01-10  Tom Tromey  <tromey@redhat.com>
10677
10678         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
10679
10680 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10681
10682         * java-tree.h (lang_printable_name_wls): New prototype.
10683         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
10684         rather than `current_class' to print type name. Don't prepend type
10685         names when printing constructor names.
10686         (lang_printable_name_wls): New function.
10687         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
10688         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
10689         * parse.y (patch_method_invocation): Message tuned for constructors.
10690         (not_accessible_p): Grant `private' access from within
10691         enclosing contexts.
10692
10693 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10694
10695         All files with updated copyright when applicable.
10696         * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
10697         * class.c (mangle_class_field): Function removed.
10698         (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
10699         (utf8_cmp, cxx_keyword_p): Moved to lex.c.
10700         (build_class_ref): Call `java_mangle_class_field' instead of
10701         `mangle_class_field.'
10702         (build_dtable_decl): Rewritten to call `java_mangle_vtable.'
10703         (layout_class): Call `java_mangle_decl' instead of
10704         `mangle_static_field.'
10705         (cxx_keywords): Initialized static array moved to `lex.c.'
10706         (layout_class_method): Changed leading comment. Simplified to
10707         call `java_mangle_decl.' Local `ptr' moved in for loop body.
10708         * decl.c (lang_mark_tree): Mark field `package_list.'
10709         * java-tree.h (TYPE_PACKAGE_LIST): New macro.
10710         (struct lang_type): New field `package_list.'
10711         (unicode_mangling_length): Prototype removed.
10712         (append_gpp_mangled_name, append_gpp_mangled_classtype,
10713         emit_unicode_mangled_name): Likewise.
10714         (cxx_keyword_p): New prototype.
10715         (java_mangle_decl, java_mangle_class_field,
10716         java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
10717         * jcf-parse.c (jcf_parse_source): Constify `file' argument to
10718         `build_expr_wfl.'
10719         * jvgenmain.c (main_method_prefix): Global variable removed.
10720         (main_method_suffix): Likewise.
10721         (do_mangle_classname): New function.
10722         (main): Call it. Format changed to accommodate new mangling scheme.
10723         * lex.c: (utf8_cmp): Conditionally prototyped.
10724         (cxx_keywords): Moved from class.c, conditionally defined.
10725         (utf8_cmp, cxx_keyword_p): Likewise.
10726         * mangle.c (obstack.h, ggc.h): Included.
10727         (mangle_field_decl): New function.
10728         (mangle_method_decl, mangle_type, mangle_pointer_type,
10729         mangle_array_type, mangle_record_type,
10730         find_compression_pointer_match, find_compression_array_match,
10731         find_compression_record_match,
10732         find_compression_array_template_match, set_type_package_list,
10733         entry_match_pointer_p, emit_compression_string, init_mangling,
10734         finish_mangling, compression_table_add, mangle_member_name): Likewise.
10735         (mangle_obstack): New global.
10736         (MANGLE_RAW_STRING): New macro.
10737         (unicode_mangling_length): Turned static.
10738         (append_unicode_mangled_name): Renamed from
10739         `emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
10740         replaces `obstack', removed from the parameter list.
10741         (append_gpp_mangled_name): Turned static. `mangle_obstack'
10742         replaces parameter `obstack', removed from the parameter list. Call
10743         `append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
10744         (append_gpp_mangled_classtype): Removed.
10745         (compression_table, compression_next): New static variables.
10746         * parse.y (temporary_obstack): Extern declaration removed.
10747
10748 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10749
10750         * parse.y (patch_binop): Compute missing type in error situations.
10751
10752 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
10753
10754         * class.c (make_class_data): Push initial value for "arrayclass".
10755         * decl.c (init_decl_processing): Add new class field "arrayclass".
10756
10757 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
10758
10759         From patha@softlab.ericsson.se:
10760         * parse.y (switch_label): Use build, not build1, to construct
10761         DEFAULT_EXPR.
10762
10763 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
10764
10765         * lang.c (lang_decode_option): Change -MA to -MP.
10766         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
10767         Update to new prototype; do quote targets.
10768         (jcf_dependency_write): Update.
10769
10770 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
10771
10772         Shorten primitive array allocation path:
10773         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
10774         to create new primitive arrays.
10775         * expr.c (build_newarray): If generating native code, call
10776         soft_newarray_node with a reference to the primitive TYPE identifier
10777         instead of type_value.
10778
10779 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
10780
10781         Fix for PRs gcj/312 and gcj/253:
10782         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
10783         dest if they arn't already.
10784         * class.c (layout_class): Call maybe_layout_super_class on
10785         superinterfaces also, but only if compiling from bytecode.
10786
10787         Fix for PR gcj/373:
10788         * parse.y (create_class): Set ACC_STATIC if class is declared in an
10789         interface.
10790
10791 2000-12-15  Tom Tromey  <tromey@redhat.com>
10792
10793         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
10794         set.
10795
10796 2000-12-14  Andrew Haley  <aph@redhat.com>
10797
10798         * boehm.c (mark_reference_fields): Change test to correctly detect
10799         bitmap overflow.
10800
10801 2000-12-15  Andreas Jaeger  <aj@suse.de>
10802
10803         * config-lang.in (lang_dirs): Added.
10804
10805 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10806
10807         * parse.y (end_artificial_method_body): Fixed undefined behavior.
10808         Credits go to rth for finding it.
10809
10810 2000-12-13  Mike Stump  <mrs@wrs.com>
10811
10812         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
10813
10814 2000-11-07  Tom Tromey  <tromey@cygnus.com>
10815
10816         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
10817         * lex.c (java_ignorable_control_p): Removed.
10818         (java_letter_or_digit_p): Removed.
10819         (java_start_char_p): New function.
10820         (java_read_char): Return `int', not `unicode_t'.  Changed
10821         callers.
10822         (java_read_unicode): Likewise.
10823         (java_read_unicode_collapsing_terminators): Likewise.
10824         (java_get_unicode): Likewise.
10825         (java_new_lexer): Initialize hit_eof.
10826         (java_parse_end_comment): Take `int' argument.
10827         (java_parse_doc_section): Likewise.
10828         (java_parse_escape_sequence): Don't allow backlash-newline.
10829         Return `int'.
10830         * lex.h (JAVA_DIGIT_P): Removed.
10831         (_JAVA_LETTER_OR_DIGIT_P): Removed.
10832         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
10833         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
10834         (JAVA_PART_CHAR_P): New macro.
10835         (UEOF): Now -1.
10836         (JAVA_CHAR_ERROR): Now -2.
10837         (java_lexer): New field `hit_eof'.
10838         * chartables.h: New file.
10839         * gen-table.pl: new file.
10840
10841 2000-11-20  Tom Tromey  <tromey@cygnus.com>
10842             Alexandre Petit-Bianco  <apbianco@cygnus.com>
10843
10844         * parse.y (java_complete_lhs): Only allow compound assignment of
10845         reference type if type is String.
10846
10847 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10848
10849         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
10850         jcf-path.c: Likewise.
10851
10852 2000-12-09  Anthony Green  <green@redhat.com>
10853
10854         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
10855         filestart and filename_length as int values.
10856
10857 2000-12-07  Mo DeJong  <mdejong@redhat.com>
10858
10859         * jcf-io.c (find_class): Correct the logic that tests to see if a
10860         .java file is newer than its .class file. The compiler was
10861         incorrectly printing a warning when file mod times were equal.
10862
10863 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
10864
10865         * jvgenmain.c: Use ISPRINT not isascii.
10866
10867 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10868
10869         * parse.y (end_artificial_method_body): Fixed typo.
10870
10871 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10872
10873         * parse.y (patch_method_invocation): Pick the correct enclosing
10874         context when creating inner class instances.
10875         Fixes gcj/332.
10876
10877 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
10878
10879         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
10880         Update copyright year to 2000.
10881
10882 2000-11-23  Anthony Green  <green@redhat.com>
10883
10884         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
10885         Move current_file_list out of yyparse and make it static.
10886
10887         * expr.c: Declare quick_stack and tree_list_free_list as static
10888         (init_expr_processing): Register quick_stack and
10889         tree_list_free_list roots.
10890
10891 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10892
10893         * parse.y (build_outer_field_access): New local `decl_ctx', use
10894         it. Check for field's context and current class immediate outer
10895         context inheritance.
10896         (outer_field_access_p): Consider fields inherited from the last
10897         enclosing context.
10898         (build_access_to_thisn): Stop at the last enclosing context if
10899         necessary.
10900         Fixes gcj/367.
10901
10902 2000-11-23  J"orn Rennecke <amylaar@redhat.com>
10903
10904         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
10905
10906 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
10907
10908         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
10909         scratch buffer.
10910
10911 2000-11-20  Tom Tromey  <tromey@cygnus.com>
10912
10913         * jv-scan.c (help): Document --complexity.
10914         (options): Added --complexity.
10915         (flag_complexity): New global.
10916         (main): Call `report'.
10917         * parse-scan.y (complexity): New global.
10918         (if_then_statement, if_then_else_statement,
10919         if_then_else_statement_nsi, switch_block_statement_group,
10920         while_expression, do_statement, for_begin, continue_statement,
10921         throw_statement, catch_clause, finally, method_invocation,
10922         conditional_and_expression, conditional_or_expression,
10923         conditional_expression): Update complexity.
10924         (reset_report): Reset complexity.
10925         (report): New function.
10926
10927 2000-11-20  Tom Tromey  <tromey@cygnus.com>
10928
10929         * lex.c (yylex): Added STRICT_TK case.
10930         * parse.y (STRICT_TK): Added.
10931         * parse-scan.y (STRICT_TK): Added.
10932         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
10933         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
10934         file.
10935         * keyword.h: Rebuilt.
10936         * keyword.gperf (strictfp): Added.
10937
10938 2000-11-20  Tom Tromey  <tromey@cygnus.com>
10939
10940         * lex.c (yylex): Recognize floating point constants with leading
10941         0.
10942
10943 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10944
10945         * java-tree.h (cyclic_inheritance_report): Constify.
10946         * parse.y (cyclic_inheritance_report): Likewise.
10947
10948 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
10949
10950         * parse.y (goal): Remove call to ggc_add_string_root.
10951
10952 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
10953
10954         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
10955         Create string in scratch buffer, then pass to build_string.
10956
10957 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
10958
10959         * parse.y (issue_warning_error_from_context): Add
10960         ATTRIBUTE_PRINTF.
10961
10962 2000-11-11  Anthony Green  <green@redhat.com>
10963
10964         * jcf-parse.c (process_zip_dir): Add finput parameter.
10965         (jcf_figure_file_type): Call process_zip_dir with appropriate
10966         argument.
10967
10968 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10969
10970         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
10971         * jcf-parse.c (jcf_figure_file_type): Likewise.
10972
10973 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
10974
10975         * parse.y (create_new_parser_context): Use memset () instead of
10976         bzero ().
10977
10978 2000-11-08  Tom Tromey  <tromey@cygnus.com>
10979
10980         * gjavah.c (process_file): Only include gcj/cni.h when generating
10981         CNI stubs.
10982
10983 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
10984
10985         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
10986         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
10987         instead of bzero ().
10988
10989 2000-11-05  Tom Tromey  <tromey@cygnus.com>
10990
10991         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
10992         * lex.c (IS_ZERO): New define.
10993         (java_perform_atof): Error on floating point underflow.
10994
10995 2000-11-04  Tom Tromey  <tromey@cygnus.com>
10996
10997         * lex.c (java_parse_escape_sequence): Only read two octal
10998         characters if the first one is greater than 3.  Don't allow
10999         "octal" numbers to include the digits 8 or 9.
11000
11001 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
11002
11003         * Make-lang.in (java.distdir): Remove.
11004
11005 2000-11-03  Tom Tromey  <tromey@cygnus.com>
11006
11007         * Make-lang.in (java.dvi): New target.
11008         Partial fix for PR other/567.
11009
11010         * lang-options.h: Mention -Wout-of-date.
11011         * jcf-dump.c (flag_newer): New global.
11012         * gjavah.c (flag_newer): New global.
11013         * jcf-io.c (find_class): Only warn when flag_newer set.
11014         * lang.c (flag_newer): New global.
11015         (struct string_option): New declaration.
11016         (lang_W_options): New global.
11017         (process_option_with_no): New function.
11018         (lang_decode_option): Use it.
11019
11020         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
11021         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
11022         `$'.
11023
11024         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
11025         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
11026         * lex.c (java_read_unicode): Removed `term_context' argument.
11027         Recognize any number of `u' in `\u'.
11028         (java_read_unicode_collapsing_terminators): New function.
11029         (java_get_unicode): Use it.
11030         (java_lineterminator): Removed.
11031         (yylex): Produce error if character literal is newline or single
11032         quote.  Return if eof found in middle of `//' comment.  EOF in
11033         `//' comment is only an error if pedantic.
11034         (java_ignorable_control_p): New function.
11035         (java_parse_end_comment): Return if eof found in middle of
11036         comment.
11037         Include flags.h.
11038         * jv-scan.c (pedantic): New global.
11039
11040 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11041
11042         * parse.y (outer_field_access_p): Inherited fields aren't
11043         consider outer fields.
11044         (maybe_build_thisn_access_method): Use
11045         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
11046         (resolve_expression_name): Trigger an error if a static field
11047         is being accessed as an outer field.
11048
11049 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11050
11051         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
11052         Fixes gcj/365.
11053
11054 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
11055
11056         * Make-lang.in: Move all build rules here from Makefile.in,
11057         adapt to new context.  Wrap all rules that change the current
11058         directory in parentheses.  Expunge all references to $(P).
11059         When one command depends on another and they're run all at
11060         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
11061         all object-file generation rules.  Delete obsolete variables.
11062
11063         * Makefile.in: Delete.
11064         * config-lang.in: Delete outputs= line.
11065
11066 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11067
11068         * parse.y (patch_method_invocation): NULLify this_arg when already
11069         inserted.
11070         (maybe_use_access_method): Handle call to methods unrelated to the
11071         current class. Fixed comment.
11072         Fixes gcj/361.
11073
11074 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11075
11076         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
11077         scope.
11078
11079 2000-10-24  Tom Tromey  <tromey@cygnus.com>
11080
11081         * lex.c (java_new_lexer): Initialize new fields.  Work around
11082         broken iconv() implementations.
11083         (java_read_char): Swap bytes if required.  Use fallback decoder if
11084         required.
11085         (byteswap_init, need_byteswap): New globals.
11086         (java_destroy_lexer): Only close iconv handle if it is in use.
11087         * lex.h (java_lexer): New fields read_anything, byte_swap,
11088         use_fallback.
11089         Made out_buffer unsigned.
11090
11091 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11092
11093         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
11094         where an enclosing context can be set on the jdep.
11095         (do_resolve_class): Fixed identation.
11096
11097 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11098
11099         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
11100
11101         * jcf-reader.c (peek_attribute, skip_attribute): Only define
11102         when requested.
11103
11104         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
11105
11106         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
11107
11108 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11109
11110         * jcf-write.c (OP1): Update `last_bc'.
11111         (struct jcf_block): Fixed indentation and typo in comments.  New
11112         field `last_bc'.
11113         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
11114         follows `monitorenter'.
11115         * parse.y (patch_synchronized_statement): New local `tmp'. Call
11116         `patch_string'.
11117         Fixes gcj/232.
11118
11119 2000-10-16  Tom Tromey  <tromey@cygnus.com>
11120
11121         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
11122         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
11123         * lang-options.h: Added -MA, -MT, -MF..
11124         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
11125         (DEPEND_TARGET_SET): New macro.
11126         (DEPEND_FILE_ALREADY_SET): Likewise.
11127         (init_parse): Handle new flags.
11128         * jcf.h (jcf_dependency_print_dummies): Declare.
11129         * Make-lang.in (s-java): Added mkdeps.o.
11130         * Makefile.in (BACKEND): Added mkdeps.o.
11131         (../gcjh$(exeext)): Added mkdeps.o.
11132         (../jcf-dump$(exeext)): Added mkdeps.o.
11133         * jcf-depend.c: Include mkdeps.h.
11134         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
11135         add_entry): Removed.
11136         (jcf_dependency_reset): Rewrote.
11137         (dependencies): New global.
11138         (jcf_dependency_set_target): Rewrote.
11139         (jcf_dependency_add_target): Likewise.
11140         (jcf_dependency_add_file): Likewise.
11141         (munge): Removed.
11142         (print_ents): Removed.
11143         (jcf_dependency_write): Rewrote.
11144         (print_dummies): New global.
11145         (jcf_dependency_print_dummies): New function
11146         (jcf_dependency_write): Call deps_dummy_targets if required.
11147
11148 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11149
11150         * gjavah.c (add_class_decl): Removed unused variables `tname',
11151         `tlen' and `name_index'.
11152         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
11153         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
11154         in `wfl_operator' with value.
11155         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
11156         (jcf_figure_file_type): Fixed identation.
11157         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
11158         * parse.y (analyze_clinit_body): New function.
11159         (static_initializer:): Reset `current_static_block'.
11160         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
11161         `wfl_operator' with new value.
11162         (lookup_cl): Use EXPR_WFL_FILENAME.
11163         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
11164         analyze_clinit_body.
11165         (build_outer_field_access): Access to this$<n> built from
11166         current_class, not its outer context.
11167         (build_access_to_thisn): Fixed leading comment. Tidied things up.
11168         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
11169         (patch_method_invocation): Use `is_static_flag' when already
11170         initialized.
11171         (patch_newarray): Removed assignment in ternary operator.
11172
11173 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11174
11175         * except.c (free_eh_ranges): Don't free `whole_range'.
11176
11177 2000-10-15  Anthony Green  <green@redhat.com>
11178
11179         * decl.c (init_decl_processing): Call init_class_processing before
11180         anything else.
11181
11182 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11183
11184         * check-init.c (check_init): Fixed leading comment. Use
11185         LOCAL_FINAL_P.
11186         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
11187         (give_name_to_locals): Likewise.
11188         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
11189         fields in lang_decl_var.
11190         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
11191         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
11192         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
11193         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
11194         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
11195         (LOCAL_FINAL): Rewritten.
11196         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
11197         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
11198         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
11199         `init_final' fields.
11200         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
11201         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
11202         (TYPE_HAS_FINAL_VARIABLE): New macro.
11203         (struct lang_type): Added `afv' field.
11204         * parse.y (check_static_final_variable_assignment_flag): New function.
11205         (reset_static_final_variable_assignment_flag): Likewise.
11206         (check_final_variable_local_assignment_flag): Likewise.
11207         (reset_final_variable_local_assignment_flag): Likewise.
11208         (check_final_variable_indirect_assignment): Likewise.
11209         (check_final_variable_global_assignment_flag): Likewise.
11210         (add_inner_class_fields): Use LOCAL_FINAL_P.
11211         (register_fields): Handle local finals and final variables.
11212         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
11213         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
11214         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
11215         on local finals.
11216         (java_complete_expand_methods): Loop to set
11217         TYPE_HAS_FINAL_VARIABLE. Call
11218         `reset_final_variable_local_assignment_flag' and
11219         `check_final_variable_local_assignment_flag' accordingly before
11220         and after constructor expansion. Call
11221         `reset_static_final_variable_assignment_flag'
11222         before expanding <clinit> and after call
11223         `check_static_final_variable_assignment_flag' if the
11224         current_class isn't an interface. After all methods have been
11225         expanded, call `check_final_variable_global_assignment_flag' and
11226         `check_static_final_variable_assignment_flag' if the current class
11227         is an interface.
11228         (maybe_yank_clinit): Fixed typo in comment.
11229         (build_outer_field_access_methods): Removed old sanity check. Use
11230         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
11231         Don't create access methods for finals.
11232         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
11233         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
11234         existing DECL_INIT has been processed.
11235         (java_complete_lhs): Likewise.
11236         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
11237         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
11238         logic.
11239         (patch_assignment): Use LOCAL_FINAL_P.
11240         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
11241         DECL_INITIAL is nullified.
11242         Fixes gcj/163.
11243
11244 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11245
11246         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
11247
11248         * Makefile.in (parse.c, parse-scan.c): Likewise.
11249
11250 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
11251
11252         * class.c (temporary_obstack): Remove.
11253         (make_class): Don't mess with obstascks.
11254         (push_class): Likewise.
11255         (set_super_info): Likewise.
11256         (add_method_1): Likewise.
11257         (add_method): Likewise.
11258         (add_field): Likewise.
11259         (build_utf8_ref): Likewise.
11260         (build_class_ref): Likewise.
11261         (build_static_field_ref): Likewise.
11262         (finish_class): Likewise.
11263         (push_super_field): Likewise.
11264         (layout_class): Likewise.
11265         (layout_class_methods): Likewise.
11266         (init_class_processing): Likewise.
11267         * constants.c (get_tag_node): Likewise.
11268         (build_constant_data_ref): Likewise.
11269         * decl.c (ggc_p): Remove.
11270         (copy_lang_decl): Use ggc_alloc.
11271         (complete_start_java_method): Don't mess with obstacks.
11272         (start_java_method): Likewise.
11273         (end_java_method): Likewise.
11274         * except.c (link_handler): Use xmalloc.
11275         (free_eh_ranges): New function.
11276         (method_init_exceptions): Use it.
11277         (add_handler): Use xmalloc.
11278         (expand_start_java_handler): Don't mess with obstacks.
11279         (prepare_eh_table_type): Likewise.
11280         (expand_end_java_handler): Likewise.
11281         * expr.c (push_value): Likewise.
11282         (create_label_decl): Likewise.
11283         (build_jni_stub): Likewise.
11284         (java_lang_expand_expr): Likewise.
11285         (note_instructions): Use xrealloc.
11286         (java_push_constant_from_pool): Don't mess with obstacks.
11287         (process_jvm_instruction): Likewise.
11288         * java-tree.h (cyclic_inheritance_report): Remove duplicate
11289         declaration.
11290         * jcf-parse.c (get_constant): Don't mess with obstacks.
11291         (read_class): Likewise.
11292         (jcf_parse): Likewise.
11293         * lex.c (expression_obstack): Remove.
11294         (java_lex): Don't use obstack_free.
11295         * parse.h (exit_java_complete_class): Don't mess with obstacks.
11296         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
11297         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
11298         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
11299         * parse.y (gaol): Add more GC roots.
11300         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
11301         (lookup_field_wrapper): Likewise.
11302         (obtain_incomplete_type): Don't mess with obstacks.
11303         (build_alias_initializer_parameter_list): Adjust calls to MANGLE_*
11304         macros.
11305         (craft_constructor): Don't mess with obstacks.
11306         (safe_layout_class): Likewise.
11307         (java_complete_class): Likewise.
11308         (source_end_java_method): Likewise.
11309         (build_outer_field_access_methods): Likewise.
11310         (build_outer_method_access_method): Likewise.
11311         (maybe_build_thisn_access_method): Likewise.
11312         (build_dot_class_method_invocation): Likewise.
11313         (java_complete_tree): Likewise.
11314         (java_complete_lhs): Likewise.
11315         (do_merge_string_cste): Likewise.
11316         (patch_string_cst): Likewise.
11317         (array_constructor_check_entry): Likewise.
11318         * typeck.c (build_java_array_type): Likewise.
11319         (parse_signature_string): Likewise.
11320         (build_java_signature): Likewise.
11321
11322 2000-10-12  Tom Tromey  <tromey@cygnus.com>
11323
11324         Fix for PR gcj/356:
11325         * gjavah.c (add_class_decl): Don't special-case inner classes.
11326         (add_namelet): Likewise.
11327
11328 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
11329
11330         * java-tree.h: Constify current_encoding.
11331         * lang.c: Constify current_encoding.
11332
11333 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
11334
11335         * jvgenmain.c (class_mangling_suffix): Omit `.'.
11336         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
11337
11338 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11339
11340         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
11341         patch. Fixes gcj/340.
11342
11343 2000-10-10  Tom Tromey  <tromey@cygnus.com>
11344
11345         * lex.c (java_new_lexer): Initialize out_first and out_last
11346         fields.
11347         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
11348
11349 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11350
11351         * parse.y (pop_current_osb): New function.
11352         (array_type:): Use `dims:', changed actions
11353         accordingly. Suggested by Anthony Green.
11354         (array_creation_expression:): Used pop_current_osb.
11355         (cast_expression:): Likewise.
11356         (search_applicable_method_list): Fixed indentation.
11357
11358 2000-10-08  Anthony Green  <green@redhat.com>
11359
11360         * parse.y (array_type_literal): Remove production.
11361         (type_literals): Refer to array_type, not array_type_literal.
11362
11363 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11364
11365         Patch contributed by Corey Minyard.
11366         * decl.c (check_local_named_variable): New function.
11367         (tree check_local_unnamed_variable): Likewise.
11368         (find_local_variable): Splitted. Call check_local_{un}named_variable.
11369
11370 2000-10-07  Anthony Green  <green@redhat.com>
11371
11372         * class.c (layout_class): Handle case where superclass can't be
11373         layed out yet.
11374
11375 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
11376
11377         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
11378         gperf.
11379
11380 2000-10-05  Tom Tromey  <tromey@cygnus.com>
11381
11382         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
11383         * jvgenmain.c (class_mangling_prefix): Removed.
11384         (class_mangling_suffix): New global.
11385         (main): Use it.
11386         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
11387         `$'.
11388         (print_method_info): Handle overrides for static and final
11389         methods.
11390         (process_file): Generate declaration for class object field.
11391         * class.c (cxx_keywords): New array.
11392         (utf8_cmp): New function.
11393         (cxx_keyword_p): New function.
11394         (layout_class_method): Mangle C++ keywords by appending `$'.
11395         (mangle_field): New function.
11396         (mangle_class_field): Use mangle_field.  Mangle class name as
11397         `class$'.
11398         (mangle_static_field): Use mangle_field.
11399
11400 2000-10-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11401
11402         * decl.c (find_local_variable): Removed uncessary type check and
11403         fixed range check typo. From Corey Minyard.
11404
11405 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11406
11407         * decl.c (give_name_to_locals): New local `code_offset'. Call
11408         `maybe_adjust_start_pc'.
11409         * expr.c (note_instructions): New function.
11410         (expand_byte_code): Don't collect insn starts here.
11411         (peek_opcode_at_pc): New function.
11412         (maybe_adjust_start_pc): Likewise.
11413         * java-tree.h (maybe_adjust_start_pc): Declare.
11414         (note_instructions): Likewise.
11415         * jcf-parse.c (parse_class_file): Call `note_instructions'.
11416
11417 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11418
11419         * parse.y (field_access:): Fixed indentation.
11420         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
11421
11422 2000-09-07  Tom Tromey  <tromey@cygnus.com>
11423
11424         Fix for PR gcj/307:
11425         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
11426         JPRIMITIVE_TYPE_P, for arithmetic operators.
11427         (patch_method_invocation): Indentation fix.
11428         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
11429         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
11430         (do_unary_numeric_promotion): Cleaned up code.
11431         (valid_cast_to_p): Handle boolean correctly.
11432
11433 2000-09-27  Tom Tromey  <tromey@cygnus.com>
11434
11435         * lex.c (java_read_unicode): Reset bs_count when finished with
11436         `\u' sequence.
11437
11438 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
11439
11440         Convert to GC.
11441         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
11442         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
11443         (typeck.o): Depend on ggc.h.
11444         * class.c (add_method_1): Use GC functions for allocation.
11445         (init_class_processing): Register roots.
11446         * decl.c (ggc_p): Set to 1.
11447         (pending_local_decls): Make it static.
11448         (push_jvm_slot): Use GC functions for allocation.
11449         (init_decl_processing): Register roots.
11450         (give_name_to_locals): Use GC functions for allocation.
11451         (lang_mark_tree): New function.
11452         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
11453         functions for allocation.
11454         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
11455         * lex.c (java_lex): Use build_string, rather than replicating it
11456         inline.
11457         * parse.y (goal): Add more roots.
11458         (mark_parser_ctxt): New function.
11459         * typeck.c: Include ggc.h.
11460
11461 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11462
11463         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
11464         contains something else than MODIFY_EXPR.
11465
11466 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
11467
11468         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
11469         * Makefile.in (parse.o): Depend on ggc.h.
11470         (class.o): Likewise.
11471         (constants.o): Likewise.
11472         (decl.o): Likewise.
11473         (expr.o): Likewise.
11474         (jcf-parse.o): Likewise.
11475         (jcf-write.o): Likewise.
11476         (mangle.o): Likewise.
11477         * class.c: Include ggc.h.
11478         (build_static_field_ref): Register GC roots.
11479         (layout_class): Likewise.
11480         (init_class_processing): Likewise.
11481         * constants.c: Include ggc.h.
11482         (current_constant_pool_data_ref): Remove.
11483         (tag_nodes): Move it to ...
11484         (get_tag_node): ... here.  Register GC roots.
11485         * decl.c: Include ggc.h.  Remove many global tree definitions.
11486         (throw_node): Define.
11487         (java_global_trees): Likewise.
11488         (predef_filenames): Make the size a constant.
11489         (init_decl_processing): Adjust accordingly.
11490         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
11491         * expr.c: Include ggc.h.
11492         (init_expr_processing): Register GC roots.
11493         (build_invokeinterface): Likewise.
11494         * java-tree.h: Replace extern tree declarations with macros.
11495         (java_global_trees): New variable.
11496         (java_tree_index): New enumeration.
11497         (init_jcf_parse): Declare.
11498         * jcf-parse.c: Include ggc.h.
11499         (current_class): Remove declaration.
11500         (main_class): Likewise.
11501         (all_class_list): Likewise.
11502         (predefined_filename_p): Adjust for constant size of
11503         predef_filenames.
11504         (init_jcf_parse): New function.
11505         * jcf-write.c: Include ggc.h.
11506         (generate_classfile): Register GC roots.
11507         (append_synthetic_attribute): Likewise.
11508         (append_innerclass_attribute_entry): Likewise.
11509         * lang.c: Include ggc.h.
11510         (lang_print_error): Register GC roots.
11511         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
11512         with macros.
11513         * parse.y: Include ggc.h.
11514         (wfl_operator): Remove.
11515         (goal): Register GC roots.
11516         (java_pop_parser_context): Adjust for new field names.
11517         (java_parser_context_save_global): Likewse.
11518         (java_parser_context_restore_global): Likewise.
11519         (java_parser_context_suspend): Likewise.
11520         (java_parser_context_resume): Likewise.
11521         (verify_constructor_circularity): Register GC roots.
11522         (lookup_cl): Likewise.
11523         (java_reorder_fields): Likewise.
11524         (build_current_this): Likewise.
11525         (class_in_current_package): Likewise.
11526         (argument_types_convertible): Likewise.
11527         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
11528
11529 2000-09-14  Tom Tromey  <tromey@cygnus.com>
11530
11531         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
11532
11533 2000-09-13  Tom Tromey  <tromey@cygnus.com>
11534
11535         * jcf-parse.c: Include <locale.h>.
11536         * jv-scan.c: Include <locale.h>.
11537
11538 2000-09-12  Tom Tromey  <tromey@cygnus.com>
11539
11540         * expr.c (pop_type_0): Return `Object' if trying to merge two
11541         interface types.
11542         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
11543         interface types; `Object' is always a valid supertype.
11544
11545 2000-09-12  Tom Tromey  <tromey@cygnus.com>
11546
11547         Fix for PR gcj/33:
11548         * jv-scan.c (help): Document --encoding.
11549         (options): Added `encoding' entry.
11550         (OPT_ENCODING): New define.
11551         (main): Handle --encoding.
11552         Include <langinfo.h> if nl_langinfo exists.
11553         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
11554         --encoding.
11555         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
11556         (parse_source_file): Correctly call java_init_lex.  Added `finput'
11557         argument.  Use nl_langinfo to determine default encoding.
11558         * java-tree.h (current_encoding): Declare.
11559         * parse.y (java_parser_context_restore_global): Don't restore
11560         `finput'.
11561         (java_parser_context_save_global): Don't set `finput' field.
11562         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
11563         if required.
11564         * lang.c (current_encoding): New global.
11565         (lang_decode_option): Recognize `-fencoding='.
11566         (finish_parse): Don't close finput.
11567         * parse.h (struct parser_ctxt): Removed `finput' and
11568         `unget_utf8_value' fields.  Added `lexer' field.
11569         (java_init_lex): Fixed declaration.
11570         * lex.c (java_new_lexer): New function.
11571         (java_destroy_lexer): Likewise.
11572         (java_read_char): Added `lex' argument.  Handle iconv case.
11573         (java_read_unicode): Added `lex' argument.  Count backslashes in
11574         lexer structure.
11575         (java_init_lex): Added `finput' and `encoding' arguments.  Set
11576         `lexer' field in ctxp.
11577         (BAD_UTF8_VALUE): Removed.
11578         (java_lex): Handle seeing UEOF in the middle of a string literal.
11579         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
11580         (java_lexer): New structure.
11581         (UNGETC): Removed.
11582         (GETC): Removed.
11583         (DEFAULT_ENCODING): New define.
11584         (java_destroy_lexer): Declare.
11585
11586 2000-09-12  Tom Tromey  <tromey@cygnus.com>
11587
11588         Fix for PR gcj/343:
11589         * lex.c (java_init_lex): Initialize java_io_serializable.
11590         * parse.y (java_io_serializable): New global.
11591         (valid_ref_assignconv_cast_p): An array can be cast to
11592         serializable.
11593
11594 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
11595
11596         * decl.c, expr.c: Include defaults.h if not already included.
11597         Don't define the *_TYPE_SIZE macros.
11598
11599 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
11600
11601         * typeck.c (build_java_array_type): Correct first parameter
11602         in ADJUST_FIELD_ALIGN invocation.
11603
11604 2000-09-06  Tom Tromey  <tromey@cygnus.com>
11605
11606         * lang-specs.h: Also recognize `-femit-class-files'.
11607
11608 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11609
11610         * verify.c (merge_types): Load the types to merge if necessary.
11611
11612 2000-09-02  Anthony Green  <green@redhat.com>
11613
11614         * jcf-io.c: Include zlib.h.
11615         (open_in_zip): Read compressed class file archives.
11616         * zipfile.h (ZipDirectory): Add uncompressed_size and
11617         compression_method fields.
11618         * zextract.c (read_zip_archive): Collect file compression info.
11619
11620 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
11621
11622         * parse.y (do_resolve_class): Also explore superclasses of
11623         intermediate enclosing contexts when searching for inner classes.
11624
11625 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11626
11627         * parse.y (variable_declarator_id:): Better error message.
11628         (expression_statement:): Use YYNOT_TWICE.
11629         (cast_expression:): Likewise.
11630         (assignment:): Likewise.
11631
11632 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11633
11634         * parse.y (do_merge_string_cste): New locals. Create new
11635         STRING_CSTs each time, use memcpy. Fixes gcj/311.
11636
11637 2000-08-07  Hans Boehm  <boehm@acm.org>
11638
11639         * boehm.c (mark_reference_fields): Set marking bits for all words in
11640         a multiple-word record.
11641         (get_boehm_type_descriptor): Use the procedure marking descriptor for
11642         java.lang.Class.
11643
11644 2000-08-31  Mike Stump  <mrs@wrs.com>
11645
11646         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
11647         jcf-dump$(exeext)): Make parallel safe.
11648
11649 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
11650
11651         * jcf-parse.c (set_source_filename): Constify a char *.
11652         * jcf-write.c (append_innerclasses_attribute,
11653         make_class_file_name): Constify a char *.  Don't recycle a
11654         variable for an unrelated purpose.
11655         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
11656         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
11657
11658 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11659
11660         * expr.c (can_widen_reference_to): Fixed indentation.
11661         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
11662         * parse.y: `finit$' replaces `$finit$' in comments.
11663         (try_builtin_assignconv): Fixed leading comment.
11664
11665 2000-08-25  Greg McGary  <greg@mcgary.org>
11666
11667         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
11668
11669 2000-08-24  Greg McGary  <greg@mcgary.org>
11670
11671         * lang.c (lang_decode_option): Use ARRAY_SIZE.
11672         * parse.y (BINOP_LOOKUP): Likewise.
11673
11674 2000-08-22  Andrew Haley  <aph@cygnus.com>
11675
11676         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
11677         sign extending. Fixes gcj/321.
11678         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
11679         combining to make a jlong. Fixes gcj/321.
11680
11681 2000-08-21  Nix  <nix@esperi.demon.co.uk>
11682
11683         * lang-specs.h: Do not process -o or run the assembler if
11684         -fsyntax-only.
11685
11686 2000-08-16  Andrew Haley  <aph@cygnus.com>
11687
11688         * typeck.c (build_java_array_type): Rewrite code to do array
11689         alignment.  Take into account back-end macros when aligning array
11690         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
11691         user to set alignment. Fixes gcj/252 and 160.
11692
11693 2000-08-09  Tom Tromey  <tromey@cygnus.com>
11694
11695         * parse.y (check_abstract_method_definitions): Now return `int'.
11696         Check implemented interfaces.  Fixes PR gcj/305.
11697
11698         * parse.y (patch_switch_statement): Disallow `long' in switch
11699         expressions.  Fixes PR gcj/310.
11700
11701 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11702
11703         * decl.c (finit_leg_identifier_node): New global.
11704         (init_decl_processing): Use `finit$' to initialize
11705         finit_identifier_node. Use `$finit$' to initialize
11706         finit_leg_identifier_node.
11707         * expr.c (expand_java_field_op): Use ID_FINIT_P.
11708         * java-tree.h (finit_identifier_node): Changed attached comment.
11709         (finit_leg_identifier_node): New declaration.
11710         (ID_FINIT_P): Take finit_identifier_node and
11711         finit_leg_identifier_node into account. This is a backward
11712         compatibility hack.
11713
11714 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11715
11716         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
11717         Jan 6 2000 patch.
11718         (generate_bytecode_insns): Check `nargs' before emitting it.
11719         * verify.c (merge_type_state): Fixed typo.
11720         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
11721         generate_bytecode_{conditional,insns}.
11722
11723 2000-08-13  Anthony Green  <green@redhat.com>
11724
11725         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
11726         for -pg builds).
11727
11728 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11729
11730         * class.c (maybe_layout_super_class): Fixed indentation.
11731         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
11732         (java_check_methods): New function declaration.
11733         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
11734         instead of `str_ptr'.
11735         * jcf-write.c (generate_bytecode_insns): Emit number the of args
11736         of a `invokeinterface' at the right time.
11737         * parse.h (WFL_STRIP_BRACKET): New macro.
11738         (SET_TYPE_FOR_RESOLUTION): Use it.
11739         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
11740         (check_class_interface_creation): Don't check for cross package
11741         innerclass name clashes.
11742         (method_header): Behave properly if MDECL is `error_mark_node'.
11743         (method_declarator): Return `error_mark_node' if bogus current
11744         class.
11745         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
11746         (resolve_and_layout): New local `decl_type', set and used. Call
11747         java_check_methods.
11748         (java_check_methods): New method.
11749         (java_layout_classes): Use it.
11750         (resolve_qualified_expression_name): No EH check necessary in
11751         access$<n>.
11752         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
11753         `case' statement.
11754         (patch_assignment): Set DECL_INITIAL on integral final local.
11755
11756 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11757
11758         * java-tree.h (flag_extraneous_semicolon): New extern.
11759         * lang-options.h: (-Wextraneous-semicolon): New option.
11760         * lang.c (flag_redundant): Fixed typo in leading comment.
11761         (flag_extraneous_semicolon): New global.
11762         (lang_decode_option): Set `flag_extraneous_semicolon' when
11763         -Wall. Decode `-Wextraneous-semicolon'.
11764         * parse.y (type_declaration:): Removed `SC_TK' hack, added
11765         `empty_statement' rule.
11766         (class_body_declaration): Likewise.
11767         (method_body:): Accept `;' as a method body.
11768         (static_initializer:): Removed `SC_TK' hack.
11769         (constructor_block_end:): Likewise.
11770         (empty_statement:): Report deprecated empty declaration. Fixes
11771         gcj/295
11772
11773 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11774
11775         * parse.y (build_dot_class_method_invocation): Changed parameter
11776         name to `type'. Build signature from `type' and convert it to a
11777         STRING_CST if it's an array.
11778         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
11779         to use `ref_type' directly.
11780
11781 2000-08-06  Ovidiu Predescu  <ovidiu@cup.hp.com>
11782
11783         * lang-options.h: Added a comma after the last element to avoid
11784         syntax errors when other languages define additional options.
11785
11786 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
11787
11788         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
11789         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
11790         (jc1): Link with $(BACKEND).
11791         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
11792
11793 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
11794
11795         * jvspec.c: Adjust type of second argument to
11796         lang_specific_driver, and update code as necessary.
11797
11798         * class.c (build_dtable_decl): Initialize dummy.
11799
11800 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11801
11802         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
11803         method bodies not to rule out discarding `<clinit>'; don't use
11804         <clinit> to initialize static fields with constant initializers.
11805
11806 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11807
11808         * gjavah.c (print_method_info): Added `synth' parameter. Skip
11809         synthetic methods.
11810         (method_synthetic): New global.
11811         (HANDLE_METHOD): Recognize synthetic method and tell
11812         `print_method_info' about it.
11813         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
11814         processing a synthetic method.
11815         * jcf-reader.c (skip_attribute): New function.
11816         ( skip_attribute): Likewise.
11817
11818 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11819
11820         * parse.y (build_outer_field_access): Fixed comments.
11821         (fix_constructors): Emit the initialization of this$<n> before
11822         calling $finit$.
11823         (resolve_qualified_expression_name): Build an access to `decl' if
11824         necessary.
11825
11826 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11827
11828         * parse-scan.y (curent_class): Non longer const.
11829         (inner_qualifier, inner_qualifier_length): Deleted.
11830         (current_class_length): New global.
11831         (bracket_count): Fixed typo in leading comment.
11832         (anonymous_count): New global.
11833         (class_instance_creation_expression:): Handle anonymous classes.
11834         (anonymous_class_creation:): New rule.
11835         (push_class_context): Rewritten.
11836         (pop_class_context): Likewise.
11837         (INNER_QUALIFIER): Macro deleted.
11838         (report_class_declaration): call `push_class_context' when
11839         entering the function. `fprintf' format modified not to use
11840         INNER_QUALIFIER.
11841         (report_class_declaration): Assign `package_name' and
11842         `current_class' to NULL separately.
11843
11844 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11845
11846         * expr.c (build_invokeinterface): Call layout_class_methods on
11847         target interface.
11848
11849 2000-07-27  Tom Tromey  <tromey@cygnus.com>
11850             Anthony Green  <green@cygnus.com>
11851             Alexandre Petit-Bianco  <apbianco@cygnus.com>
11852
11853         * class.c (make_class_data): Create vtable for abstract classes.
11854         (get_dispatch_table): Changed to cope with abstract classes.
11855
11856 2000-07-27  Tom Tromey  <tromey@cygnus.com>
11857
11858         * parse.y (patch_method_invocation): Don't reverse the argument
11859         list when dealing with anonymous class constructors. Fixed typo in
11860         comment.
11861
11862 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11863
11864         * parse.y (build_alias_initializer_parameter_list): Reverse
11865         crafted list when building aliases for anonymous class
11866         constructors.
11867
11868 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11869
11870         * parse.y (jdep_resolve_class): Don't bother checking potential
11871         innerclass access if `decl' is NULL.
11872         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
11873         WFL.
11874
11875 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11876
11877         * parse.c: Remove (again.)
11878
11879 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11880
11881         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
11882         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
11883         outside the `if' statement, alias to innerclass removed, `decl'
11884         used to mark the class complete.
11885
11886 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11887
11888         * parse.y (simple_name:): Fixed typo in error message.
11889
11890 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11891
11892         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
11893         or its first operand can be error marks.
11894
11895 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11896
11897         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
11898         * parse.y (method_header): Likewise.
11899
11900 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11901
11902         * parse.y (process_imports): Consider that one might be trying to
11903         import an innerclass. Fixes gcj/254
11904
11905 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11906
11907         * parse.y (find_as_inner_class): Handle the case where the
11908         enclosing context of an innerclass has been loaded as bytecode.
11909
11910 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11911
11912         * parse.y (simple_name:): Reject `$' in type names.
11913         (resolve_type_during_patch): Use `type' as a second
11914         argument to resolve_no_layout. Fixes gcj/257.
11915
11916 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
11917
11918         * parse.y (find_most_specific_methods_list): Select the only
11919         non-abstract method even if max has been set.
11920         Fixes gcj/285, gcj/298.
11921
11922 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
11923
11924         * lang-specs.h: Added %(jc1) to java compiler options.
11925
11926 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
11927
11928         * .cvsignore: New file.
11929
11930 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11931
11932         * parse.y (not_accessible_p): Access granted to innerclasses
11933         (indirectly) extending the reference type. Fixes gcj/249.
11934
11935 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11936
11937         * parse.y (patch_method_invocation): Fixed comment.
11938         (maybe_use_access_method): Build this$<n>s to the context of the
11939         target method, or a type that extends it. Fixes gcj/242.
11940
11941 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
11942
11943         * parse.c: Remove.
11944
11945 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11946
11947         * parse.y (fold_constant_for_init): Avoid bullish conversion.
11948
11949 2000-07-13  Tom Tromey  <tromey@cygnus.com>
11950
11951         * lang-specs.h: Added %{I*}.
11952
11953 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
11954
11955         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
11956
11957 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
11958
11959         * parse-scan.c: Remove.
11960
11961 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11962
11963         * class.c (set_super_info): Handled protected inner classes.
11964         (common_enclosing_context_p): Bail early if arguments aren't both
11965         inner classes.
11966         (get_access_flags_from_decl): Handle private and protected inner
11967         classes.
11968         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
11969         (CLASS_PROTECTED): Likewise.
11970         (struct lang_type): New bitfield `poic'.
11971         * parse.y (jdep_resolve_class): Call check_inner_class_access on
11972         inner classes only.
11973         (check_inner_class_access): Renamed arguments, added
11974         comments. Handles protected inner classes (fixes gcj/225)
11975         (not_accessible_p): Fixed comments. Avoid handling inner classes.
11976
11977 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11978
11979         * parse.y (resolve_qualified_expression_name): Verify qualified
11980         access to `this'. Fixes gcj/239.
11981
11982 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11983
11984         * jcf-write.c (generate_classfile): Don't install ConstantValue
11985         for null pointers.
11986
11987 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11988
11989         * parse.y (resolve_qualified_expression_name): Handle inner class
11990         access. Fixes gcj/256.
11991
11992 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11993
11994         * jcf-write.c (generate_classfile): Properly install the
11995         ConstantValue attribute and the initial value constant pool index
11996         on string constants.
11997         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
11998         class files.
11999
12000 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12001
12002         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
12003         construct.
12004         * parse.y (find_as_inner_class): Fixed typo.
12005         (do_resolve_class): Explore enclosing contexts when searching for
12006         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
12007         (check_inner_class_access): Check `decl' which can be null in case
12008         of previous errors.
12009
12010 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12011
12012         * java-tree.h (java_debug_context): Declared `extern'.
12013         (safe_layout_class): Likewise.
12014         * parse.y (resolve_field_access): Field must be `static' in order
12015         to be replaced by its initial value. Added comments.
12016         (find_applicable_accessible_methods_list): Fixed typo.
12017         (find_most_specific_methods_list): Methods found in innerclasses
12018         take over methods founds in the enclosing contexts.
12019         (java_complete_tree): Loosen restrictions on the type of DECLs
12020         that can be replaced by their initialization values.
12021         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
12022
12023 2000-07-05  Tom Tromey  <tromey@cygnus.com>
12024
12025         * Make-lang.in (PARSE_DIR): New macro.
12026         (PARSE_RELDIR): Likewise.
12027         (PARSE_C): Likewise.
12028         (PARSE_SCAN_C): Likewise.
12029         ($(PARSE_C)): New target.
12030         ($(PARSE_SCAN_C)): Likewise.
12031         (SET_BISON): New macro.
12032         (BISONFLAGS): Likewise.
12033         (JAVABISONFLAGS): Likewise.
12034
12035 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
12036
12037         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
12038         argument on the first pass for CNI as well as JNI.
12039         (print_method_info): Set up method name on the first pass only.
12040
12041 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12042
12043         * parse.y (parser_qualified_classname): Removed parameter
12044         `is_static'.
12045         (create_interface): Removed first passed parameter to
12046         parser_qualified_classname.
12047         (create_class): Likewise. Don't install alias on static
12048         innerclasses. Fixes gcj/275.
12049
12050 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12051
12052         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
12053         debugable statement with empty_stmt_node. Fixes gcj/272
12054
12055 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12056
12057         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
12058         gcj/271.
12059
12060 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12061
12062         * jcf-write.c (push_long_const): Appropriately cast short negative
12063         constant to jword.
12064
12065 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12066
12067         * parse.y (verify_constructor_super): Use loop variable
12068         `m_arg_type' initialized with `mdecl_arg_type'.
12069
12070 2000-06-29  Tom Tromey  <tromey@cygnus.com>
12071
12072         * parse.y (resolve_field_access): Handle case where `type_found'
12073         is NULL.
12074
12075 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12076
12077         * expr.c (lookup_field): The same field can be found through two
12078         different interface. Don't declare it ambiguous in that case.
12079
12080 2000-06-27  Tom Tromey  <tromey@cygnus.com>
12081
12082         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
12083         follows \r, then unget it at a lower level.
12084
12085 2000-06-26  Tom Tromey  <tromey@cygnus.com>
12086
12087         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
12088         java_complete_tree.
12089
12090 2000-06-25  Tom Tromey  <tromey@cygnus.com>
12091
12092         * parse.y (for_statement): Wrap expression in a WFL if it is a
12093         constant.  For PR gcj/268.
12094
12095 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12096
12097         * parse.y (do_resolve_class): Minor optimiztion in the package
12098         list search. Removed unnecessary test and return statement.
12099         (valid_ref_assignconv_cast_p): Order of arguments to
12100         enclosing_context_p fixed.
12101
12102 2000-06-24  Tom Tromey  <tromey@cygnus.com>
12103
12104         * expr.c (lookup_field): Print error and return error_mark_node if
12105         field reference is ambiguous.
12106
12107         * parse.y (check_abstract_method_definitions): Also check if
12108         `other_method' is abstract.
12109
12110 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12111
12112         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
12113         classes.
12114         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
12115         (struct lang_type): New field `pic'.
12116         (CLASS_PRIVATE): New macro.
12117         * parse.y (check_inner_class_access): New function.
12118         (jdep_resolve_class): Call it.
12119
12120 2000-06-23  Tom Tromey  <tromey@cygnus.com>
12121
12122         * parse.y (patch_incomplete_class_ref): Initialize the returned
12123         class.  For PR gcj/260.
12124
12125 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12126
12127         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
12128
12129 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12130
12131         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
12132         Java specific checks.
12133         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
12134         screened by DECL_P.
12135         * java-tree.def (CASE_EXPR): Marked 'e'.
12136         (DEFAULT_EXPR): Likewise.
12137         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
12138         screened by DECL_P.
12139         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
12140         Java specific checks.
12141         (generate_bytecode_insns): Test try_block for BLOCK before using
12142         BLOCK_EXPR_BODY.
12143         * parse.y (build_wfl_wrap): Added `location' argument. Set
12144         EXPR_WFL_LINECOL accordingly.
12145         (dim_expr:): Wrap constants with WFLs.
12146         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
12147         (resolve_package): Check for `stmt' not being a BLOCK before
12148         building a debuggable statement with it.
12149         (make_qualified_primary): Added extra parameter to build_wfl_wrap
12150         invocation.
12151         (resolve_field_access): Make sure `decl' is a DECL before treating
12152         it as such.
12153         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
12154         IDENTIFIER_NODE before treating it as such.
12155         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
12156         treating it as such.
12157         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
12158         to be applied only on non array types.
12159
12160 2000-06-16  Per Bothner  <per@bothner.com>
12161
12162         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
12163         define in terms of DECL_RESULT, as that fails when --enable-checking.
12164
12165 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12166
12167         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
12168         types the same in comparison.
12169         (CHECK_OP): Add static prototype.
12170
12171 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
12172
12173         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
12174         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
12175         * parse.c: Rebuilt.
12176
12177 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12178
12179         * decl.c (create_primitive_vtable): Prototype.
12180
12181         * jcf-write.c (generate_bytecode_insns): Initialize variable
12182         `saved_context'.
12183
12184         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
12185
12186 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
12187
12188         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
12189         to track searched classes, and do not search the same class more than
12190         once. Call find_applicable_accessible_methods_list on immediate
12191         superclass, instead of search_applicable_method_list on all ancestors.
12192         Fix for PR gcj/238.
12193
12194 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
12195
12196         * parse.y (register_fields): Permit static fields in inner classes
12197         if they are final. Fix for PR gcj/255.
12198
12199 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12200
12201         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
12202         * parse.y (find_in_imports): Returned type changed to void,
12203         leading comment fixed.
12204         (register_package): New function.
12205         (qualify_and_find): Likewise.
12206         (package_declaration:): Use `register_package'.
12207         (single_type_import_declaration:): Removed local variable
12208         `node'. Added missing `;' for consistency.
12209         (type_import_on_demand_declaration:): Use `chainon' to link new
12210         entries.
12211         (lookup_field_wrapper): Lookup local variables defined in outer
12212         contexts first.
12213         (java_complete_class): Don't reverse the list of imported on demand.
12214         (do_resolve_class): Reorganized. Removed local variable
12215         `original_name'. Call `qualify_and_find' with the current package
12216         name, invoke `find_in_imports_on_demand' right after. Call
12217         `qualify_and_find' with the packages we've seen so far. Fixed
12218         operations numbering in comments.
12219         (java_expand_class): Don't reverse `package_list'.
12220         (find_most_specific_methods_list): New local variables `abstract'
12221         and `candidates'. Use them to pick the right method.
12222
12223 2000-06-06  Tom Tromey  <tromey@ferrule.cygnus.com>
12224
12225         * parse.y (check_modifiers_consistency): Don't subtract out
12226         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
12227
12228 2000-06-04  Philipp Thomas  <pthomas@suse.de>
12229
12230         * Makefile.in (INTLLIBS): New.
12231         (LIBS): Add above.
12232         (DEPLIBS): Ditto.
12233
12234 2000-06-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12235
12236         * class.c (get_dispatch_table): Build the vtable dummy entry list
12237         element with a null purpose. Fixed leading comment.
12238         (build_dtable_decl): Build an accurate dtable type when appropriate
12239         and use it.
12240
12241 2000-06-02  Richard Henderson  <rth@cygnus.com>
12242
12243         * lang.c (lang_get_alias_set): New.
12244
12245 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12246
12247         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
12248         before using it as the accessed field.
12249
12250 2000-05-31  Tom Tromey  <tromey@cygnus.com>
12251
12252         * java-tree.h (boolean_array_vtable, byte_array_vtable,
12253         char_array_vtable, short_array_vtable, int_array_vtable,
12254         long_array_vtable, float_array_vtable, double_array_vtable):
12255         Declare.
12256         * expr.c (get_primitive_array_vtable): New function.
12257         (create_primitive_vtable): New function.
12258         (java_lang_expand_expr): Enable code to statically generate
12259         arrays.
12260         * decl.c (init_decl_processing): Create primitive vtables.
12261         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
12262         short_array_vtable, int_array_vtable, long_array_vtable,
12263         float_array_vtable, double_array_vtable): Define.
12264
12265 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
12266
12267         * java/parse.y (find_applicable_accessible_methods_list):
12268         Don't add an uninitialized value to the list.
12269
12270 2000-05-25  Tom Tromey  <tromey@cygnus.com>
12271
12272         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
12273         when trying to see if field's class should be initialized.  Always
12274         initialize field's declaring class, not qualified class.
12275         For PR gcj/162.
12276
12277         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
12278         `wfl_operator', to maybe_build_primttype_type_ref.
12279         Fixes PR gcj/235.
12280
12281 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
12282
12283         * parse.y (patch_method_invocation): Don't try to lookup methods
12284         in primitive types.
12285
12286 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12287
12288         * parse.y (resolve_field_access): Call the appropriate <clinit>
12289         before accessing the length of a static array. Craft a decl for
12290         the field while its time. Fixes PR gcj/129.
12291
12292 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12293
12294         * parse.y (resolve_package): Correctly set `*next' (was off by
12295         one.)
12296         (resolve_qualified_expression_name): Fixed comment.
12297
12298 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12299
12300         * jcf-parse.c (jcf_parse_source): Reset current_class and
12301         current_function_decl to NULL before parsing a new file.
12302
12303 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12304
12305         * parse.y (block_end:): If the collected block doesn't feature a
12306         statement, insert an empty statement.
12307
12308 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12309
12310         * parse.y (maybe_yank_clinit): New function.
12311         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
12312         end of the list of methods belonging to a class.
12313         (java_complete_expand_method): Check whether <clinit> is really
12314         necessary and expand it accordingly.
12315
12316 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12317
12318         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
12319         processed by the method's switch statement.
12320
12321 2000-05-19  Tom Tromey  <tromey@cygnus.com>
12322
12323         * java-tree.h: Added init state enum.
12324         * decl.c (emit_init_test_initialization): Initialize class
12325         initialization check variable by looking at class' state.
12326
12327 2000-05-19  Tom Tromey  <tromey@cygnus.com>
12328
12329         * java-tree.h (build_instanceof): Declare.
12330         (build_get_class): Declare.
12331         * parse.y (patch_binop): Use build_instanceof.
12332         * expr.c (build_instanceof): New function.  If class is final,
12333         don't make a function call.
12334         (expand_java_INSTANCEOF): Use it.
12335         (build_get_class): New function.
12336
12337 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
12338
12339         * jcf-write.c (generate_classfile): Scan the source_file for
12340         slashes with the right pointer variable.
12341
12342 2000-05-17  Andrew Cagney  <cagney@b1.cygnus.com>
12343
12344         * lang.c (lang_decode_option): Update -Wunused flags by calling
12345         set_Wunused.
12346         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
12347
12348 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
12349
12350         * check_init.c (check_init): Constify local char *.
12351         * class.c (push_class): Constify local char *.
12352         * java_tree.h: Update prototypes.
12353         * jcf-io.c (open_class): Constify filename parameter and
12354         return value.
12355         (find_class): Remove redundant string copy.  Cast return from
12356         open_class.
12357         * jcf-parse.c (read_class, parse_class_file, yyparse):
12358         Constify local char *.
12359         * jcf-write.c (generate_bytecode_insns, generate_classfile):
12360         Constify local char *.
12361         * jcf.h (JCF): Constify filename and classname.
12362         (JCF_FINISH): Cast args to FREE to char * when appropriate.
12363         * lang.c (init_parse): Constify parameter and return value.
12364         * lex.c (java_get_line_col): Constify filename parameter.
12365         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
12366         * parse.y (java_parser_context_suspend,
12367         issue_warning_error_from_context, safe_layout_class): Constify
12368         local char *.
12369         * parse.c: Regenerate.
12370
12371 2000-05-08  Tom Tromey  <tromey@cygnus.com>
12372
12373         * expr.c (build_jni_stub): Cache the result of
12374         _Jv_LookupJNIMethod.
12375
12376 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12377
12378         * decl.c (predef_filenames_size): Now 7.
12379         (predef_filenames): New seventh entry.
12380
12381 2000-05-04  Tom Tromey  <tromey@cygnus.com>
12382
12383         * boehm.c (mark_reference_fields): Don't mark RawData fields.
12384         Keep track of when we've seen a reference field after a
12385         non-reference field.
12386         (get_boehm_type_descriptor): Handle case where we see
12387         non-reference fields but no trailing reference field.
12388         * decl.c (rawdata_ptr_type_node): Define.
12389         (init_decl_processing): Initialize rawdata_ptr_type_node.
12390         * java-tree.h (rawdata_ptr_type_node): Declare.
12391
12392 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12393
12394         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
12395         specifiers in calls to fprintf.
12396
12397 2000-05-03  Andrew Haley  <aph@cygnus.com>
12398
12399         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
12400
12401         * javaop.h (WORD_TO_INT): New function.
12402         (IMMEDIATE_s4): Use WORD_TO_INT.
12403         * jcf.h (JPOOL_INT): Ditto.
12404
12405         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
12406         separator.
12407
12408 2000-04-19  Tom Tromey  <tromey@cygnus.com>
12409
12410         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
12411         on native function.
12412         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
12413         JNI methods.
12414         * expr.c (build_jni_stub): New function.
12415         * lang-specs.h: -fjni and -femit-class-file are incompatible.
12416         * parse.c: Rebuilt.
12417         * parse.y (java_complete_expand_methods): Expand a native method
12418         and call build_jni_stub if -fjni given.
12419         * lang-options.h: Document -fjni.
12420         * lang.c (flag_jni): New global.
12421         (lang_f_options): Added `jni' entry.
12422         * java-tree.h (soft_lookupjnimethod_node,
12423         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
12424         Declare.
12425         (flag_jni): Declare.
12426         (build_jni_stub): Declare.
12427         (struct lang_decl): Added `native' flag.
12428         (METHOD_NATIVE): Redefined to use `native' field of lang specific
12429         structure.
12430         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
12431         soft_jnipopsystemframe_node): New globals.
12432         (init_decl_processing): Set them.  _Jv_InitClass only takes one
12433         argument.
12434
12435         * java-tree.def: Put into `C' mode.
12436
12437 2000-04-27  Tom Tromey  <tromey@cygnus.com>
12438
12439         Fix for PR gcj/2:
12440         * expr.c (expand_invoke): Generate check to see if object pointer
12441         is null in nonvirtual invocation case.
12442         * java-tree.h (soft_nullpointer_node): Declare.
12443         * decl.c (soft_nullpointer_node): New global.
12444         (init_decl_processing): Initialize soft_nullpointer_node.
12445         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
12446         or `private' methods.
12447         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
12448
12449 2000-04-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12450
12451         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
12452         from <clinit>
12453
12454 2000-04-26  Tom Tromey  <tromey@cygnus.com>
12455
12456         * zextract.c (find_zip_file_start): New function.
12457         (read_zip_archive): Use it.
12458
12459 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12460
12461         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
12462
12463 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12464
12465         * class.c (common_enclosing_context_p): New function.
12466         * java-tree.h (common_enclosing_context_p): Added prototype.
12467         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
12468         classes sharing an outer context with the current instance.
12469         * parse.y (build_access_to_thisn): Fixed leading comment.
12470         (verify_constructor_super): New local `supper_inner'. Skip
12471         enclosing context argument in the case of inner class constructors.
12472         (patch_method_invocation): Insert proper context as second
12473         parameter to pure inner class constructor super invocations.
12474
12475 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12476
12477         * parse.y (end_class_declaration): Reset the interface number
12478         counter.
12479
12480 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12481
12482         * parse.y (source_start_java_method): Deleted unnecessary code.
12483         (patch_method_invocation): Fixed comment.
12484
12485 2000-04-24  Robert Lipe <robertlipe@usa.net>
12486
12487         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
12488
12489 2000-04-23  Tom Tromey  <tromey@cygnus.com>
12490
12491         * boehm.c (mark_reference_fields): Use int_byte_position.
12492
12493 2000-04-22  Tom Tromey  <tromey@cygnus.com>
12494
12495         * boehm.c (mark_reference_fields): Only call byte_position on
12496         non-static fields.
12497
12498 2000-04-22  Tom Tromey  <tromey@cygnus.com>
12499
12500         * boehm.c (mark_reference_fields): Added `last_view_index'
12501         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
12502
12503 2000-04-20  Mo DeJong  <mdejong@cygnus.com>
12504
12505         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
12506         * parse.y (check_class_interface_creation): Fixed comments. Select
12507         permitted modifiers for (inner) interfaces. Changed error message
12508         to report rejected modifiers used with local classes.
12509
12510 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12511
12512         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
12513         of directly inherited type considered in scope.
12514         * parse.y (do_resolve_class): Search inherited classes for inner
12515         classes.
12516
12517 2000-04-20  Tom Tromey  <tromey@cygnus.com>
12518
12519         * parse.y (not_accessible_p): Use member's class, not current
12520         class, when doing inheritance check for protected reference.
12521         Fixes PR gcj/124.
12522
12523 2000-04-20  Jason Schroeder  <shrode@subnature.com>
12524
12525         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
12526
12527 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12528
12529         * parse.y (lookup_field_wrapper): Search for final local aliases.
12530         (resolve_expression_name): Let lookup_field_wrapper search for
12531         final local aliases. Force the value of `name' if one is found.
12532         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
12533         an expression name. Fixed comments.
12534
12535 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12536
12537         * parse.y (yyerror): `msg' can be null, don't use it in that case.
12538
12539 2000-04-19  Tom Tromey  <tromey@cygnus.com>
12540
12541         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
12542
12543 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12544
12545         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
12546
12547 2000-04-18  Tom Tromey  <tromey@cygnus.com>
12548
12549         PR gcj/211:
12550         * gjavah.c (utf8_cmp): Changed return value.
12551         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
12552         result.
12553         (cxx_keywords): New global.
12554         (get_field_name): Handle new result of cxx_keyword_subst.
12555         (print_method_info): Likewise.
12556
12557 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
12558
12559         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
12560         with a newline, for CNI.
12561         (print_stub_or_jni): Print a space or newline before method name for
12562         CNI as well as JNI.
12563         (print_cxx_classname): Don't write leading "::" in CNI stub method.
12564         (process_file): Include gcj/cni.h if generating CNI stubs.
12565
12566 2000-04-16  Tom Tromey  <tromey@cygnus.com>
12567
12568         * gjavah.c (decompile_method): Use print_field_name.
12569         Fixes PR gcj/205.
12570
12571 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12572
12573         * parse.y (java_expand_classes): Reverse the package list once.
12574         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
12575         reduction.
12576         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
12577         the `==' and `!=' operators.
12578
12579 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12580
12581         * jcf-write.c (generate_bytecode_insns): At invocation time,
12582         always relate an interface method to the type of its selector.
12583
12584 2000-04-05  Tom Tromey  <tromey@cygnus.com>
12585
12586         Fix for PR gcj/2:
12587         * expr.c (expand_invoke): Generate check to see if object pointer
12588         is null in nonvirtual invocation case.
12589         * java-tree.h (soft_nullpointer_node): Declare.
12590         * decl.c (soft_nullpointer_node): New global.
12591         (init_decl_processing): Initialize soft_nullpointer_node.
12592         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
12593         or `private' methods.
12594         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
12595
12596 2000-04-05  Tom Tromey  <tromey@cygnus.com>
12597
12598         Fix for PR gcj/140:
12599         * parse.y (check_final_assignment): Recognize assignments to the
12600         `length' field of an array when generating class files.
12601
12602 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12603
12604         * class.c (decl_hash): Prototype removed.
12605         (decl_compare): Likewise.
12606
12607 2000-04-05  Tom Tromey  <tromey@cygnus.com>
12608
12609         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
12610         * parse.y (check_modifiers_consistency): Check for final/volatile
12611         clash.  Fixes PR gcj/164.
12612
12613 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12614
12615         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
12616         made global.
12617         (java_hash_compare_tree_node): Renamed from `decl_compare, made
12618         global.
12619         (add_method_1): Use `java_hash_hash_tree_node' and
12620         `java_hash_compare_tree_node'.
12621         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
12622         (java_hash_compare_tree_node): Likewise.
12623         * parse.y (find_applicable_accessible_methods_list): Create,
12624         delete and use a hash table to remember already searched interfaces.
12625
12626 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
12627
12628         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
12629         with latest entry.
12630
12631 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12632
12633         * boehm.c (mark_reference_fields, set_bit): Prototype.
12634         (set_bit): Un-ANSI-fy definition.
12635
12636         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
12637         Prototype.
12638
12639         * decl.c (emit_init_test_initialization): Likewise.
12640
12641         * gjavah.c (jni_print_char): Likewise.
12642
12643         * parse.y (create_new_parser_context): Likewise.
12644
12645 2000-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12646
12647         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
12648         patch missing hunk. Fixed indentation.
12649
12650 2000-03-30  Tom Tromey  <tromey@cygnus.com>
12651
12652         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
12653         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
12654
12655 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12656
12657         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
12658         when negative *before* using it as an array index.
12659         * ChangeLog: Fixed typo.
12660
12661 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12662
12663         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
12664         to 0 when it reaches -1.
12665
12666 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12667
12668         * jcf-parse.c (get_constant): Properly cast `num' during the
12669         invocation of `add_double'.
12670         * jcf-write.c (push_long_const): Properly cast `lo' before
12671         comparing it to short bounds.
12672         * parse-scan.y (interface_declaration:): Rule re-arrange so that
12673         `interface_body:' is reduced after the current interface is
12674         pushed.
12675
12676 2000-03-26  Tom Tromey  <tromey@cygnus.com>
12677
12678         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
12679         Java-specific `-f' option.
12680
12681 2000-03-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12682
12683         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
12684         Adjust order of making types.
12685         Make bitsize_*_node values.
12686
12687 2000-03-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12688
12689         * class.c (make_field_value): Use byte_position.
12690         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
12691         (java_array_data_offset): Likewise.
12692         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
12693         bzero call.
12694
12695 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12696
12697         * parse.y (check_abstract_method_definitions): New local
12698         `end_type_reached'. Make sure we also consider `end_type'.
12699         (java_check_abstract_method_definitions): Make sure we eventually
12700         consider `java.lang.Object'.
12701         (maybe_use_access_method): Don't use access method if not in the
12702         context of a pure inner class or if the method's context is right.
12703         (find_applicable_accessible_methods_list): New static flag
12704         `object_done'. Don't search abstract classes as interfaces. Fixed
12705         indentation. Fixed the `java.lang.Object' only search. Search
12706         class interface(s) first, then fully search enclosing contexts.
12707         (find_most_specific_methods_list): Pick the closest candidate when
12708         they're all abstract.
12709
12710 2000-03-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12711
12712         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
12713         properly initialize `finished_label'. Don't emit gotos for empty
12714         try statements.
12715
12716 2000-03-19  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
12717
12718         * except.c (emit_handlers): Clear catch_clauses_last.
12719
12720 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12721
12722         * parse.y (check_method_types_complete): New function.
12723         (create_class): Reset anonymous class counter only when seeing an
12724         non inner classe.
12725         (java_complete_class): JDEP_METHOD: Don't recompute signature
12726         if incomplete.
12727
12728 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12729
12730         * class.c (build_static_ref): Fixed indentation in comment.
12731         * java-tree.def (TRY_EXPR): Fixed typo in name.
12732         (CLASS_LITERAL): Likewise.
12733         * java-tree.h: (TYPE_DOT_CLASS): New macro.
12734         (struct lang_type): New field `dot_class'.
12735         * jcf-write.c (generate_bytecode_insns): Fixed error message.
12736         (generate_classfile): Method `class$' is synthetic.
12737         * parse.y (build_do_class_method): New function.
12738         (build_dot_class_method_invocation): Likewise.
12739         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
12740         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
12741         (qualify_ambiguous_name): Likewise.
12742         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
12743         (build_try_statement): Fixed leading comment.
12744
12745 2000-03-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12746
12747         * class.c (make_field_value): Properly handle sizes.
12748         (get_dispatch_vector): Use tree_low_cst and host_integerp.
12749         (layout_class_method): Count using trees.
12750         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
12751         * expr.c (java_array_data_offset): Use int_bit_position.
12752         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
12753         (build_invokevirtual): Use tree_low_cst and do computations with trees.
12754
12755 2000-03-16  Tom Tromey  <tromey@cygnus.com>
12756
12757         * lang.c (flag_hash_synchronization): New global.
12758         (lang_f_options): Added `hash-synchronization'.
12759         * lang-options.h: Mention -fhash-synchronization.
12760         * java-tree.h (flag_hash_synchronization): Declare.
12761         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
12762         hash table synchronization is disabled.
12763         * decl.c (init_decl_processing): Only push `sync_info' value when
12764         hash table synchronization is disabled.
12765         * class.c (make_class_data): Only push `sync_info' field when hash
12766         table synchronization is disabled.  Removed dead code.
12767
12768 2000-03-16  Tom Tromey  <tromey@cygnus.com>
12769
12770         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
12771
12772 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12773
12774         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
12775         classes.
12776         * parse.y (patch_method_invocation): Handle anonymous classes
12777         creation in static context.
12778
12779 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12780
12781         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
12782         * parse.y (resolve_qualified_expression_name): Use it.
12783         (patch_method_invocation): Likewise.
12784
12785 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12786
12787         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
12788         depending on the type of dependency which dictates what the
12789         current class is.
12790         (unresolved_type_p): Resolved types limited to the current class.
12791
12792 2000-03-15  Tom Tromey  <tromey@cygnus.com>
12793
12794         * decl.c (init_decl_processing): Set type of `sync_info' to be
12795         pointer to Object.
12796
12797         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
12798         Correctly compute bit number for current slot.  Zero `high' and
12799         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
12800         mark_reference_fields.
12801         (mark_reference_fields): New function.
12802
12803 2000-03-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12804
12805         * parse.y (register_incomplete_type): Fixed initialization of
12806         JDEP_ENCLOSING.
12807
12808 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12809
12810         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
12811         static globals.
12812         (push_class_context, pop_class_context): New function.
12813         (class_body:): Call pop_class_context.
12814         (interface_body:): Likewise.
12815         (INNER_QUALIFIER): New macro.
12816         (report_class_declaration): Changed output format and use
12817         INNER_QUALIFIER. Call push_class_context.
12818
12819 2000-02-14  Andrew Haley  <aph@cygnus.com>
12820
12821         * check-init.c (check_init): Add new cases for unary and binary
12822         tree nodes.
12823
12824 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12825
12826         * parse.y (resolve_package): Set `next' once a type name has been
12827         progressively discovered.
12828         (resolve_qualified_expression_name): Propagate resolution only if
12829         there are remaining qualifiers. Take into account `q' might have
12830         been cleared after re-qualification.
12831         * parse.y (patch_method_invocation): New local `resolved'.
12832         Section dealing with qualified expression rewritten to use
12833         resolve_field_access.
12834
12835 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12836
12837         * parse.h (PUSH_CPC): Fixed indentation.
12838         (DEBUG_CPC): New macro.
12839         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
12840         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
12841         * parse.y (class_body_declaration:): Use
12842         SET_CPC_INSTANCE_INITIALIZER_STMT.
12843         (method_declaration:): Check for null current_function_decl.
12844         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
12845         (java_parser_context_pop_initialized_field): Better handling of
12846         empty lists.
12847         (maybe_make_nested_class_name): Mark nested class name as
12848         qualified when necessary.
12849         (end_class_declaration): Don't call java_parse_context_resume when
12850         one or more error occurred.
12851         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
12852         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
12853         SET_CPC_INITIALIZER_STMT.
12854         (method_header): Check for inner classes declaring static methods.
12855         (resolve_qualified_expression_name): Handle situation where `this'
12856         is implied.
12857
12858 2000-03-13  Hans Boehm <boehm@acm.org>
12859
12860         * typeck.c (build_prim_array_type): Correctly set the high word too.
12861
12862 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12863
12864         * parse.y (java_complete_expand_methods): Leave <clinit> out of
12865         ordinary methods.
12866         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
12867         list of methods for interfaces.
12868
12869 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12870
12871         * parse.y (qualify_ambiguous_name): Properly handle expressions
12872         using `null'.
12873
12874 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12875
12876         * parse.y (check_final_assignment): Extended to process
12877         COMPOUND_EXPR.
12878         (patch_assignment): Have check_final_assignment called only once.
12879
12880 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12881
12882         * java-tree.h (IS_INIT_CHECKED): New flag.
12883         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
12884         * parse.y (patch_string): Call force_evaluation_order on the
12885         completed string concatenation tree.
12886         * expr.c (force_evaluation_order): Call force_evaluation_order on
12887         function's arguments too.
12888
12889 2000-03-06  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12890
12891         * decl.c (emit_init_test_initialization): Mark KEY as unused.
12892         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
12893         (build_anewarray): Likewise.
12894         * parse.y (patch_newarray): Likewise.
12895         * parse.c: Regenerated.
12896
12897 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
12898
12899         * decl.c (init_decl_processing): Added new class fields `depth',
12900         `ancestors', and `idt' to class_type_node. Use
12901         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
12902         * class.c (make_class_data): Push initial values for new fields.
12903         * java-tree.h: Updated prototype for `build_invokeinterface'.
12904         * expr.c (build_invokeinterface): Changed parameters to accept
12905         `method' tree. Calculate index of `method' in its declaring
12906         interface. Build call to _Jv_LookupInterfaceMethodIdx.
12907         (expand_invoke): Call `build_invokeinterface' with new parameters.
12908         * parse.y (patch_invoke): Call `build_invokeinterface' with new
12909         parameters.
12910
12911 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
12912
12913         * typeck.c (lookup_do): Search superinterfaces first
12914         when looking up an interface method. From Godmar Back
12915         <gback@cs.utah.edu>
12916
12917 2000-03-06  Tom Tromey  <tromey@cygnus.com>
12918
12919         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
12920
12921 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12922
12923         * java-tree.h (lookup_argument_method2): Declared.
12924         (safe_layout_class): Prototype moved from parse.h.
12925         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
12926         * parse.y (java_check_regular_methods): Local `super_class' gone.
12927         Call lookup_argument_method2 instead of lookup_argument_method.
12928         Perform modifier match for methods found declared in implemented
12929         interfaces. Fixed indentation problem. Overriding/hiding error
12930         report to take place only for methods found in classes.
12931         * typeck.c (lookup_argument_method): Changed leading
12932         comment. Re-written by calling lookup_do.
12933         (lookup_argument_method2): New function.
12934         (lookup_java_method): Re-written by calling lookup_do.
12935         (lookup_do): New function.
12936
12937 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12938
12939         * check-init.c (check_init): Removed dead code. Handle (blank)
12940         final variables.
12941         * parse.y (declare_local_variables): New local `final_p', set it
12942         and use it to initialize LOCAL_FINAL.
12943         (check_final_assignment): Only check FIELD_DECLs.
12944
12945 2000-02-17  Tom Tromey  <tromey@cygnus.com>
12946
12947         * Makefile.in (JAVA_OBJS): Added boehm.o.
12948         (boehm.o): New target.
12949         * Make-lang.in (JAVA_SRCS): Added boehm.c.
12950         * java-tree.h (flag_use_boehm_gc): Declare.
12951         (get_boehm_type_descriptor): Declare.
12952         * lang.c (lang_f_options): Added `use-boehm-gc'.
12953         (flag_use_boehm_gc): New global.
12954         * lang-options.h: Added -fuse-boehm-gc.
12955         * boehm.c: New file.
12956         * class.c (get_dispatch_table): If class uses a Boehm type
12957         descriptor, put it in the vtable.
12958         (make_class_data): Removed dead code.
12959
12960 2000-03-03  Per Bothner  <per@bothner.com>
12961
12962         * decl.c (init_decl_processing):  Initialize sizetype properly.
12963
12964 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12965
12966         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
12967         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
12968         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
12969         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
12970         (jcf_parse): New local `current'. Load innerclasses seen in outer
12971         context being processed.
12972         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
12973         * jcf-write.c (append_innerclasses_attribute): New function.
12974         (append_innerclasses_attribute_entry): Likewise.
12975         (get_access_flags): Handle static classes. Set anonymous and local
12976         classes to be private.
12977         (generate_classfile): Attribute count adjusted. Call
12978         append_innerclasses_attribute.
12979         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
12980         PURE_INNER_CLASS_TYPE_P.
12981         * parse.y (parser_qualified_classname): New parameter `is_static',
12982         produce non qualified name accordingly.
12983         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
12984         (create_interface): Added argument to parser_qualified_classname.
12985         (create_class): Added argument to parser_qualified_classname. Setup
12986         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
12987         (add_inner_class_fields): Fixed indentation.
12988         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
12989         (method_declarator): Fixed typo in comment.
12990         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
12991         (build_current_thisn): Likewise.
12992         (patch_method_invocation): Likewise.
12993
12994 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
12995
12996         * decl.c (current_function_decl): Move to toplev.c.
12997
12998 2000-02-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12999
13000         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
13001         (DECL_BIT_INDEX): Use underlying representation.
13002         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
13003
13004 2000-02-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13005
13006         * expr.c (build_java_ret): Pass proper type to size_binop.
13007
13008 2000-02-25  Anthony Green  <green@cygnus.com>
13009
13010         * expr.c (build_class_init): Mark the decl to be ignored by
13011         check_init.
13012         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
13013         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
13014         * class.c (init_test_hash_newfunc): New function.
13015         (decl_hash): New function.
13016         (decl_compare): New function.
13017         * decl.c (emit_init_test_initialization): New function.
13018         (complete_start_java_method): Traverse the init test hashtable,
13019         calling emit_init_test_initialization.
13020         (always_initialize_class_p): Define.
13021         * expr.c (build_class_init): Use initialization tests when
13022         emitting class initialization code.
13023         (always_initialize_class_p): Declare.
13024         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
13025         1.
13026         * java-tree.h: Include hash.h.
13027         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
13028         (struct lang_decl): Add init_test_table field.
13029         (init_test_hash_entry): Define.
13030
13031 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13032
13033         * gjavah.c (main): Avoid using `argi' to report unimplemented
13034         options.
13035
13036 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13037
13038         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
13039         initialize locals to avoid warnings. Local `exception_type' moved
13040         into if statement.
13041
13042 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13043
13044         * parse.y (resolve_expression_name): Use `orig' as a second
13045         argument to resolve_field_access.
13046         (resolve_field_access): Removed unnecessary code when dealing with
13047         static fields.
13048
13049 2000-02-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13050
13051         * class.c (push_super_field): Don't push the field twice.
13052         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
13053         * parse.h (java_reorder_fields): Prototyped.
13054         * parse.y (java_reorder_fields): New function.
13055         (java_layout_class): Simplified not to worry about re-ordering.
13056
13057 2000-02-23  Tom Tromey  <tromey@cygnus.com>
13058
13059         * gjavah.c (print_name): In JNI case, correctly quote string.
13060         (print_method_info): Don't handle overrides in JNI mode.
13061
13062 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13063
13064         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
13065         value type set to `boolean_type_node'.
13066
13067 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
13068
13069         * jcf-dump.c (main): Test for correct condition after
13070         output file creation.
13071
13072 2000-02-19  Anthony Green  <green@cygnus.com>
13073
13074         * jcf-depend.c (add_entry): Fix test for first list entry.
13075
13076 2000-02-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13077
13078         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
13079         * constants.c (build_constants_constructor): Likewise.
13080
13081 2000-02-19  Anthony Green  <green@cygnus.com>
13082
13083         * jcf-depend.c (add_entry): Add entries to the end of the list.
13084
13085 1999-11-03  Pekka Nikander  <pekka.nikander@hut.fi>
13086
13087         * decl.c (INT_TYPE_SIZE): Define if necessary.
13088         (expand_java_return): Handle the case of a native integer smaller
13089         than a JVM integer.
13090
13091 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
13092
13093         * gjavah.c (help): Use GCCBUGURL.
13094         * jv-scan.c (help): Likewise.
13095         * jcf-dump.c (help): Likewise.
13096
13097 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13098
13099         * jcf-write.c (generate_bytecode_insns): Don't generate empty
13100         `finally' clauses.
13101
13102 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13103
13104         * jcf-parse.c (load_class): Call `fatal' if no file containing
13105         the target class are found.
13106
13107 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
13108
13109         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
13110         lex.c, lex.h, and PARSE_H to...
13111         (parse.o, parse-scan.o): ...here, respectively.
13112
13113         * lex.c: Split out code that may trigger SIGFPE from yylex()
13114         to its own function.
13115         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
13116
13117 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13118
13119         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
13120
13121 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13122
13123         * parse.y (outer_field_access_p): Stop in time when outer contexts
13124         are exhausted.
13125         (resolve_qualified_expression_name): Properly qualify *everything*
13126         after a package.type to be resoled as expression names.
13127         (find_applicable_accessible_methods_list): Save/restore `class' to
13128         isolate it from a possible outer context search.
13129
13130 2000-02-15  Tom Tromey  <tromey@cygnus.com>
13131
13132         * gjavah.c (jni_print_char): New function.
13133         (print_full_cxx_name): Use it.
13134         (decode_signature_piece): Likewise.
13135         (print_cxx_classname): Likewise.
13136
13137 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13138
13139         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
13140         version.o.
13141         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
13142
13143         * gjavah.c: Include version.h.
13144
13145         * jcf-dump.c: Likewise.
13146
13147         * jv-scan.c: Likewise.
13148
13149 2000-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13150
13151         * parse.y (outer_field_access_fix): First parameter now a tree
13152         node. Check for assignment to final. First argument to
13153         build_outer_field_access_fix modified to accommodate prototype.
13154         (build_outer_field_access): Don't check for assignment to final
13155         here.
13156         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
13157         possibly returned by outer_field_access_fix. Changed
13158         outer_field_access_fix's first argument.
13159         (check_final_assignment): $finit$'s context is OK.
13160         (patch_unaryop): Use node instead of its line/column value when
13161         calling outer_field_access_fix.
13162
13163 2000-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13164
13165         * parse.y (interface_declaration:): No longer tagged
13166         <node>. Re-installed default action.
13167         (class_member_declaration:): Handle inner interfaces.
13168         (interface_member_declaration): Handle inner interfaces and
13169         classes.
13170         (create_interface): Push error if one seen. Suspend parsing
13171         context when processing an inner interface.
13172         (register_fields): Inner class static field limitations not to
13173         apply to inner interfaces.
13174
13175 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13176
13177         * jcf-parse.c (load_class): Update `java_error_count' when a
13178         class' file can't be found.
13179         (parse.y): Avoid (byte)code generation when errors seen.
13180
13181 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13182
13183         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
13184         decodes a valid node.
13185         (patch_binop): Handle TRUNC_DIV_EXPR.
13186
13187 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13188
13189         * parse.y (resolve_package): New local `acc'. Try to progressively
13190         build and guess a package and type name.
13191
13192 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13193
13194         * parse.y (find_applicable_accessible_methods_list): Load and
13195         layout the search class if necessary.
13196         (java_complete_tree): Keep to original type of the folded initial
13197         value.
13198
13199 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13200
13201         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
13202         Generate error message if circularity is detected. New static
13203         local `list'.
13204         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
13205         * jcf-write.c (generate_bytecode_insns): Very simply handle
13206         SAVE_EXPR.
13207         * parse.y (java_check_circular_reference): Use
13208         `cyclic_inheritance_report' during report, if necessary.
13209         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
13210         walking NEW_ARRAY_INIT twice.
13211
13212 2000-02-09  Tom Tromey  <tromey@cygnus.com>
13213
13214         * parse.y (check_class_interface_creation): Allow inner classes to
13215         be `private' or `protected', check modifiers' consistency. Prevent
13216         block local classes from bearing any modifiers.
13217
13218 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13219
13220         * except.c (check_start_handlers): Re-add prototype lost in last
13221         patch.
13222         (maybe_start_try): Remove excess argument to `check_start_handlers'.
13223
13224 2000-02-09  Andrew Haley  <aph@cygnus.com>
13225
13226         * decl.c (clear_binding_level): Remove excess initializer.
13227         (maybe_poplevels): Remove unused variable.
13228         (force_poplevels): Ditto.
13229         (struct binding_level): Add comment.
13230
13231 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13232
13233         * jcf-write.c (generate_classfile): Don't consider
13234         pre-initialization with reference value (use <clinit> instead.)
13235         * parse.y (java_fix_constructors): No generated constructor for
13236         interfaces.
13237         (build_outer_field_access): Removed debug message.
13238         (outer_field_expanded_access_p): Adapted to bytecode generation.
13239         (build_outer_field_access_method): Use fix_method_argument_names.
13240         (build_outer_method_access_method): Fixed indentation. Added
13241         comment. Handle access method generation for static and also void
13242         methods.
13243         (build_access_to_thisn): Inserted debug message.
13244         (maybe_build_thisn_access_method): Use fix_method_argument_names.
13245         (resolve_qualified_expression_name): Fixed comment.
13246         (not_accessible_p): Adapted to bytecode generation. Added comment.
13247         (patch_method_invocation): Added comment.
13248         (maybe_use_access_method): Fixed leading comment. Handle static
13249         methods.
13250         (java_complete_lhs): Don't shortcut handling of initialized upon
13251         declaration String type static fields when generating bytecode.
13252         (patch_unaryop): Handle outer field access when generating
13253         bytecode.
13254
13255 2000-02-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13256
13257         * java-tree.h (FIELD_THISN): New macro.
13258         * jcf-write.c (append_synthetic_attribute): New function.
13259         (generate_classfile): Set "Synthetic" attribute on this$<n>,
13260         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
13261         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
13262         this$<n> fields.
13263         (build_outer_field_access): Turned on access functions usage and
13264         generation when compiling to bytecode.
13265         (maybe_use_access_method): Likewise.
13266
13267 2000-01-25  Andrew Haley  <aph@cygnus.com>
13268
13269         * java-except.h (struct eh_range): Add `expanded' field.
13270         (maybe_start_try): Add end_pc arg.
13271         (maybe_end_try): Ditto.
13272         * java-tree.h (force_poplevels): new function.
13273         * expr.c (expand_byte_code): Don't call maybe_start_try or
13274         maybe_end_try.
13275         * except.c (add_handler): Reset expanded.
13276         (expand_start_java_handler): Set expanded.
13277         (check_start_handlers): Don't expand a start handler that's
13278         already been expanded.
13279         (maybe_start_try): Add end_pc arg.  Only expand a handler which
13280         ends after end_pc.
13281         (expand_end_java_handler): call force_poplevels.
13282         (force_poplevels): new function.
13283         * decl.c (binding_level): Add start_pc of binding level.
13284         (maybe_pushlevels): Call maybe_start_try when pushing binding
13285         levels.
13286         (maybe_poplevels): Call maybe_end_try when popping binding levels.
13287         (LARGEST_PC): Define.
13288         (clear_binding_level): Use LARGEST_PC.
13289
13290         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
13291         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
13292         (binding_depth, is_class_level, current_pc): new variables.
13293         (struct binding_level): ditto.
13294         (indent): new function.
13295         (push_jvm_slot): add debugging info.
13296         (maybe_pushlevels): ditto.
13297         (maybe_poplevels): ditto.
13298         (pushlevel): ditto.
13299         (poplevel): ditto.
13300         (start_java_method): ditto.
13301         (give_name_to_locals): comment only.
13302         * except.c (binding_depth, is_class_level, current_pc):
13303         new variables.
13304         (expand_start_java_handler): add debugging info.
13305         (expand_end_java_handler): ditto.
13306
13307 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13308
13309         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
13310         (print_name_for_stub_or_jni, process_file): Constify a char*.
13311
13312 2000-02-03  Tom Tromey  <tromey@cygnus.com>
13313
13314         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
13315
13316 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
13317
13318         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
13319         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
13320         defined to be 1.
13321
13322 2000-02-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13323
13324         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
13325         * java-tree.h (TYPE_II_STMT_LIST): New macro.
13326         (struct lang_type): New field `ii_block'.
13327         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
13328         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
13329         * parse.h (struct parser_ctxt): New field `instance_initializers'.
13330         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
13331         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
13332         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
13333         macros.
13334         * parse.y (add_instance_initializer): New function.
13335         (in_instance_initializer): New static global.
13336         (class_body_declaration:): Link instance initializer block.
13337         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
13338         (array_creation_expression:): Remove unused local.
13339         (java_parser_context_push_initialized_field): Fixed leading
13340         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
13341         CPC_INSTANCE_INITIALIZER_LIST.
13342         (java_parser_context_pop_initialized_field): Likewise.
13343         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
13344         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
13345         CPC_INITIALIZER_STMT.
13346         (fix_constructors): New local `class_type'. Use it. Call
13347         add_instance_initializer.
13348         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
13349         (patch_return): Forbid return in instance initializers.
13350         (patch_throw_statement): Enforce exception handling in the context
13351         of instance initializers.
13352
13353 2000-02-03  Tom Tromey  <tromey@cygnus.com>
13354
13355         * Make-lang.in (java.mostlyclean): Remove executables in
13356         `mostlyclean'.
13357
13358 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
13359
13360         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
13361         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
13362         (java_float_finite): Convert to use union Word from javaop.h.
13363         (java_double_finite): Convert to use union DWord from javaop.h.
13364
13365 2000-02-02  Tom Tromey  <tromey@cygnus.com>
13366
13367         * gjavah.c (options): Added `jni' entry.
13368         (help): Document -jni.
13369         (flag_jni): New global.
13370         (process_file): Handle JNI output.  Don't print text from
13371         -prepend, -add, etc, when generating stubs.  Only remove `.class'
13372         suffix if it actually exists.
13373         (main): Create a `.c' file when run with `--jni --stubs'.  Create
13374         correct output file name with `--jni'.
13375         (print_include): Mangle header name differently in JNI case.
13376         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
13377         method list.
13378         (print_method_info): Handle JNI case.  Put signature info into
13379         method name.  Handle case when STREAM is NULL.
13380         (print_name_for_stub_or_jni): New function.
13381         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
13382         (print_cxx_classname): Handle JNI.
13383         (print_full_cxx_name): Likewise.
13384         (decode_signature_piece): Likewise.
13385         (overloaded_jni_method_exists_p): New function.
13386         (struct method_name): Added `signature' and `sig_length' fields.
13387         (HANDLE_END_FIELD): Do nothing in JNI mode.
13388
13389 2000-02-02  Tom Tromey  <tromey@cygnus.com>
13390
13391         * jv-scan.c: Include version.c, <getopt.h>.
13392         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
13393         (options): New array.
13394         (usage): New function.
13395         (version): New function.
13396         (main): Use getopt_long to parse command line.
13397         * jcf-dump.c: Include version.c, <getopt.h>.
13398         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
13399         OPT_JAVAP): New macros.
13400         (options): New array.
13401         (usage): Return `void'.  Changed message.
13402         (help): New function.
13403         (version): New function.
13404         (main): Use getopt_long_only to parse command line.
13405         * gjavah.c: Include <getopt.h>.
13406         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
13407         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
13408         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
13409         (options): New array.
13410         (java_no_argument): Removed.
13411         (help): Updated with missing options.
13412         (main): Use getopt_long_only to parse command line.
13413         (usage): Changed message.
13414
13415 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13416
13417         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
13418         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
13419         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
13420         * parse.y (array_creation_expression:): Handle anonymous arrays.
13421         (build_array_from_name): Don't set `ret_name' if null.
13422         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
13423         (qualify_ambiguous_name): Likewise.
13424         (java_complete_expand_class): Likewise.
13425
13426 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13427
13428         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
13429         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
13430         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
13431         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
13432         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
13433         AIPL_FUNCTION_COMPLETED_INVOCATION.
13434         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
13435         AIPL_FUNCTION_INVOCATION_READY.
13436         (AIPL_FUNCTION_DECLARATION): New enum entry.
13437         * parse.y (reorder_static_initialized): New function.
13438         (java_parser_context_pop_initialized_field): Use it.
13439         (add_inner_class_fields): Use
13440         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
13441         augmented. Install marker after last alias initializer, if any.
13442         (generate_finit): Fixed typo. Don't try to retain only the used
13443         fields.
13444         (method_header): Compute and set DECL_FUNCTION_NAP.
13445         (method_declarator): Fixed comment. Insert alias initializer in
13446         parameter list.
13447         (build_alias_initializer_parameter_list): Fixed leading
13448         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
13449         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
13450         (java_complete_expand_class): Code to retain only used aliases
13451         removed.
13452         (java_complete_expand_methods): New local `first_decl'. Generate
13453         $finit$ first, then expand the constructors, regular methods and
13454         <clinit>.
13455         (java_complete_expand_method): Don't report error on missing
13456         return statement if previously detected bogus.
13457         (fix_constructors): Don't patch constructor parameters list.
13458         (patch_method_invocation): Use new AIPL enum values. Reverse
13459         alias initializer list for anonymous classes.
13460
13461 2000-01-30  Anthony Green  <green@redhat.com>
13462
13463         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
13464         determine how many stack slots to pop.
13465
13466 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13467
13468         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
13469         error handling/recovery.
13470         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
13471
13472 2000-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13473
13474         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
13475         FIELD_LOCAL_ALIAS_USED): New macros.
13476         (DECL_FUNCTION_NAP): New macro.
13477         (struct lang_decl): New field `nap'.
13478         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
13479         (struct lang_type): New fields `finit_stmt_list' and
13480         `clinit_stmt_list'.
13481         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
13482         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
13483         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
13484         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
13485         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
13486         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
13487         (BUILD_THROW): Macro line separator re-indented.
13488         * parse.y (end_class_declaration): New function.
13489         (maybe_generate_pre_expand_clinit): New name for
13490         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
13491         pre-expand static fields.
13492         (maybe_generate_clinit): Function deleted.
13493         (check_for_static_method_reference): Prototype's parameter list
13494         indented.
13495         (generate_finit): New name for maybe_generate_finit. Changed
13496         leading comment. Function rewritten to use
13497         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
13498         (build_alias_initializer_parameter_list): New function.
13499         (java_parser_context_pop_initialized_field): Likewise.
13500         (add_inner_class_fields): Likewise.
13501         (type_declaration:): Call end_class_declaration.
13502         (class_member_declaration:): Likewise.
13503         (formal_parameter_list:): Fixed typos.
13504         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
13505         element. Improved error handling.
13506         (block_statement:): Call end_class_declaration.
13507         (anonymous_class_creation:): Likewise.
13508         (create_anonymous_class): Fixed comments.
13509         (create_class): Call add_inner_class_fields.
13510         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
13511         (method_header): Use MARK_FINAL_PARMS.
13512         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
13513         (method_declarator): Propagate final argument flag.
13514         (craft_constructor): New local `artificial'. Call
13515         build_alias_initializer_parameter_list. Use
13516         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
13517         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
13518         necessary.
13519         (complete_expand_class): Get rid of unused outer context local
13520         alias fields.
13521         (java_complete_expand_methods): Fixed leading
13522         comment. Generate/pre-expand <clinit> first. Changed method
13523         expansion order to regular, $finit$, constructors, <clinit>.
13524         (java_complete_expand_method): Set current_function_decl.
13525         (fix_constructors): Fix constructor parameter list to account for
13526         outer context local alias initializers.
13527         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
13528         (resolve_expression_name): Lookup outer context local aliases. New
13529         local `access', use it.
13530         (patch_method_invocation): Patch inner class ctor invocation with
13531         outer context local aliases initialization values. $finit$
13532         invocation patching now includes things generated with
13533         build_alias_initializer_parameter_list.
13534         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
13535         (build_super_invocation): Likewise.
13536         (patch_assignment): Changed comment.
13537
13538 2000-01-27  Andrew Haley  <aph@cygnus.com>
13539
13540         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
13541         (emit_if): Ditto.
13542         (emit_jsr): Ditto.
13543
13544 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13545
13546         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
13547         concatenation.
13548         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
13549
13550         * parse.y (register_fields): Don't pass a format specifier to
13551         OBSOLETE_MODIFIER_WARNING.
13552         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
13553         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
13554         specifier.
13555         (check_modifiers): Change function into a macro.
13556         (check_class_interface_creation): Pass a literal format string.
13557
13558 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13559
13560         * buffer.h: PROTO -> PARAMS.
13561         * check-init.c: Likewise.
13562         * class.c: Likewise.
13563         * constants.c: Likewise.
13564         * convert.h: Likewise.
13565         * decl.c: Likewise.
13566         * except.c: Likewise.
13567         * expr.c: Likewise.
13568         * gjavah.c: Likewise.
13569         * java-except.h: Likewise.
13570         * java-tree.h: Likewise.
13571         * jcf-depend.c: Likewise.
13572         * jcf-dump.c: Likewise.
13573         * jcf-parse.c: Likewise.
13574         * jcf-path.c: Likewise.
13575         * jcf-reader.c: Likewise.
13576         * jcf-write.c: Likewise.
13577         * jcf.h: Likewise.
13578         * jv-scan.c: Likewise.
13579         * jvgenmain.c: Likewise.
13580         * jvspec.c: Likewise.
13581         * lang.c: Likewise.
13582         * lex.c: Likewise.
13583         * lex.h: Likewise.
13584         * parse-scan.y: Likewise.
13585         * parse.h: Likewise.
13586         * parse.y: Likewise.
13587         * typeck.c: Likewise.
13588         * verify.c: Likewise.
13589         * xref.c: Likewise.
13590         * xref.h: Likewise.
13591         * zextract.c: Likewise.
13592         * zipfile.h: Likewise.
13593
13594 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13595
13596         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
13597         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
13598         * constants.c (build_constant_data_ref): Check for cached
13599         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
13600         in TYPE_CPOOL_DATE_REF.
13601         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
13602         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
13603         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
13604         (LOCAL_FINAL): New macro.
13605         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
13606         constant pool -- don't try to reuse.
13607         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
13608         TYPE_LANG_SPECIFIC.
13609         (find_in_current_zip): Use TYPE_JCF.
13610         * parse.h (java_check_final): Prototype removed.
13611         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
13612         (maybe_create_class_interface_decl,
13613         check_class_interface_creation): Likewise.
13614         (java_expand_finals): Function removed.
13615         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
13616         (block_statement:): Fixed comment.
13617         (anonymous_class_creation:): Likewise.
13618         (check_class_interface_creation): Reversed Jan 12, 2000 extra
13619         argument patch.
13620         (check_class_interface_creation): Loosened error report on (inner)
13621         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
13622         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
13623         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
13624         argument patch.
13625         (create_interface): Likewise.
13626         (anonymous_class_counter): New static global.
13627         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
13628         patch. Fixed comments.
13629         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
13630         anonymous_class_counter when declaring a toplevel class.
13631         (craft_constructor): Fixed constructor name when handling
13632         anonymous classes. Anonymous class constructors to feature hidden
13633         this$<n> parameter.
13634         (java_fix_constructors): Added comment.
13635         (java_check_final): Function removed.
13636         (java_complete_expand_methods): Fixed comment. Don't generate
13637         class data, save its outgoing constant pool instead.
13638         (verify_constructor_super): Skip anonymous class constructor
13639         hidden this$<n> parameter.
13640         (java_expand_classes): New local `saved_ctxp'. Removed call to
13641         java_expand_finals and java_check_final. Expand anonymous class
13642         constructors. Generate class data.
13643         (build_super_invocation): Skip anonymous class hidden this$<n>
13644         parameter.
13645         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
13646         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
13647         (set_java_signature): Likewise.
13648
13649 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
13650
13651         * gjavah.c: Delete ACC_VISIBILITY define.
13652         * jcf.h: Add ACC_VISIBILITY define.
13653         * parse.y: final: rule tagged <value>.
13654         (java_check_regular_methods): Use ACC_VISIBILITY define for
13655         default package access check.
13656         (local_variable_declaration_statement): Use final: rule.
13657
13658 2000-01-17  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
13659
13660         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
13661         (final:): New rule.
13662
13663 2000-01-17  Tom Tromey  <tromey@cygnus.com>
13664
13665         * gjavah.c (print_field_info): Allow non-static final fields.
13666
13667 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13668
13669         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
13670         * parse.y (patch_anonymous_class): New function.
13671         (create_anonymous_class): Register incomplete type when the
13672         class/interface to extends/implement isn't known yet.
13673         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
13674         (verify_constructor_super): Tuned error message.
13675
13676 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13677
13678         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
13679         (ANONYMOUS_CLASS_P): New macro.
13680         (TYPE_SIGNATURE, TYPE_JCF): New macros.
13681         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
13682         * parse.y (create_class): Added leading argument.
13683         (maybe_create_class_interface_decl,
13684         check_class_interface_creation): Likewise.
13685         (craft_constructor): New function.
13686         (verify_constructor_super): Added argument in prototype.
13687         (class_declaration:): Inserted leading argument.
13688         (for_begin:): Use FOR_LOOP_P.
13689         (anonymous_class_creation): Create WFL of the anonymous class to
13690         instantiate. Call build_new_invocation. Added comments.
13691         (check_class_interface_creation): Handle parameter `anonymous' in
13692         verbose mode class creation announce.
13693         (link_nested_class_to_enclosing): Exclude anonymous classes.
13694         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
13695         anonymous class, even though they appear to have an enclosing
13696         context.
13697         (create_interface): Pass extra argument to
13698         check_class_interface_creation.
13699         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
13700         (create_class): Call check_class_interface_creation and
13701         maybe_create_class_interface_decl with extra new argument. Don't
13702         add private this$<n> to anonymous classes.
13703         (method_declarator): Insert hidden this$<n> to anonymous class
13704         constructors.
13705         (java_fix_constructors): Deleted code creating default
13706         constructor. Call craft_constructor instead.
13707         (java_check_regular_methods): Set `saw_constructor' to 1 for
13708         anonymous classes.
13709         (fix_constructors): Pass extra argument to verify_constructor_super.
13710         (verify_constructor_super): New local `sdecl', use it. Search for
13711         matching constructor (possibly featuring arguments) in super
13712         class.
13713         (lookup_method_invoke): Craft constructor according to arguments
13714         list when dealing with anonymous class constructors.
13715         (build_super_invocation): Pass arguments to anonymous class super
13716         constructors.
13717         (search_loop): Use FOR_LOOP_P.
13718         (labeled_block_contains_loop_p): Likewise.
13719
13720 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13721
13722         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
13723         (enclosing_context_p): New function.
13724         (get_access_flags_from_decl): Handle CLASS_STATIC.
13725         (maybe_layout_super_class): Extra first argument passed to
13726         do_resolve_class.
13727         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
13728         ID_INIT_P.
13729         * decl.c (access0_identifier_node): New global.
13730         (init_decl_processing): access0_identifier_node initialized.
13731         (pushdecl): Set DECL_CONTEXT only on non type decls.
13732         * expr.c (lookup_field): Lookup inner class fields in enclosing
13733         contexts.
13734         (expand_invoke): Use ID_INIT_P.
13735         (expand_java_field_op): Use DECL_CLINIT_P.
13736         * java-tree.def (CLASS_LITERAL): New tree code.
13737         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
13738         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
13739         (struct lang_decl): New field `inner_access'.
13740         (enclosing_context_p): Prototyped.
13741         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
13742         ID_CLINIT_P): New macros.
13743         (CLASS_STATIC): New macro.
13744         (CLASS_ACCESS0_GENERATED_P): New macro.
13745         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
13746         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
13747         INNER_CLASS_P): New macros.
13748         (DECL_INNER_CLASS_LIST): New macro.
13749         * jcf-parse.c (yyparse): Avoid the use of ANSI string
13750         concatenation.
13751         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
13752         the shift value to int. Fixed typo in comment.
13753         * lex.c (inst_id, wpv_id): Initialize.
13754         * mangle.c (unicode_mangling_length): Take `$' into account.
13755         * parse.h (DRECOVER, RECOVER): Terminate properly.
13756         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
13757         (typedef struct _jdep): New field `enclosing'.
13758         (JDEP_ENCLOSING): New macro.
13759         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
13760         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
13761         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
13762         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
13763         GET_ENCLOSING_CPC_CONTEXT): New macros.
13764         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
13765         (do_resolve_class): Added extra argument in prototype.
13766         * parse.y (resolve_class): Added extra argument in prototype.
13767         (maybe_create_class_interface_decl): Likewise.
13768         (maybe_use_access_method, build_wfl_wrap): New functions.
13769         (java_complete_expand_classes, java_complete_expand_class):
13770         Likewise.
13771         (java_parser_context_push_initialized_field,
13772         java_parser_context_suspend, java_parser_context_resume):
13773         Likewise.
13774         (maybe_make_nested_class_name, make_nested_class_name,
13775         set_nested_class_simple_name_value,
13776         link_nested_class_to_enclosing, find_as_inner_class,
13777         find_as_inner_class_do, check_inner_class_redefinition,
13778         build_thisn_assign, build_current_thisn, build_access_to_thisn,
13779         maybe_build_thisn_access_method, build_outer_field_access,
13780         build_outer_field_access_methods, build_outer_field_access_expr,
13781         build_outer_method_access_method, build_new_access_id,
13782         build_outer_field_access_method, outer_field_access_p,
13783         outer_field_expanded_access_p, outer_field_access_fix,
13784         build_incomplete_class_ref, patch_incomplete_class_ref,
13785         create_anonymous_class): Likewise.
13786         (inst_id, wpv_id): New static global variables.
13787         (synchronized:): New rule, tagged <node>.
13788         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
13789         rules.
13790         (anonymous_class_creation:): New rule, tagged <node>.
13791         (NEW_TK): Tagged <node>.
13792         (type_literals, array_type_literal): New rules, tagged <node>.
13793         (class_declaration:): Removed action when reducing by class_body:
13794         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
13795         using GET_CPC in sub-rules.
13796         (class_member_declaration): Handle inner classes.
13797         (method_declaration): When reducing method_header:, reset
13798         current_function_decl when appropriate.
13799         (method_declarator:): Set the number of formal parameter to 0 for
13800         method declared without arguments.
13801         (constructor_declarator:): Likewise.
13802         (static_initializer:): List of elements kept in a list.
13803         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
13804         use of the keyword `static' for type declarations.
13805         (block_statement:): Handle inner class declarations.
13806         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
13807         type qualified `this'.
13808         (class_instance_creation_expression): Use anonymous_class_creation:
13809         to handle inner class instances creation. Handle qualified `new'.
13810         (something_dot_new): Added appropriate actions.
13811         (create_new_parser_context): New function.
13812         (java_push_parser_context, java_parser_context_save_global,
13813         java_parser_context_suspend): Use create_new_parser_context.
13814         (check_modifiers): Changed leading comment.
13815         (check_class_interface_creation): Handle interclasses.
13816         (add_superinterfaces): Fixed comment.
13817         (create_interface): Build qualified name from the raw_name instead
13818         of its matching WFL. Push the initialized fields list. raw_name added
13819         as an extra argument to maybe_create_class_interface_decl.
13820         (create_class): Build qualified name from the raw_name instead of
13821         its matching WFL. Removed assignment to current_parsed_class_un.
13822         Call PUSH_ERROR before returning an error. Suspend the current
13823         parser context when processing an inner class. Push the
13824         initialized fields list. raw_name added as an extra argument to
13825         maybe_create_class_interface_decl. Add the private this$<n>
13826         field.
13827         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
13828         (register_fields): Get the class type from GET_CPC and handle
13829         previous errors.  Added code to handle the creation of static
13830         fields in inner classes. Initialized fields initialization
13831         statements kept in a list of lists.
13832         (maybe_generate_finit): Initialized fields initialization
13833         statements kept in a list of lists. Use GET_CPC.
13834         (maybe_generate_clinit): Likewise.
13835         (method_header): Use GET_CPC and GET_CPC_UN.
13836         (parser_qualified_classname): Handle inner classes.
13837         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
13838         (java_fix_constructors): Hide pointer to enclosing context
13839         instance in constructor list when dealing with inner classes.
13840         (jdep_resolve_class): Call resolve_class with extra first argument
13841         JDEP_ENCLOSING.
13842         (resolve_class): Add enclosing context as a first extra argument
13843         to do_resolve_class.
13844         (do_resolve_class): Call find_as_inner_class. Handle WFLs
13845         properly.
13846         (resolve_no_layout): Extra argument added to resolve_class
13847         invocation.
13848         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
13849         (java_get_real_method_name): Use GET_CPC_UN.
13850         (check_abstract_method_definitions): Use DECL_CLINIT_P.
13851         (java_check_abstract_methods): Handle static method declared in
13852         inner classes by an error.
13853         (java_check_regular_methods): Use DECL_CLINIT_P.
13854         (source_start_java_method): Also set DECL_MAX_LOCALS.
13855         (create_artificial_method): Call java_parser_context_save_global
13856         and java_parser_context_restore_global instead of saving/restoring
13857         the context by hand.
13858         (expand_start_java_method): Improved verbose mode message.
13859         (java_complete_expand_methods): Fixed leading comment. Use
13860         DECL_CLINIT_P.
13861         (fix_constructors): Added assignment to this$<n> if necessary.
13862         (java_expand_classes): Call java_complete_expand_classes instead
13863         of java_complete_expand_methods.
13864         (make_qualified_primary): Simplified.
13865         (merge_qualified_name): Optimized for missing left or right parts.
13866         (resolve_expression_name): Handle access to outer class fields from
13867         interclasses.
13868         (resolve_qualified_expression_name): New macro
13869         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
13870         classes. Report error on non appropriate qualification of
13871         `new'. Handle qualified `this'.
13872         (not_accessible_p): Allow access to outer class private fields from
13873         inner classes.
13874         (patch_method_invocation): Handle method invocations through
13875         access methods and inner class constructor invocations.
13876         (find_applicable_accessible_methods_list): Search enclosing
13877         contexts of an inner class.
13878         (search_applicable_methods_list): Fixed typo.
13879         (argument_types_convertible): Handle inner class constructors'
13880         hidden outer context reference argument.
13881         (qualify_ambiguous_name): Handle qualified `this'.
13882         (java_complete_lhs): Handle use of field accessed through
13883         artificial access methods in various cases of assignments. Handle
13884         CLASS_LITERAL node.
13885         (check_final_assignment): Use DECL_CLINIT_P.
13886         (valid_ref_assignconv_cast_p): Handle the destination being an
13887         enclosing context of the source.
13888         (patch_unaryop): Handle use of field accessed through artificial
13889         access methods.
13890         (patch_return): Use DECL_CLINIT_P.
13891         (patch_throw_statement): Use DECL_CLINIT_P.
13892         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
13893         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
13894         ID_INIT_P.
13895
13896 2000-01-16  Anthony Green  <green@cygnus.com>
13897
13898         * parse.y (build_string_concatenation): Only use
13899         StringBuffer(String) shortcut if String arg is constant.
13900
13901 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13902
13903         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
13904         the shift value to int. Fixed typo in comment.
13905
13906 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
13907
13908         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
13909         * jcf-write.c: Likewise.
13910         * parse.y: Likewise.
13911         * parse.c: Regenerate.
13912
13913 2000-01-09  Anthony Green  <green@cygnus.com>
13914
13915         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
13916         bytecodes in the correct order.
13917
13918 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13919
13920         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
13921
13922 2000-01-06  Anthony Green  <green@cygnus.com>
13923
13924         * expr.c (java_lang_expand_expr): Switch to permanent obstack
13925         before building constant array decl.
13926
13927 2000-01-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13928
13929         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
13930         method invocation and typo in conditional expression.
13931         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
13932         the appropriate NOTE_POP.
13933         * parse.y (patch_binop): Shift value mask to feature the right
13934         type.
13935
13936 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13937
13938         * class.c (assume_compiled, assume_compiled_node): Add static
13939         prototype.
13940         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
13941
13942         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
13943
13944         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
13945
13946         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
13947         to `__modifier' to avoid stringifying it.
13948
13949         * parse.y (verify_constructor_circularity): Don't call a variadic
13950         function with a non-literal format string.
13951         (java_check_abstract_methods): Move unreachable code inside
13952         `continue' statement.
13953         (lookup_method_invoke): Call xstrdup, not strdup.
13954
13955         * expr.c (expand_java_field_op): Avoid the use of ANSI string
13956         concatenation.
13957
13958         * jcf-parse.c (yyparse): Likewise.
13959
13960         * jv-scan.c (main): Likewise.
13961
13962 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13963
13964         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
13965         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
13966         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
13967         concatenation.
13968
13969         * parse.y (synchronized, variable_redefinition_error,
13970         check_class_interface_creation, create_interface, create_class,
13971         method_header, finish_method_declaration,
13972         check_modifiers_consistency, method_declarator,
13973         complete_class_report_errors, check_abstract_method_definitions,
13974         java_check_regular_methods, check_throws_clauses,
13975         java_check_abstract_methods, read_import_dir,
13976         check_pkg_class_access, declare_local_variables, fix_constructors,
13977         cut_identifier_in_qualified, resolve_expression_name,
13978         resolve_qualified_expression_name, patch_method_invocation,
13979         java_complete_lhs, patch_assignment, try_builtin_assignconv,
13980         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
13981         patch_exit_expr, patch_exit_expr, patch_switch_statement,
13982         patch_try_statement, patch_synchronized_statement,
13983         patch_throw_statement, check_thrown_exceptions,
13984         patch_conditional_expr): Likewise.
13985
13986 1999-12-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13987
13988         * Makefile.in (LIBDEPS): Added gcc's errors.o
13989         (../jcf-dump$(exeext):): Link with gcc's errors.o
13990         (../gcjh$(exeext):): Likewise.
13991         * expr.c (expand_java_NEW): Layout the entire target type instead of
13992         laying out its methods only.
13993         (lookup_field): Layout the class after having loaded it.
13994         * java-tree.h (java_debug_context): Declared.
13995         * jcf-io.c (toplev.h): Included.
13996         (find_class): Removed assignment to jcf's outofsynch
13997         field. Force source file to be read if newer than its matching
13998         class file. Tweaked debug messages.
13999         * jcf-parse.c (jcf_out_of_synch): Deleted.
14000         (read_class): Call to jcf_out_of_synch removed.
14001         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
14002         (jcf_out_of_synch): Prototype deleted.
14003         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
14004         `deprecated' and `class_err': integer turned into bit-fields.
14005         New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments.
14006         * parse.y (package_list): New global.
14007         (package_declaration:): Record newly parsed package name.
14008         (extra_ctxp_pushed_p): Static global deleted.
14009         (java_parser_context_save_global): Create buffer context for the
14010         purpose of saving globals, if necessary.
14011         (java_parser_context_restore_global): Pop context pushed for the
14012         purpose of saving globals, if necessary.
14013         (java_debug_context_do): New prototype and function.
14014         (java_debug_context): Likewise.
14015         (do_resolve_class): Use already parsed package names to qualify
14016         and lookup class candidate.
14017         (java_pre_expand_clinit): Removed unnecessary local variable.
14018
14019 1999-12-17  Tom Tromey  <tromey@cygnus.com>
14020
14021         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
14022         fixes PR gcj/119.
14023         (process_file): Use `\n\' at end of each line in string.
14024
14025 1999-12-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14026
14027         * expr.c (expand_invoke): Layout the loaded class before
14028         attempting to use it.
14029         (expand_java_field_op): Allow final field assignments to take
14030         place in $finit$.
14031         * typeck.c (convert): Return error_mark_node if expr is null.
14032
14033 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14034
14035         * class.c (class_depth): Return -1 if the class doesn't load
14036         properly.
14037         * expr.c (can_widen_reference_to): Check for errors during depth
14038         computation and return 0 accordingly.
14039         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
14040         create default constructors and add an other error check.
14041         * parse.h (java_fix_constructors): Prototyped.
14042         * parse.y (java_pre_expand_clinit): Likewise.
14043         (build_super_invocation): Re-prototyped to feature one argument.
14044         (java_check_circular_reference): Directly use `current'.
14045         (java_fix_constructors): New function.
14046         (java_check_regular_methods): Don't create default constructors
14047         here, but abort if none were found.
14048         (java_complete_expand_methods): Pre-process <clinit> calling
14049         java_pre_expand_clinit.
14050         (java_pre_expand_clinit): New function.
14051         (fix_constructors): build_super_invocation invoked with the
14052         current method declaration as an argument.
14053         (build_super_invocation): Use the context of the processed method
14054         decl argument instead of current_class.
14055         * typeck.c (lookup_java_method): Take WFLs in method names into
14056         account.
14057
14058 1999-12-14  Per Bothner  <per@bothner.com>
14059
14060         * class.c (make_class_data): flag_keep_inline_functions to keep
14061         private methods in the method array.
14062
14063 1999-12-15  Anthony Green  <green@cygnus.com>
14064
14065         * check-init.c (check_init): Take into account both types of
14066         `throw's when checking for uninitialized variables.
14067
14068 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14069
14070         * parse.y (java_complete_lhs): Force conversion of array
14071         dimensions to int_type_node, that's what runtime's ABI expects.
14072
14073 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14074
14075         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
14076         operand of a WFL, until the Java front-end gets fixed with regard
14077         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
14078
14079 1999-12-10  Andrew Haley  <aph@cygnus.com>
14080
14081         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
14082         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
14083         expr.c (build_java_athrow): Add support for sjlj-exceptions.
14084         java-tree.h: Ditto.
14085         jcf-write.c: Ditto.
14086
14087 1999-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14088
14089         * expr.c (java_lang_expand_expr): Switch to permanent obstack
14090         before calling expand_eh_region_start and expand_start_all_catch.
14091         * except.c (expand_start_java_handler): Switch to permanent
14092         obstack before calling expand_eh_region_start.
14093         (expand_end_java_handler): Switch to permanent obstack before
14094         calling expand_start_all_catch.
14095
14096 1999-12-5  Anthony Green  <green@cygnus.com>
14097
14098         * decl.c (init_decl_processing): Mark throw_node as a noreturn
14099         function with side effects.
14100         (init_decl_processing): Mark all memory allocating DECLs with
14101         DECL_IS_MALLOC.
14102
14103 1999-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14104
14105         * except.c (expand_end_java_handler): Call
14106         expand_resume_after_catch and end_catch_handler.
14107
14108 1999-11-30  Anthony Green  <green@cygnus.com>
14109
14110         * verify.c (verify_jvm_instructions): Create new return label
14111         chain if non existent (don't rely on the verified state of the jsr
14112         target.)
14113
14114 1999-11-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14115
14116         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
14117         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
14118
14119         * parse.y (patch_assignment): Removed bogus final class test on
14120         lhs when checking on whether to emit an ArrayStoreException runtime
14121         check.
14122         * expr.c (expand_java_arraystore): Likewise.
14123
14124 1999-11-28 Anthony Green <green@cygnus.com>
14125
14126         * decl.c (find_local_variable): Reuse single slot decls when
14127           appropriate.
14128
14129 1999-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14130
14131         * jcf-parse.c (saw_java_source): Global variable removed.
14132         (read_class): Don't use `saw_java_source'. Added extra braces.
14133         (yyparse): Code setting `saw_java_source' removed.
14134
14135 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
14136
14137         * except.c (emit_handlers): Zero catch_clauses after emitting them.
14138
14139 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14140
14141         * verify.c (merge_type_state): Non verified subroutines being
14142         considered more than once to trigger passive type merge.
14143
14144 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14145
14146         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
14147         in case of error. Error message tuned.
14148
14149 1999-11-21  Anthony Green  <green@cygnus.com>
14150
14151         * constants.c (find_methodref_index): Unwrap method names before
14152         inserting them in the constant pool.
14153
14154         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
14155
14156         * class.c (assume_compiled_node): New typedef.
14157         (assume_compiled_tree): New static data.
14158         (find_assume_compiled_node): New function.
14159         (add_assume_compiled): New function.
14160         (assume_compiled): New function.
14161         * class.c (make_class_data): Use assume_compiled.
14162         (is_compiled_class): Use assume_compiled.
14163
14164         * java-tree.h (add_assume_compiled): Declare.
14165
14166         * lang.c (lang_decode_option): Parse new options.
14167
14168 1999-11-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14169
14170         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
14171         int_type_node: that's what `_Jv_AllocObject' expects.
14172
14173 1999-11-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14174
14175         * parse.y (lookup_method_invoke): Use lang_printable_name to
14176         reliably build the type name during error report. Fixes PR gcj/97.
14177
14178 1999-11-09  Tom Tromey  <tromey@cygnus.com>
14179
14180         * jcf-path.c: Include <sys/stat.h>.
14181         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
14182         (DIR_UP): New macro.
14183
14184 1999-11-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14185
14186         * parse.y (source_end_java_method): Resume permanent allocation,
14187         reversing Apr 27 1998 patch.
14188         (patch_string_cst): Pop obstacks after having pushed the permanent
14189         ones.
14190
14191 1999-11-05  Tom Tromey  <tromey@cygnus.com>
14192
14193         * class.c (finish_class): Emit inlined methods if any native
14194         methods exist in the class.  Fixes PR gcj/85.
14195
14196 1999-11-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14197
14198         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
14199         (qualify_ambiguous_name): Likewise.
14200
14201 1999-11-03  Godmar Back <gback@cs.utah.edu>
14202
14203         * typeck.c: (lookup_java_method):  search all inherited
14204         interfaces when looking up interface method.
14205
14206 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14207
14208         * parse.y (method_header:): Issue error message for rule `type
14209         error'.
14210         (synchronized:): Error report when not using synchronized.
14211
14212 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14213
14214         * parse.y (resolve_qualified_expression_name): Prevent `this' from
14215         being used before the superclass constructor has been called.
14216         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
14217         instead of `CALL_THIS_CONSTRUCTOR_P'.
14218
14219 1999-10-30  Todd T. Fries <todd@lighthouse.fries.net>
14220
14221         * check-init.c: Fix typo in comment.
14222
14223 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14224
14225         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
14226         and final method.
14227
14228 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14229
14230         * parse.y (expression_statement:): Call function to report
14231         improper invocation of a constructor.
14232         (parse_ctor_invocation_error): New function.
14233
14234 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
14235
14236         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
14237         remember_end_note.
14238
14239 1999-10-21  Tom Tromey  <tromey@cygnus.com>
14240
14241         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
14242         in generated `main'.
14243
14244 1999-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14245
14246         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
14247         (qualify_ambiguous_name): Likewise.
14248
14249 1999-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14250
14251         * parse.y (java_complete_tree): fold_constant_for_init to work on
14252         permanent_obstack.
14253         (java_complete_lhs): Likewise.
14254         (array_constructor_check_entry): Complete an initializer element
14255         on permanent_obstack.
14256
14257 1999-10-19  Tom Tromey  <tromey@cygnus.com>
14258
14259         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
14260         From Mike Moreton <mike@pillim.demon.co.uk>.
14261
14262 1999-10-15  Greg McGary  <gkm@gnu.org>
14263
14264         * java-tree.h (flag_bounds_check): Remove extern decl.
14265         * lang.c (flag_bounds_check): Remove global variable.
14266         (lang_f_options): Remove "bounds-check" entry.
14267         (lang_init_options): Default flag_bounds_check to "on".
14268
14269 1999-10-14  Tom Tromey  <tromey@cygnus.com>
14270
14271         * jvgenmain.c (usage): New function.
14272         (main): Use it.  Also, handle `-D' options.
14273         * jvspec.c (lang_specific_driver): Recognize -D.
14274         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
14275
14276         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
14277
14278 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14279
14280         * jcf-dump.c (print_constant, disassemble_method): Don't call a
14281         variadic function with a non-literal format string.
14282
14283         * parse-scan.y (report_main_declaration): Likewise.
14284
14285         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
14286
14287         * parse.y (read_import_dir, patch_assignment, patch_binop,
14288         patch_array_ref): Likewise.
14289
14290         * typeck.c (build_java_array_type): Likewise.
14291
14292         * verify.c (verify_jvm_instructions): Likewise.
14293
14294 1999-10-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14295
14296         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
14297
14298 1999-10-07  Anthony Green  <green@cygnus.com>
14299
14300         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
14301         where CHECK_PUT may fail for valid reasons.
14302
14303         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
14304         UNSAFE_PUTN): New macros.
14305
14306 1999-10-04  Tom Tromey  <tromey@cygnus.com>
14307
14308         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
14309         well.  Fixes Java PR gcj/59.
14310         * parse-scan.y (yyerror): Report errors.
14311
14312 1999-09-24  Glenn Chambers  <GChambers@provsol.com>
14313
14314         * decl.c (insert_block): Remove unconditional `abort'.
14315
14316 1999-09-24  Bernd Schmidt  <bernds@cygnus.co.uk>
14317
14318         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
14319         FUNCTION_CODE now of type int.  All callers changed.
14320         Set the builtin's DECL_BUILT_IN_CLASS.
14321
14322 1999-09-23  Tom Tromey  <tromey@cygnus.com>
14323
14324         * jvspec.c (lang_specific_driver): Don't read spec file if
14325         -fsyntax-only given.
14326
14327 1999-09-22  Tom Tromey  <tromey@cygnus.com>
14328
14329         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
14330
14331         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
14332         (WORDS_TO_LONG): Likewise.
14333         (WORDS_TO_DOUBLE): Likewise.
14334
14335 1999-09-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14336
14337         * jcf-write.c (RELOCATION_VALUE_0): New macro.
14338         (RELOCATION_VALUE_1): Likewise.
14339         (emit_iinc, emit_reloc, push_constant1, push_constant2,
14340         push_in_const, push_long_const): Prototyped.
14341         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
14342         (push_constant2): Likewise.
14343         (push_int_const): Cast find_constant1's integer arguments to `jword'.
14344         (find_constant_wide): Cast find_constant2's integer arguments to
14345         `jword'.
14346         (find_constant_index): Cast find_constant2's and find_constant2's
14347         integer arguments to `jword'.
14348         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
14349         (emit_switch_reloc): Use RELOCATION_VALUE_0.
14350         (emit_if): Use RELOCATION_VALUE_1.
14351         (emit_goto): Likewise.
14352         (emit_jsr): Likewise.
14353         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
14354         argument to push_long_const to HOST_WIDE_INT.
14355
14356 1999-09-15  Andreas Schwab  <schwab@suse.de>
14357
14358         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
14359
14360 1999-09-20  Nick Clifton  <nickc@cygnus.com>
14361
14362         * lang.c (lang_decode_option): Extend comment.
14363
14364 1999-09-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14365
14366         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
14367         instead of fndecl.
14368
14369 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14370
14371         * gjavah.c (get_field_name, print_method_info, print_include,
14372         add_namelet): Use xmalloc, not malloc.
14373
14374         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
14375         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
14376         NULL pointer.
14377
14378         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
14379
14380         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
14381
14382         * jcf-path.c (add_entry): Likewise.
14383
14384         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
14385
14386         * jv-scan.c (xmalloc): Remove definition.
14387
14388         * jvgenmain.c (xmalloc): Likewise.
14389
14390         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
14391
14392         * lex.c (java_store_unicode): Use xrealloc, not realloc.
14393
14394         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
14395         concat, not xmalloc/sprintf.
14396         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
14397         (xstrdup): Remove definition.
14398
14399         * parse.y (duplicate_declaration_error_p,
14400         constructor_circularity_msg, verify_constructor_circularity,
14401         check_abstract_method_definitions, java_check_regular_methods,
14402         java_check_abstract_methods, patch_method_invocation,
14403         check_for_static_method_reference, patch_assignment, patch_binop,
14404         patch_cast, array_constructor_check_entry, patch_return,
14405         patch_conditional_expr): Use xstrdup, not strdup.
14406
14407         * zextract.c (ALLOC): Use xmalloc, not malloc.
14408
14409 1999-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14410
14411         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
14412
14413         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
14414         (do_spec, lang_specific_pre_link, lang_specific_driver,
14415         input_filename, input_filename_length): Don't declare.
14416         (main_class_name, jvgenmain_spec, lang_specific_driver):
14417         Constify a char*.
14418         (lang_specific_driver): All calls to the function pointer
14419         parameter now explicitly call `fatal'.
14420
14421 1999-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14422
14423         * parse.y (find_applicable_accessible_methods_list): Search
14424         abstract classes as interfaces.
14425
14426 1999-09-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14427
14428         * class.c (finish_class): We're now outside a valid method
14429         declaration. Tell the rest of gcc so.
14430
14431 1999-09-08  Bruce Korb  autogen@linuxbox.com
14432
14433         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
14434
14435 1999-09-07  Tom Tromey  <tromey@cygnus.com>
14436
14437         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
14438         java-array.h.
14439         (decode_signature_piece): Don't emit "::" in JArray<>.
14440         (print_namelet): Only print trailing `;' when printing a class.
14441
14442 1999-09-10  Bernd Schmidt  <bernds@cygnus.co.uk>
14443
14444         * java-tree.h: Delete declarations for all tree nodes now moved to
14445         global_trees.
14446         * decl.c: Delete their definitions.
14447
14448 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
14449
14450         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
14451         * Makefile.in (OBJS): Add ggc-callbacks.o.
14452         (OBJDEPS): Likewise.
14453
14454 1999-09-03  Tom Tromey  <tromey@cygnus.com>
14455
14456         * parse.y (strip_out_static_field_access_decl): Return operand if
14457         it satisfies JDECL_P.
14458
14459 1999-09-02  Tom Tromey  <tromey@cygnus.com>
14460
14461         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
14462         Handle nested arrays, like `[[I'.
14463
14464 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14465
14466         * class.c (finish_class): Remove unused parameter, all callers
14467         changed.
14468
14469         * expr.c (build_java_athrow): Change return type to void.
14470         (java_lang_expand_expr): Make sure each case in switch returns a
14471         value.
14472
14473         * java-tree.h (finish_class): Fix prototype to take void args.
14474
14475         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
14476         (main): Issue return from main, not exit.
14477
14478         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
14479
14480         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
14481
14482         * jv-scan.c (main): Issue return from main, not exit.
14483
14484         * parse.y (check_abstract_method_definitions,
14485         java_check_abstract_method_definitions): Add static prototypes.
14486         (java_complete_expand_methods): Fix call to `finish_class'.
14487
14488         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
14489         and `prevpc'.
14490
14491 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14492
14493         * lang.c (language_string): Constify.
14494
14495 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14496
14497         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
14498         Remove hacks for stuff which comes from libiberty.
14499
14500         * Make-lang.in: Likewise.
14501
14502 1999-08-30  Hans-Peter Nilsson  <hp@axis.se>
14503
14504         * Makefile.in (xref.o): Depend on xref.c explicitly.
14505
14506 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14507
14508         * java-tree.h (lang_printable_name): Constify a char*.
14509
14510         * lang.c (lang_printable_name): Likewise.
14511
14512 1999-08-27  Jeffrey A Law  (law@cygnus.com)
14513
14514         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
14515         comments in C code.
14516
14517 1999-08-26  Tom Tromey  <tromey@cygnus.com>
14518
14519         * gjavah.c (print_cxx_classname): Print "::" before qualified
14520         name.
14521
14522 1999-08-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14523
14524         * parse.y (lookup_cl): Changed leading comment. Now does its best
14525         to set the column number.
14526         (qualify_ambiguous_name): Take WFL wrappers into account.
14527
14528 1999-08-25  Gregg Townsend  <gmt@cs.arizona.edu>
14529
14530         * verify.c (verify_jvm_instructions): Don't check instruction
14531         validity beyond end of method.
14532
14533 1999-08-25  Tom Tromey  <tromey@cygnus.com>
14534
14535         * jvspec.c (lang_specific_driver): Correctly handle --help again.
14536
14537 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14538
14539         * gjavah.c (print_name, print_base_classname, utf8_cmp,
14540         cxx_keyword_subst, generate_access, name_is_method_p,
14541         get_field_name, print_field_name, super_class_name, print_include,
14542         decode_signature_piece, print_class_decls, usage, help,
14543         java_no_argument, version, add_namelet, print_namelet): Add static
14544         prototype.
14545         (print_base_classname, utf8_cmp, cxx_keyword_subst,
14546         name_is_method_p): Constify a char*.
14547         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
14548         Provide a final else clause in an if-else-if.
14549         (print_field_info): Add missing final arg in function call to
14550         `print_field_name'.
14551         (print_method_info, decompile_method, decode_signature_piece,
14552         print_c_decl, print_full_cxx_name, print_stub,
14553         print_mangled_classname, super_class_name, print_include,
14554         add_namelet, add_class_decl, print_class_decls, process_file,
14555         help): Constify a char*.
14556
14557         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
14558         push_int_const, find_constant_wide, find_constant_index,
14559         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
14560         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
14561         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
14562         emit_if, emit_goto, emit_jsr, call_cleanups,
14563         make_class_file_name): Add static prototypes.
14564         (generate_bytecode_return, generate_bytecode_insns): Pass a
14565         NULL_PTR, not a NULL_TREE.
14566
14567         * jv-scan.c: Include "jcf.h".
14568         (main): Declare using DEFUN macro.
14569
14570         * jvspec.c (find_spec_file, lang_specific_pre_link,
14571         lang_specific_driver): Add prototypes.
14572         (find_spec_file): Constify a char*.
14573
14574         * keyword.gperf (hash, java_keyword): Add prototypes.
14575
14576         * lang.c (lang_print_error): Add static prototype.
14577         (lang_init): Prefer memcpy over bcopy to avoid casts.
14578
14579         * lex.c (yylex): Add static prototype.
14580
14581         * parse-scan.y: Include "lex.c" earlier.
14582
14583         * parse.h: Remove redundant declaration for `yylex'.
14584
14585         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
14586         labeled_block_contains_loop_p): Add static prototypes.
14587         (not_accessible_p): Make static to match prototype.
14588
14589         * verify.c (start_pc_cmp): Don't needlessly cast away const.
14590
14591 1999-08-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14592
14593         * parse.y (check_method_redefinition): Changed leading comment.
14594         (check_abstract_method_definitions): New function.
14595         (java_check_abstract_method_definitions): New function.
14596         (java_check_regular_methods): Call it.
14597         (verify_constructor_super): Fixed indentation.
14598         (lookup_method_invoke): Likewise.
14599
14600 1999-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14601
14602         * parse.y (method_header): Return a null pointer if the current
14603         class node is null.
14604         (finish_method_declaration): Return if the current function decl
14605         is null.
14606         (source_start_java_method): Likewise.
14607         (java_method_add_stmt): Likewise.
14608
14609 1999-08-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14610
14611         * class.c (emit_register_class): Removed unnecessary call to
14612         start_sequence.
14613         * parse.y (labeled_block_contains_loop_p): Removed unused local
14614         variable.
14615
14616 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14617
14618         * parse.y (java_refold): Added prototype.
14619
14620 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14621
14622         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
14623         (java_stabilize_reference): Removed unnecessary `else'.
14624         (java_complete_lhs): Set flag to remember boolean. Call
14625         java_refold. Added comments.
14626         (java_decl_equiv): New function.
14627         (binop_compound_p): Likewise.
14628         (java_refold): Likewise.
14629         (patch_unaryop): Striped static field access assigned to decl and
14630         op. Changed promotion scheme for ++/-- operators.
14631         (search_loop): New function.
14632         (labeled_block_contains_loop_p): Likewise.
14633         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
14634         comment.
14635         (patch_bc_statement): Call search_loop. Fixed comment.
14636
14637 1999-08-14  Anthony Green  <green@cygnus.com>
14638
14639         * expr.c (java_lang_expand_expr): Mark static array data as
14640         referenced.
14641
14642 1999-08-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14643
14644         * jvgenmain.c (main): NUL-terminate name_obstack.
14645
14646 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14647
14648         * check-init.c (check_bool2_init, done_alternative): Add static
14649         prototypes.
14650
14651         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
14652         (add_method, build_utf8_ref, build_class_ref,
14653         append_gpp_mangled_type, layout_class_method): Constify a char*.
14654
14655         * decl.c (push_promoted_type, make_binding_level): Add static
14656         prototypes.
14657         (push_promoted_type, pushdecl): Constify a char*.
14658
14659         * except.c (find_handler_in_range, link_handler,
14660         check_start_handlers): Add static prototypes.
14661
14662         * expr.c (process_jvm_instruction): Constify a char*.
14663
14664         * gjavah.c (main): Constify a char*.
14665
14666         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
14667         Constify a char*.
14668
14669         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
14670         static prototypes.
14671         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
14672         munge, print_ents): Constify a char*.
14673
14674         * jcf-dump.c (disassemble_method): Constify a char*.
14675         (print_constant_pool, print_exception_table): Add static prototypes.
14676         (print_constant, print_exception_table, main, disassemble_method):
14677         Constify a char*.
14678
14679         * jcf-io.c (find_classfile, find_class): Likewise.
14680
14681         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
14682         (set_source_filename, predefined_filename_p): Add static prototypes.
14683         (set_source_filename, get_constant, get_class_constant,
14684         find_in_current_zip): Constify a char*.
14685
14686         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
14687         static prototypes.
14688         (add_entry, add_path, jcf_path_classpath_arg,
14689         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
14690
14691         * jcf-reader.c (get_attribute, jcf_parse_preamble,
14692         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
14693         jcf_parse_one_method, jcf_parse_methods,
14694         jcf_parse_final_attributes): Add static prototypes.
14695         (get_attribute): Constify a char*.
14696
14697         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
14698         jcf_dependency_add_target, jcf_path_classpath_arg,
14699         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
14700
14701         * jv-scan.c (main): Constify a char*.
14702         (gcc_obstack_init): Add prototype arguments.
14703
14704         * jvgenmain.c (gcc_obstack_init): Likewise.
14705         (main): Constify a char*.
14706
14707         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
14708         static prototypes.
14709         (put_decl_string, lang_print_error): Constify a char*.
14710         (lang_init): Remove redundant extern prototype.
14711
14712         * mangle.c (emit_unicode_mangled_name): Constify a char*.
14713
14714         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
14715         Add static prototypes.
14716         (get_type_from_signature): Constify a char*.
14717
14718         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
14719         Add static prototypes.
14720         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
14721         (verify_jvm_instructions): Constify a char*.
14722
14723         * xref.c (xref_flag_value): Likewise.
14724
14725         * xref.h (xref_flag_value): Likewise.
14726
14727         * zextract.c (makeword, makelong): Add static prototypes.
14728         (makeword, makelong): Constify a uch*.
14729
14730 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14731
14732         * lang.c (java_dummy_print): Constify a char*.
14733         (lang_print_error): Likewise.
14734         (lang_init): Remove redundant prototype for `print_error_function'.
14735         (lang_init_source): Likewise.
14736         (lang_identify): Constify a char*.
14737
14738 1999-08-09  Tom Tromey  <tromey@cygnus.com>
14739
14740         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
14741         (WORDS_TO_LONG): Likewise.
14742         (WORDS_TO_DOUBLE): Likewise.
14743
14744 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14745
14746         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
14747
14748         * expr.c (java_stack_pop, java_array_data_offset,
14749         build_java_throw_out_of_bounds_exception, case_identity,
14750         build_java_check_indexed_type): Add static prototypes.
14751         (linenumber_table, expand_invoke, expand_java_field_op,
14752         build_primtype_type_ref, expand_byte_code): Constify a char*.
14753
14754         * java-tree.h (build_primtype_type_ref, linenumber_table):
14755         Constify a char*.
14756         (java_lang_expand_expr): Add prototype.
14757
14758         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
14759         `java_lang_expand_expr'.
14760
14761         * lex.c (java_lex_error): Constify a char*.
14762         (java_get_unicode, java_read_char, java_allocate_new_line,
14763         java_unget_unicode, java_sneak_unicode): Prototype.
14764
14765         * parse-scan.y (current_class, package_name, method_declarator,
14766         report_class_declaration, yyerror): Constify a char*.
14767
14768         * parse.h (java_report_errors): Prototype.
14769         (yyerror): Constify a char*.
14770
14771         * parse.y (classitf_redefinition_error, check_modifiers,
14772         parse_jdk1_1_error, lookup_package_type,
14773         lookup_package_type_and_set_next, get_printable_method_name,
14774         purify_type_name): Constify a char*.
14775         (build_super_invocation, maybe_generate_finit,
14776         verify_constructor_super, parser_add_interface,
14777         add_superinterfaces, jdep_resolve_class, note_possible_classname,
14778         java_complete_expand_methods, java_expand_finals,
14779         cut_identifier_in_qualified, java_stabilize_reference,
14780         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
14781         merge_string_cste): Prototype.
14782         (single_type_import_declaration, yyerror,
14783         variable_redefinition_error, build_array_from_name,
14784         build_unresolved_array_type, check_class_interface_creation,
14785         resolve_class, complete_class_report_errors,
14786         note_possible_classname, read_import_dir,
14787         find_in_imports_on_demand, resolve_package, fix_constructors,
14788         check_deprecation, lookup_method_invoke,
14789         maybe_build_primttype_type_ref, array_constructor_check_entry):
14790         Constify a char*.
14791         (java_complete_expand_methods, java_expand_finals): Make static.
14792         (convert_narrow): Remove static prototype.
14793
14794 1999-08-03  J"orn Rennecke <amylaar@cygnus.co.uk>
14795
14796         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
14797
14798 1999-08-02  Richard Henderson  <rth@cygnus.com>
14799
14800         * decl.c: Include defaults.h instead of expr.h.
14801         * parse.y: Likewise.
14802
14803 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
14804
14805         * java/decl.c (start_java_method): Change all uses of
14806         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
14807         Ensure expr.h is included.
14808         * java/expr.c (pop_arguments): Ditto.
14809         * java/parse.y (expand_start_java_method): Ditto.
14810
14811 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14812
14813         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
14814
14815 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
14816
14817         * decl.c: Include "function.h".
14818         * except.c: Likewise.
14819         * parse.y: Likewise.
14820         * Makefile.in: Update dependencies.
14821
14822 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14823
14824         * expr.c (build_java_soft_divmod): Provide a default case in switch.
14825         (java_lang_expand_expr): Mark parameters `target', `tmode' and
14826         `modifier' with ATTRIBUTE_UNUSED.
14827
14828         * gjavah.c (process_file): Add braces around ambiguous `else'.
14829
14830         * jcf-dump.c (print_access_flags, localvar_free): Change return
14831         type to void.
14832
14833         * parse.y (java_complete_expand_method): Initialize variable
14834         `exception_copy'.
14835         (resolve_qualified_expression_name): Likewise for `field_decl'.
14836         (patch_method_invocation): Likewise for `class_to_search'.
14837         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
14838         (patch_assignment): Likewise for `lhs_type'.
14839
14840         * verify.c (verify_jvm_instructions): Remove unused variable
14841         `caller'.
14842
14843 1999-07-25  Richard Henderson  <rth@cygnus.com>
14844
14845         * decl.c (va_list_type_node): New.
14846
14847 1999-07-25  Anthony Green  <green@cygnus.com>
14848
14849         * gjavah.c (print_stub): New function.
14850         (METHOD_IS_NATIVE): New macro.
14851         (print_mangled_classname): Make static.
14852         (HANDLE_END_FIELD): Don't emit fields during stub generation.
14853         (process_file): Perform stub generation.
14854         (HANDLE_METHOD): Don't emit class decls during stub
14855         generation.
14856         (HANDLE_END_METHOD): Take into account stub generation.
14857         (print_method_info): Handle stub generation.
14858         (print_stub): New function.
14859         (print_cxx_classname): Make signature consistant with others.
14860         (help): Describe -stubs option.
14861         (main): Create stub file.
14862         (version): Use version.c.
14863         (print_full_cxx_name): New function.
14864         (print_c_decl): Use print_full_cxx_name.
14865
14866 1999-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14867
14868         * check-init.c (check_init): Handle MAX_EXPR.
14869
14870 1999-07-15  Andrew Haley  <aph@cygnus.com>
14871
14872         * lang.c (flag_use_divide_subroutine): New variable.
14873         * typeck.c: (convert_ieee_real_to_integer): Bounds check
14874         fp-to-integer conversion.
14875         (convert): Call convert_ieee_real_to_integer when flag_fast_math
14876         is not set.
14877
14878         * expr.c (build_java_soft_divmod): New function.
14879         (build_java_binop): Call build_java_soft_divmod if
14880         flag_use_divide_subroutine is set.
14881         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
14882         soft_lrem_node: new builtin functions.
14883         (init_decl_processing) Initialize the new builtins.
14884         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
14885         soft_lrem_node: new builtin functions.
14886         (build_java_soft_divmod): New function.
14887         * parse.y: Call build_java_soft_divmod if
14888         flag_use_divide_subroutine is set.
14889         * parse.c: Rebuilt.
14890
14891         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
14892         a --specs= arg) even if not linking.
14893         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
14894         -fuse-divide-subroutine
14895
14896 1999-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14897
14898         * parse.y (resolve_and_layout): Check methods only once.
14899         (resolve_qualified_expression_name): Verify thrown exceptions
14900         compatibility.
14901         (check_thrown_exceptions): Reject exceptions thrown in
14902         initializer. Error message tuned.
14903
14904 1999-07-14  Andrew Haley  <aph@cygnus.com>
14905
14906         * expr.c (expand_expr): Do not return the last statement in a
14907         block as the block's value.
14908
14909 1999-07-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14910
14911         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
14912         CALL_EXPR, to avoid order of evaluation changes.
14913
14914 1999-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14915
14916         * parse.y (qualify_ambiguous_name): Do not use
14917         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
14918
14919 1999-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14920
14921         * check-init.c (check_init): Handle MAX_EXPR.
14922         * expr.c (force_evaluation_order): Force method call arguments to
14923         be evaluated in left-to-right order.
14924         * parse.y (qualify_ambiguous_name): Loop again to qualify
14925         NEW_ARRAY_EXPR properly.
14926
14927 1999-06-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14928
14929         * parse.y (patch_invoke): Resolve unresolved invoked method
14930         returned type.
14931         (qualify_ambiguous_name): STRING_CST to qualify expression for
14932         type name resolution.
14933
14934 1999-06-24  Andrew Haley  <aph@cygnus.com>
14935
14936         * class.c (finish_class): Whenever a deferred method is
14937         output, rescan the list of methods to see if a new candidate for
14938         output can be found.
14939
14940 1999-06-28  Tom Tromey  <tromey@cygnus.com>
14941
14942         * jvspec.c (lang_specific_driver): Recognize --help.
14943
14944 1999-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14945
14946         * parse.y (resolve_package): Fixed bogus return statement.
14947         (patch_method_invocation): Resolve method invocation beginning with
14948         a package name qualifier.
14949
14950 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14951
14952         * Make-lang.in (java.stage1): Depend on stage1-start.
14953         (java.stage2): Likewise for stage2-start.
14954         (java.stage3): Likewise for stage3-start.
14955         (java.stage4): Likewise for stage4-start.
14956
14957 1999-06-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14958
14959         * parse.y (java_complete_lhs): When doing cross referencing, don't
14960         try to keep file location on a WFL expanded as a CALL_EXPR.
14961
14962 1999-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14963
14964         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
14965         compiling to class file a void method with an empty method body.
14966         As a side effect, the bytecode backend will generate the
14967         appropriate `return' instruction.
14968
14969 1999-06-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14970
14971         * parse.y (lookup_package_type_and_set_next): New function prototype.
14972         (resolve_package): Search current and imported packages.
14973         (lookup_package_type_and_set_next): New function.
14974
14975 1999-06-22  Andrew Haley  <aph@cygnus.com>
14976
14977         * verify.c (verify_jvm_instructions): Check for pending blocks
14978         before invalid PC test and opcode switch, not after.
14979
14980 1999-06-21  Andrew Haley  <aph@cygnus.com>
14981
14982         * except.c (find_handler_in_range): The upper limit for exception
14983         ranges is exclusive, not inclusive: (start <= pc < end).
14984         (link_handler): find child pointer which points to outer by
14985         searching sibling list: previous code incorrectly assumed that
14986         outer->outer->first_child must point to outer.
14987         * verify.c (verify_jvm_instructions): FIXME added to code for
14988         `athrow'.
14989         (verify_jvm_instructions): Do not assume that the last block
14990         processed in a subroutine is a block which ends with a `ret'
14991         instruction.  With some control flows it is possible that the last
14992         block ends with an `athrow'.
14993
14994 1999-06-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14995
14996         * parse.y (qualify_ambiguous_name): Reorganized the post
14997         evaluation of non WFL leading expression nodes.
14998
14999 1999-06-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15000
15001         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
15002         CONVERT_EXPR.
15003
15004 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15005
15006         * parse.y (qualify_ambiguous_name): Handle qualified expression
15007         beginning with a STRING_CST.
15008
15009 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15010
15011         * parse.y (register_fields): Set DECL_INITIAL on both
15012         pre-initialized static and public fields.
15013         (resolve_field_access): Static field access expressions to always
15014         use pointer types.
15015         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
15016         qualification. CONVERT_EXPR to be resolved as an expression name.
15017         (java_complete_lhs): Identify and access qualified final
15018         initialized field in switch statement case expression.
15019         (fold_constant_for_init): Pre-initialized field decl constant to
15020         be folded.
15021
15022 1999-06-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15023
15024         * parse.y (note_possible_classname): Mark returned node with
15025         QUALIFIED_P only if the original class name contained a '/'.
15026
15027 1999-06-05  Anthony Green  <green@cygnus.com>
15028
15029         * Make-lang.in (gcjh): More parallel build fixes.
15030
15031 1999-06-03  Mike Stump  <mrs@wrs.com>
15032
15033         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
15034
15035 1999-06-02  Anthony Green  <green@cygnus.com>
15036
15037         * except.c (link_handler): Chain exception handlers in order.
15038
15039 1999-06-02  Anthony Green  <green@cygnus.com>
15040
15041         * expr.c (expand_byte_code): Fill unreachable bytecode regions
15042         with nops and process as usual in order to always set correct EH
15043         ranges.  Emit detailed warnings about unreachable bytecodes.
15044
15045 1999-06-02  Anthony Green  <green@cygnus.com>
15046
15047         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
15048         constant.
15049
15050 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15051
15052         * parse.y (lookup_field_wrapper): Unified returned value to NULL
15053           or the searched field decl.
15054
15055 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15056
15057         * parse.y (fold_constant_for_init): Convert numerical constant
15058         values to the type of the assigned field.
15059
15060 1999-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15061
15062         * expr.c (lookup_field): Relaxed the test on class loading error
15063         detection.
15064         * parse.y (fold_constant_for_init): Enabeled old code.
15065
15066 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15067
15068         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
15069         decide the validity of the cast of a java.lang.Cloneable reference
15070         to an array.
15071         (patch_conditional_expr): Fixed first argument passed to
15072         binary_numeric_promotion.
15073
15074 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15075
15076         * parse.y (qualify_ambiguous_name): Take into account that a
15077         CONVERT_EXPR might specify a type as a WFL.
15078
15079 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15080
15081         * parse.y (patch_assignment): Save the rhs before using it as an
15082         argument to _Jv_CheckArrayStore.
15083
15084 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15085
15086         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
15087
15088 1999-05-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15089
15090         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
15091         floating point literal only when the exponent indicator has been
15092         parsed.
15093
15094 1999-05-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15095
15096         * parse.y (formal_parameter:): Construct argument tree list
15097         element even if a yet unsupported final parameter was encountered.
15098
15099 1999-05-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15100
15101         * parse.y (finish_method_declaration): Issue errors for native or
15102         abstract methods declared with a method body, as well as for non
15103         native or non abstract methods with no method body.
15104
15105 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15106
15107         * class.c (build_utf8_ref): Initialize variable `field'.
15108
15109         * decl.c (init_decl_processing): Initialize variable `field'.
15110
15111         * expr.c (build_known_method_ref): Mark parameters `method_type',
15112         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
15113         (process_jvm_instruction): Likewise for parameter `length'.
15114
15115         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
15116         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
15117         ATTRIBUTE_UNUSED.
15118
15119         * parse.y (maybe_generate_clinit): Remove unused variable
15120         `has_non_primitive_fields'.
15121         (find_in_imports_on_demand): Initialize variables `node_to_use'
15122         and `cl'.
15123         (patch_binop): Likewise for variable `prom_type'.
15124         (patch_unaryop): Likewise for variable `prom_type'.
15125
15126         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
15127
15128         * xref.c (xref_table): Add missing initializer.
15129
15130 1999-05-14  Tom Tromey  <tromey@cygnus.com>
15131
15132         * java-except.h (struct eh_range): Removed unused `next' member.
15133         * verify.c (verify_jvm_instructions): Call check_nested_ranges
15134         after adding all exception handlers.  Sort exception ranges in
15135         order of start PC.
15136         (struct pc_index): New structure.
15137         (start_pc_cmp): New function.
15138         * except.c (add_handler): Return `void'.  Don't call link_handler;
15139         instead construct an ordinary linked list and do range
15140         coalescing.
15141         (check_nested_ranges): New function.
15142         (link_handler): Changed interface to allow merging of eh_ranges.
15143         Split overlapping ranges.  Return `void'.
15144
15145 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15146
15147         * parse.y (constructor_block_end:): New rule, tagged <node>.
15148         (constructor_body:): Use `constructor_block_end' instead of
15149         `block_end'.
15150
15151 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15152
15153         * parse.y (statement_nsi:): Pop `for' statement block.
15154         (java_complete_lhs): Labeled blocks containing no statement are
15155         marked as completing normally.
15156
15157 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15158
15159         * xref.c (xref_set_current_fp): New function, defined.
15160         * xref.h (xref_set_current_fp): New function, prototyped.
15161
15162 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15163
15164         * check-init.c (check_init): Take into account that
15165         LABELED_BLOCK_STMT can be empty.
15166
15167 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15168
15169         * parse.y (java_check_regular_methods): Warning check on not
15170         overriding methods with default access in other packages does not
15171         apply to `<clinit>'.
15172         (java_complete_lhs): If block body is an empty_stmt_node, replace
15173         it by NULL_TREE. This prevents gcc from generating an irrelevant
15174         warning.
15175
15176 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15177
15178         * check-init.c (check_init): Removed code accepting to see things
15179         falling through default:, when doing xrefs.
15180         * java-tree.h (do_not_fold): New global variable, declared.
15181         * parse.y (do_not_fold): New global variable, defined.
15182         (java_complete_expand_method): Set `do_not_fold' to the value of
15183         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
15184         and reinstall them after them have been purged; do not check for
15185         initializations; do not issue missing return errors.
15186         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
15187         when doing xrefs.
15188         (patch_binop): Skip the fold part when doing xrefs.
15189         (build_string_concatenation): Skip the concatenation part when
15190         doing xrefs.
15191         (patch_synchronized_statement): Do not generate a try-finally when
15192         doing xrefs.
15193         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
15194         and keep the location where the throw was seen.
15195         * typeck.c (convert): When `do_not_fold' is set, do not attempt
15196         any treatment on the converted node an simply return a NOP_EXPR of
15197         the targeted type.
15198         * xref.c (xref_get_data): New function, defined.
15199         * xref.h (xref_get_data): New function, declared.
15200         (XREF_GET_DATA): Use xref_get_data.
15201
15202 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15203
15204         * gjavah.c (print_include): Cast the result of `strlen' to int
15205         when comparing against a signed value.
15206         (add_namelet): Likewise.
15207
15208 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15209
15210         * expr.c (expand_invoke): Mark parameter `nargs' with
15211         ATTRIBUTE_UNUSED.
15212         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
15213
15214         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
15215         ATTRIBUTE_UNUSED.
15216
15217         * jcf-reader.c (get_attribute): Cast a value to long
15218         when comparing against a signed expression.  Likewise.
15219
15220         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
15221         HOST_BITS_PER_CHAR.
15222
15223 1999-05-11  Andrew Haley  <aph@cygnus.com>
15224
15225         * parse.y (source_end_java_method): If the current method contains
15226         any exception handlers, force asynchronous_exceptions: this is
15227         necessary because signal handlers in libjava may throw exceptions.
15228         * decl.c (end_java_method): Ditto.
15229
15230 1999-05-11  Tom Tromey  <tromey@cygnus.com>
15231
15232         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
15233         flags.
15234         * jvspec.c (THREAD_NAME): Removed.
15235         (GC_NAME): Likewise.
15236         (MATHLIB): Likewise.
15237         (WITHLIBC): Likewise.
15238         (GCLIB): Likewise.
15239         (THREADLIB): Likewise.
15240         (MATH_LIBRARY): Likewise.
15241         (lang_specific_driver): Don't add `-l' options to command line.
15242         Instead, add a single --specs option.  Recognize `-L' options and
15243         use them to search for spec file.
15244         (find_spec_file): New function.
15245         (SPEC_FILE): New define.
15246
15247 1999-05-11  Dave Brolley  <brolley@cygnus.com>
15248
15249         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
15250         cpplib-enabled build.
15251
15252 1999-05-05  Per Bothner  <bothner@cygnus.com>
15253
15254         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
15255         temporarily zero it while calling rest_of_decl_compilation.
15256
15257         * java-tree.h (string_ptr_type_node):  Add declaration.
15258         * decl.c:  Define and initialize string_ptr_type_node.
15259         * parse.y (patch_string_cst):  Use string_ptr_type_node.
15260
15261         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
15262         * parse.y (for_statement):  Now unconditionally exit_block.
15263         (finish_labeled_statement):  No longer exit_block if for-loop.
15264         (patch_loop_statement):  Check harder if the loop is already labeled.
15265
15266         * parse.y (patch_initialized_static_field):  Removed function.
15267         (maybe_generate_clinit):  Removed special handling for interfaces.
15268         (java_complete_expand_methods):  Do a preliminary java_complete_tree
15269         on <clinit> to determine if it can be removed.
15270         (java_complete_expand_method):  Remove special handling for <clinit>.
15271         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
15272         optimize if we get back empty_stmt_node.
15273         For MODIFY_EXPR, re-do checking of static initializers.
15274         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
15275         For VAR_DECL, pass correct context.
15276
15277         * verify.c (verify_jvm_instructions):  Better error messages.
15278
15279 1999-05-03  Tom Tromey  <tromey@cygnus.com>
15280
15281         * parse-scan.y (interface_declaration): Call
15282         report_class_declaration for interfaces.
15283
15284 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
15285
15286         * Makefile.in: Remove -v from bison command lines.
15287
15288 1999-04-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15289
15290         * check-init.c (check_init): Exclude a case of error when doing
15291         xrefs.
15292         * class.c (layout_class_method): Don't generate the error message
15293         twice when compiling from source.
15294         * lang-options.h: Added `-Wredundant-modifers' and
15295         `-Wunusupported-jdk11' flags and help text.
15296         * lang.c (lang_decode_option): Added support for
15297         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
15298         flag_static_local_jdk11 and flag_redundant set accordingly.
15299         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
15300         * parse.h (EXPR_WFL_ADD_COL): New macro.
15301         (DECL_END_SOURCE_LINE): Likewise.
15302         (DECL_INHERITED_SOURCE_LINE): Likewise.
15303         * parse.y (static_ref_err): New function, prototyped.
15304         (CCB_TK): Now tagged <operator>.
15305         (class_body:): Remember the location of the closing '}' of a class
15306         definition when doing xrefs.
15307         (block:): Likewise.
15308         (block_end:): Likewise.
15309         (create_class): Remember the location of the inherited class
15310         identifier when doing xrefs.
15311         (register_fields): Added test on first operand of `init' before
15312         testing it TREE_CODE.
15313         (method_header): Store the location of the class identifier in the
15314         class decl when doing xrefs.
15315         (finish_method_declaration): Don't combine first/last method line
15316         when doing xref.
15317         (java_check_regular_methods): Warning check on not overriding
15318         methods with default access on other packages move before check on
15319         static methods. Initialization of `aflags' also moved up.
15320         (resolve_expression_name): Call static_ref_err to report the error.
15321         (static_ref_err): New function, implemented.
15322         (resolve_field_access): Returned simplified static field access
15323         when doing xrefs.
15324         (resolve_qualified_expression_name): Check for illegal use of
15325         static fields in a non static context. Call static_ref_err to
15326         report error in various places.
15327         (java_complete_tree): Do not fold initialized static fields when
15328         doing xrefs.
15329         (java_complete_lhs): Likewise.
15330
15331 1999-04-29  Anthony Green  <green@cygnus.com>
15332
15333         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
15334         create internal labels.
15335         (lookup_label): Ditto.
15336
15337 1999-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15338
15339         * class.c (layout_class_method): Generate <clinit>'s rtl for
15340         interfaces.
15341         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
15342         for interfaces' <clinit>.
15343         * expr.c (lookup_field): Search for fields in interfaces.
15344         (expand_invoke): Fixed indentation.
15345         (expand_java_field_op): Likewise. Use IS_CLINIT.
15346         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
15347         (IS_CLINIT): New macro.
15348         * parse.y (type_declaration:): Call maybe_generate_clinit after an
15349         interface was parsed.
15350         (maybe_generate_clinit): Don't generate if the current class is an
15351         interface with only fields of primitive types.
15352         (reset_method_name): Use IS_CLINIT.
15353         (java_complete_expand_method): Expand <clinit> when it exists for
15354         interfaces. Use IS_CLINIT.
15355         (resolve_expression_name): Use DECL_CONTEXT instead of
15356         current_class to build static field references.
15357         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
15358         ARRAY_REF when doing xreferencing.
15359         (check_final_assignment): Fixed typo in leading comment. Use
15360         IS_CLINIT.
15361         (patch_array_ref): Don't fully expand array references when
15362         xreferencing.
15363         (patch_return): Use IS_CLINIT.
15364         (patch_throw_statement): Likewise.
15365
15366 1999-04-22  Tom Tromey  <tromey@cygnus.com>
15367
15368         * Make-lang.in (JAVA_SRCS): Added check-init.c.
15369
15370 1999-04-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15371
15372         * decl.c (predef_filenames, predef_filenames_size): New globals
15373         (init_decl_processing): predef_filenames and predef_filenames_size
15374         initialized.
15375         * java-tree.h (predef_filenames, predef_filenames_size): Declared
15376         extern.
15377         * jcf-parse.c (predefined_filename_p): New function.
15378         (yyparse): Check that files on the command line are specified only
15379         once and issue a warning otherwise.
15380         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
15381         * parse.y (source_end_java_method): Nullify NOP method bodies, to
15382         avoid a gcc warning with -W -Wall turned on.
15383         (java_expand_classes): Abort if errors were encountered.
15384         (java_complete_lhs): If the cross reference flag is set, wrap
15385         field DECL node around a WFL when resolving expression name.
15386
15387 1999-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15388
15389         * lang.c (lang_decode_option): Fixed returned value when parsing
15390         `-fxref=...' and `-Wall'.
15391         * parse.y (source_end_java_method): Do not generate code when
15392         flag_emit_xref is set.
15393         (resolve_expression_name): Do not build static field access when
15394         flag_emit_xref is set.
15395         (resolve_field_access): No special treatment on `length' when
15396         flag_emit_xref is set. Do not build qualified static field access
15397         when flag_emit_xref is set.
15398         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
15399         when flag_emit_xref is set.
15400         (patch_assignment): Do not generate array store runtime check when
15401         flag_emit_xref is set.
15402         * xref.c (xref_flag_value): Fixed function declaration
15403         indentation.
15404         (xset_set_data): New function.
15405         * xref.h (xref_set_data): Added prototype for new function.
15406         (typedef struct xref_flag_table): New field data.
15407         (XREF_GET_DATA): New macro.
15408
15409 1999-04-19  Tom Tromey  <tromey@cygnus.com>
15410
15411         * xref.h (enum): Removed trailing comma.
15412
15413         * parse.y (resolve_qualified_expression_name): Added missing
15414         `break'.
15415
15416 1999-04-15  Anthony Green  <green@cygnus.com>
15417
15418         * gjavah.c: New prototypes for java_float_finite and
15419         java_double_finite.
15420
15421 1999-04-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15422
15423         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
15424         references.
15425
15426 1999-04-06  Jeffrey A Law  (law@cygnus.com)
15427
15428         * Makefile.in (TREE_H): Add tree-check.h.
15429         (RTL_H): Add genrtl.h.
15430
15431 1999-04-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15432
15433         * parse.y (patch_assignment): Added ArrayStoreException runtime
15434         check.
15435
15436 1999-04-06  Per Bothner  <bothner@cygnus.com>
15437
15438         * expr.c (pop_type_0):  New function.
15439         (pop_type):  Use pop_type_0.
15440         * java-tree.h (pop_type_0):  New declaration.
15441         * verify.c (verify_jvm_instructions):  Check return instructions.
15442
15443         * parse.y (patch_binop):  Don't fold if non-constant and emiting
15444         class files.
15445
15446 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15447
15448         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
15449
15450         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
15451         (main_jcf): Don't define.
15452         (process_file): Don't set `main_jcf'.
15453
15454         * java-tree.h (main_jcf): Don't declare.
15455
15456         * jcf-parse.c (main_jcf): Add static definition.
15457
15458         * lang.c (main_jcf): Don't define.
15459
15460 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15461
15462         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
15463
15464         * decl.c (copy_lang_decl): Likewise for `bcopy'.
15465
15466         * jcf-depend.c: Include "config.h", not <config.h>.
15467
15468         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
15469         `bcopy' to PTR.
15470
15471         * jcf-path.c: Include "config.h", not <config.h>.
15472
15473         * lex.c: Don't include various system header files.
15474         (java_init_lex): Cast the argument of `bzero' to PTR
15475
15476         * parse-scan.y (java_push_parser_context): Likewise.
15477
15478         * parse.y (java_push_parser_context): Likewise.
15479         (patch_bc_statement): Match format specifier to variable argument.
15480
15481         * xref.c: Don't include <stdio.h>.
15482
15483 1999-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15484
15485         * parse.y (struct parser_ctxt *ctxp): Now global.
15486         (declare_local_variables): Use WFL compound value for the
15487         declaration source line value, when doing cross-referencing.
15488
15489 1999-03-31  Tom Tromey  <tromey@cygnus.com>
15490
15491         * gjavah.c (print_field_info): Allow constants of other types.
15492         (print_include): Generate include when new name is proper prefix
15493         of already printed name.
15494         (add_namelet): Likewise.
15495         (cxx_keyword_subst): New function.
15496         (print_method_info): Use it.
15497         (print_field_name): New function.
15498         (get_field_name): New function.
15499         (print_field_info): Use get_field_name and print_field_name.
15500
15501 1999-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15502
15503         * Makefile.in (keyword.h): Generate using gperf language 'C', not
15504         'KR-C', so gperf uses the `const' keyword on strings.
15505
15506         * keyword.gperf (java_keyword): Const-ify a char*.
15507
15508 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15509
15510         * parse.y (patch_bc_statement): Fixed identation and a bogus
15511         `printf' format.
15512
15513 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15514
15515         * parse.y (patch_assignment): Allow static variables in other
15516         classes to be assigned.
15517
15518 1999-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15519
15520         * class.c (maybe_add_interface): Remove unused variable
15521         `interface_binfo'.
15522         (make_class_data): Use = for assignment, not ==.  Likewise.
15523         (emit_register_classes): Remove unused variable `decl'.
15524
15525         * lex.c: Fix comment so as not to contain an embedded `/*'.
15526
15527         * verify.c (verify_jvm_instructions): Remove unused variable
15528         `self_type'.
15529
15530 1999-03-27  Per Bothner  <bothner@cygnus.com>
15531
15532         * parse.y (complete_loop_body):  Rename to finish_loop_body.
15533         (complete_labeled_statement):  Rename to finish_labeled_statement.
15534         (complete_for_loop):  Rename to finish_for_loop.
15535         (complete_method_declaration):  Rename to finish_method_declaration.
15536
15537         * java-tree.h (continue_identifier_node):  New global node.
15538         * decl.c:  Define and initialize continue_identifier_node.
15539         * parse.y (generate_labeled_block):  Remove - no longer needed.
15540         (build_loop_body):  Use continue_identifier_node for continue block.
15541         (finish_labeled_statement):  Also do pop_labeled_block actions.
15542         (java_complete_lhs):  POP_LOOP even if error.
15543         (build_labeled_block):  Special handling for continue_identifier_node.
15544         (patch_loop_statement):  Re-organize.
15545         (patch_bc_statement):  Re-write.
15546
15547 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15548
15549         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
15550         using a WFL compound value.
15551         * parse.y (xref.h): Include.
15552         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
15553         WFL compound value.
15554         (register_fields): Set WFL compound value to lineno if doing
15555         xrefs.
15556         (java_complete_expand_method): Call expand_xref if flag_emit_xref
15557         is set.
15558         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
15559         * xref.h (expand_xref): Prototype renamed from xref_generate.
15560
15561 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15562
15563         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
15564         (GET_CURRENT_BLOCK): New macro.
15565         * parse.y (current_static_block): New global variable.
15566         (method_body:): Define action.
15567         (complete_method_declaration): Set current_function_decl to NULL
15568         when work on the current method is done.
15569         (declare_local_variables): Use GET_CURRENT_BLOCK.
15570         (java_method_add_stmt): Likewise.
15571         (java_complete_expand_method): Disable the use of `this' when
15572         expanding <clinit>.
15573         (enter_a_block): If no current method exist, use
15574         current_static_block to link static initializer blocks.
15575         (exit_block): Rewritten to use current_static_block when no current
15576         method decl exists.
15577         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
15578         (patch_return): Forbid the use of `return' in static initializers.
15579         (patch_throw_statement): Fixed indentation. Issue specific error
15580         for uncaught thrown checked exception in static initializer
15581         blocks. Removed FIXME.
15582
15583 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
15584
15585         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
15586         Link gcj from gcc.o.
15587
15588 1999-03-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15589
15590         * parse.y (find_applicable_accessible_methods_list): When dealing
15591         with interface: ensure that a given interface or java.lang.Object
15592         are searched only once.
15593
15594 1999-03-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15595
15596         * gjavah.c (print_c_decl): Remove unused argument `flags'.
15597
15598         * jcf-dump.c (print_access_flags): Add braces around if-else.
15599
15600         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
15601         COMBINE_INPUTS.
15602
15603         * lex.c (build_wfl_node): Add static prototype.
15604
15605         * lex.h (build_wfl_node): Remove static prototype.
15606
15607         * parse.y: Include lex.c early enough to declare everything needed.
15608         Ensure calls to `build_wfl_node' pass the proper arguments.
15609         (create_class): Remove unused variable `super_decl'.
15610         (get_printable_method_name): Initialize variable `name'.
15611
15612 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15613
15614         * Changelog: Fixed 1999-03-22 typos.
15615         * lang.c (lang_decode_option): Fixed typo in error string in the
15616         XARG section.
15617
15618 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15619
15620         * Makefile.in (JAVA_OBJS): Added entry xref.o.
15621         (xref.o): New rule.
15622         * java-tree.h (flag_emit_xref): Declared extern.
15623         * lang.c (xref.h): Included.
15624         (flag_emit_xref): New global variable.
15625         (lang_decode_option): Added support for -fxref.
15626         * xref.c: Created.
15627         * xref.h: Likewise.
15628
15629 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
15630
15631         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
15632         linked with.
15633
15634 1999-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15635
15636         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
15637         $(srcdir)/../system.h and $(JAVA_TREE_H).
15638         (jcf-io.o): Depend on $(JAVA_TREE_H).
15639         (mangle.o): Likewise.
15640
15641         * check-init.c (check_cond_init): Add static prototype.
15642
15643         * class.c (build_java_method_type, hashUtf8String,
15644         make_field_value, get_dispatch_vector, get_dispatch_table,
15645         append_gpp_mangled_type, mangle_static_field): Likewise.
15646         (strLengthUtf8): Hide unused definition.
15647         (hashUtf8String): Const-ify.
15648         (make_field_value): Un-ANSI-fy.
15649
15650         * constants.c: Move inclusion of jcf.h above java-tree.h.
15651         (set_constant_entry, find_class_or_string_constant,
15652         find_name_and_type_constant, get_tag_node,
15653         build_constant_data_ref): Add static prototype.
15654
15655         * decl.c (push_jvm_slot, builtin_function,
15656         lookup_name_current_level): Likewise.
15657         (builtin_function): Const-ify.
15658
15659         * except.c (expand_start_java_handler, expand_end_java_handler):
15660         Add static prototype.
15661
15662         * expr.c (flush_quick_stack, push_value, pop_value,
15663         java_stack_swap, java_stack_dup, build_java_athrow,
15664         build_java_jsr, build_java_ret, expand_java_multianewarray,
15665         expand_java_arraystore, expand_java_arrayload,
15666         expand_java_array_length, build_java_monitor, expand_java_pushc,
15667         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
15668         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
15669         expand_compare, expand_test, expand_cond, expand_java_goto,
15670         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
15671         expand_java_field_op, java_push_constant_from_pool): Likewise.
15672
15673         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
15674         (build_java_arraynull_check): Mark parameters `node' and `type'
15675         with ATTRIBUTE_UNUSED.
15676         (note_label): Likewise for parameter `current_pc'.
15677         (expand_java_call, expand_java_ret): Hide unused definition.
15678
15679         * java-tree.h (make_class, build_constants_constructor,
15680         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
15681         init_outgoing_cpool, register_class, emit_register_classes,
15682         java_layout_seen_class_methods): Prototype.
15683         (unicode_mangling_length): Const-ify.
15684         (append_gpp_mangled_name, append_gpp_mangled_classtype,
15685         emit_unicode_mangled_name, format_int, format_uint,
15686         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
15687         jcf_print_utf8_replace, open_class): Prototype.
15688
15689         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
15690         <stdio.h>.  Include tree.h/java-tree.h.
15691         (utf8_equal_string usage, process_class): Add static prototype.
15692         (open_class): Don't prototype this here.
15693         (utf8_equal_string): Match arguments to format specifiers.
15694         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
15695         TABLE_SWITCH, disassemble_method): Likewise.
15696
15697         * jcf-io.c: Include tree.h/java-tree.h.
15698         (open_class, find_classfile, jcf_print_utf8,
15699         jcf_print_utf8_replace): Const-ify.
15700
15701         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
15702         parse_class_file): Add static prototype.
15703         (find_in_current_zip): Match definition to existing static
15704         prototype.
15705
15706         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
15707         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
15708         finish_jcf_block, define_jcf_label, get_jcf_label_here,
15709         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
15710         write_chunks, adjust_typed_op, generate_bytecode_conditional,
15711         generate_bytecode_return, perform_relocations, init_jcf_state,
15712         init_jcf_method, release_jcf_state, generate_classfile):
15713         Add static prototype.
15714         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
15715         (make_class_file_name): Const-ify.
15716
15717         * jcf.h (find_classfile): Const-ify.
15718
15719         * jv-scan.c (reset_report): Remove prototype.
15720
15721         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
15722         (error): Rewrite to allow varargs.
15723
15724         * lang.c (lang_f_options): Const-ify.
15725
15726         * lex.c (java_parse_escape_sequence): Add static prototype.
15727         (java_allocate_new_line): Match definition to existing static
15728         prototype.
15729
15730         * mangle.c Include tree.h/java-tree.h.
15731         (unicode_mangling_length, emit_unicode_mangled_name,
15732         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
15733
15734         * parse.h (jdep_code): Remove trailing comma in enumeration.
15735         (java_get_line_col): Move prototype outside of !JC1_LITE test.
15736         (reset_report): Add prototype.
15737
15738         * verify.c (push_pending_label, merge_types): Add static
15739         prototypes.
15740
15741         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
15742
15743 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15744
15745         * parse.y (find_applicable_accessible_methods_list): Extend the
15746         search to superinterfaces when relevant.
15747         (search_applicable_methods_list): New function.
15748
15749 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15750
15751         * class.c (unmangle_classname): Implemented stricter testing
15752         before setting the QUALIFIED_P flag on an identifier.
15753
15754 1999-03-16  Per Bothner  <bothner@cygnus.com>
15755
15756         * parse.y (java_complete_lhs):  Call force_evaluation_order
15757         after patch_newarray.
15758         (patch_binop):  Don't call fold if there are side effects.
15759
15760 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15761
15762         * parse.y (java_stabilize_reference): Use save_expr instead of
15763         building a SAVE_EXPR node.
15764         (java_complete_lhs): Patch the resulting string of the `+='
15765         operator (if necessary) and complete the RHS after having built
15766         the cast.
15767
15768 1999-03-15  Per Bothner  <bothner@cygnus.com>
15769
15770         * class.c (make_class):  Don't set CLASS_P here (because
15771         this function is also called by build_java_array_type).
15772         (push_class):  Set CLASS_P here instead.
15773         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
15774
15775         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
15776         context.  If the context is class, perfer "super" over "synchronized".
15777         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
15778
15779         * parse.y (create_class):  Don't call parser_check_super here;
15780         it is not robust.  Always wait until later.
15781
15782         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
15783         match what JDK 1.2 does), but don't set ACC_PUBLIC.
15784
15785 1999-03-13  Per Bothner  <bothner@cygnus.com>
15786
15787         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
15788         * lex.h (UNGETC):  Change misleading macro.
15789
15790 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15791
15792         * parse.y (java_stabilize_reference): Return NODE when patching a
15793         COMPOUND_EXPR.
15794         (java_complete_lhs): Put parenthesis around truth values.
15795
15796 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15797
15798         * class.c (layout_class_method): Don't make rtl for interface
15799         methods.
15800         * parse.h (GET_TYPE_NAME): New macro.
15801         * parse.y (if_then_statement:): Fixed indentation.
15802         (if_then_else_statement:): Likewise.
15803         (for_statement:): Fixed spacing.
15804         (try_statement:): Fixed indentation.
15805         (create_interface): Don't force interfaces to be abstract.
15806         (method_header): Abstract methods are OK in interfaces.
15807         (declare_local_variables): Fixed typo in comment.
15808         (java_complete_expand_method): Fixed indentation.
15809         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
15810         non accessible fields.
15811         (java_stabilize_reference): New function.
15812         (java_complete_lhs): Fixed indentation. Use
15813         java_stabilize_reference in compound assignment. Insert the
15814         cast. If not processing `+' fix string constants before processing
15815         binop.
15816
15817 1999-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15818
15819         * constants.c (find_class_or_string_constant): Cast variable `j'
15820         to a `jword' when comparing against one.
15821
15822         * expr.c (java_lang_expand_expr): Remove unused variables
15823         `has_finally_p' and `op0'.
15824
15825         * gjavah.c (print_field_info): Cast a value to jint when comparing
15826         against one.  Likewise for a jlong.
15827         (add_namelet): Likewise cast a `sizeof' to an int when comparing
15828         against a signed quantity.
15829
15830         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
15831         (print_signature): Don't needlessly dereference variable `str'
15832
15833         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
15834         `max_locals' with ATTRIBUTE_UNUSED.
15835         (jcf_parse_class): Likewise for variable `index'.
15836
15837         * parse.h (reverse_jdep_list): Remove static prototype.
15838
15839         * parse.y (build_jump_to_finally): Remove prototype and definition.
15840         (reverse_jdep_list): Add static prototype.
15841
15842         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
15843         `assignment' and `expr_decl'.
15844
15845         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
15846
15847 1999-03-12  Andrew Haley  <aph@cygnus.com>
15848
15849         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
15850         we'll need a directory separator and a null character.
15851
15852 1999-03-10  Per Bothner  <bothner@cygnus.com>
15853
15854         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
15855
15856 Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15857
15858         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
15859         interfaces.
15860
15861 1999-03-05  Per Bothner  <bothner@cygnus.com>
15862
15863         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
15864
15865         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
15866
15867         * class.c (layout_class_method):  A static method in a base class
15868         is never overridden, so treat it like it doesn't exist.
15869         However, do complain about private non-static method overriding
15870         public static method.
15871
15872         * parse.y:  Don't set unused INITIALIZED_P flag.
15873         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
15874
15875         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
15876         (build_array_from_name):  Re-order &index[string] to &string[index].
15877
15878         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
15879         error_mark (it might catch more errors, but it is more likely to lose).
15880
15881 1999-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15882
15883         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
15884         (parse-scan.o): Depend on toplev.h.
15885
15886         * class.c (make_method_value): Add prototype.  Make it static.
15887         Remove unused second argument, caller changed.
15888
15889         * expr.c (java_lang_expand_expr): Remove unused variable
15890         `return_label'.
15891
15892         * java-tree.h: Don't prototype find_in_current_zip.
15893         Add prototypes for verify_constant_pool, start_java_method,
15894         end_java_method, give_name_to_locals, expand_byte_code,
15895         open_in_zip, set_constant_value, find_constant1, find_constant2,
15896         find_utf8_constant, find_string_constant, find_class_constant,
15897         find_fieldref_index, find_methodref_index, write_constant_pool,
15898         count_constant_pool_bytes and encode_newarray_type.
15899
15900         * jcf-dump.c: Remove unused variable `LONG_temp'.
15901
15902         * jcf-parse.c: Include parse.h.
15903         (jcf_parse_source): Remove unused parameter, all callers changed.
15904         (jcf_figure_file_type): Add static prototype.
15905         (find_in_current_zip): Likewise.  Also remove unused parameter,
15906         all callers changed.
15907         (read_class): Initialize variable `saved_pos'.
15908
15909         * jcf-reader.c (jcf_parse_preamble): Mark variables
15910         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
15911
15912         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
15913         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
15914         (java_parse_doc_section): Initialize variable `seen_star'.
15915         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
15916         (java_lex_error): Mark parameters `msg' and `forward' with
15917         ATTRIBUTE_UNUSED.
15918         (java_get_line_col): Mark parameters `filename' and `line' with
15919         ATTRIBUTE_UNUSED.
15920
15921         * parse-scan.y: Include toplev.h.
15922         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
15923
15924         * parse.h: use `struct JCF', not plain `JCF'.
15925         (java_parser_context_save_global, java_expand_classes
15926         java_parser_context_restore_global, java_parse): Add prototypes.
15927
15928         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
15929         `node'.
15930
15931 1999-02-24  Per Bothner  <bothner@deneb.cygnus.com>
15932
15933         *  check-init.c (check_init):  COPYN takes word count, not bit count.
15934
15935 1999-02-26  Per Bothner  <bothner@cygnus.com>
15936
15937         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
15938         explicit build_decl.  (Avoids crash in reload when optimizing.)
15939
15940 1999-02-25  Per Bothner  <bothner@cygnus.com>
15941
15942         * decl.c (complete_start_java_method):  Handle synchronized method
15943         even when compiling from bytecode.
15944
15945 1999-02-26  Tom Tromey  <tromey@cygnus.com>
15946
15947         * gjavah.c (add_class_decl): Only generate `#include' if outer
15948         class is not the name of the class we are processing.  Correctly
15949         append `.h' in #include.
15950         (process_file): Clean up newlines around generated `#include's.
15951         (decode_signature_piece): Correctly handle inner classes.
15952         (struct include): New structure.
15953         (all_includes): New global.
15954         (print_include): New function.
15955         (add_class_decl): Use it.
15956         (process_file): Likewise.
15957         (add_class_decl): Generate include for java-array.h if array
15958         seen.
15959         (process_file): Don't generate java-array.h include.
15960
15961         * gjavah.c (add_namelet): Check for standard package names here.
15962         (add_class_decl): Don't check for standard package names here.
15963
15964 1999-02-25  Tom Tromey  <tromey@cygnus.com>
15965
15966         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
15967         When reading a zip file, only use strncmp if both strings are
15968         bigger than the buffer length.  Initialize `k' when looping
15969         through zip file.
15970
15971 1999-02-24  Tom Tromey  <tromey@cygnus.com>
15972
15973         * gjavah.c (struct namelet): New structure.
15974         (add_namelet): New function.
15975         (print_namelet): New function.
15976         (print_class_decls): Use add_namelet and print_namelet to generate
15977         namespaces and not classes.
15978         (method_printed): New global.
15979         (HANDLE_END_METHOD): Examine method_printed.
15980         (print_method_info): Set method_printed when required.  Print
15981         error if function to be ignored is marked virtual.  Handle $finit$
15982         method.
15983         (METHOD_IS_FINAL): New macro.
15984         (print_field_info): Use it.
15985         (HANDLE_METHOD): Clear method_printed.
15986         (method_pass): New global.
15987         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
15988         (process_file): Do two passes over both fields and methods.
15989         (HANDLE_METHOD): Examine method_pass.
15990         (root): New global.
15991         (add_class_decl): New function.
15992         (print_class_decls): Don't scan over entire constant pool.
15993
15994 1999-02-23  Tom Tromey  <tromey@cygnus.com>
15995
15996         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
15997         disable linking in that case.
15998
15999 1999-02-20  Tom Tromey  <tromey@cygnus.com>
16000
16001         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
16002         not 0x1f.
16003
16004 1999-02-21  Per Bothner  <bothner@cygnus.com>
16005
16006         * decl.c (build_result_decl), java-tree.h:  New method.
16007         (complete_start_java_method):  Handle synchronized methods.
16008         Don't build DECL_RESULT here.  (Ordering dependency problem.)
16009         (start_java_method):  Call build_result_decl here instead  ...
16010         * parse.y (java_complete_expand_method):  ... and here.
16011         (expand_start_java_method): Don't call complete_start_java_method here.
16012         (java_complete_expand_method):  Call it here instead.
16013         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
16014         * java-tree.h:  ... here.
16015
16016         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
16017         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
16018         for ARRAY_REF - it doesn't work when array bounds are checked.
16019         (patch_array_ref):  Handle it here instead.
16020
16021         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
16022
16023 1999-02-19  Per Bothner  <bothner@cygnus.com>
16024
16025         Force left-to-right evaluation of binary operations etc.
16026         * expr.c (force_evaluation_order), java-tree.h:  New function.
16027         * parse.y (java_complete_lhs):  Pass binary operations, procedure
16028         calls, and ARRAY_REFs to force_evaluation_order.
16029         (various):  Set TREE_SIDE_EFFECTS more carefully.
16030
16031         Tolerate random (non-UTF8) encoding in comments without complaining.
16032         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
16033         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
16034
16035         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
16036         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
16037
16038         * parse.y (java_complete_lhs):  Ignore an empty statement in a
16039         COMPOUND_EXPR.  Don't complain about empty statement after return.
16040
16041 1999-02-19  Per Bothner  <bothner@cygnus.com>
16042
16043         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
16044         in TREE_LIST - just chain the POINTER_TYPEs together.
16045         (resolve_class):  If type already resolved, return decl.
16046         After resolving, update TREE_TYPE(class_type), and name (if array).
16047         * parse.h (do_resolve_class), parse.y:  Make non-static.
16048         * class.c (maybe_layout_super_class):  Take this_class argument.
16049         Do do_resolve_class if necessary.
16050         (layout_class, layout_class_methods): Adjust calls appropriately.
16051         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
16052         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
16053         * typeck.c (build_java_array_type):  Don't call layout_class.
16054
16055 1999-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16056
16057         * parse.y (check_pkg_class_access): Allow private class access
16058         within the same package.
16059         (strip_out_static_field_access_decl): New function.
16060         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
16061         operator argument before testing its nature.
16062
16063 1999-02-03  Per Bothner  <bothner@cygnus.com>
16064
16065         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
16066         (TRY_EXPR):  Simplify - it no longer has a finally clause.
16067         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
16068         Simpler handling of TRY_EXPR, which no longer has a finally clause.
16069         * expr.c (java_lang_expand_expr):  Likewise.
16070         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
16071         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
16072         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
16073         (build_try_statement):  Remove finally parameter and handling.
16074         (build_try_finally_statement):  New function.
16075         (patch_try_statement):   No longer need to support finally clause.
16076         (try_statement):  Update grammar action rules.
16077         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
16078         Simpler handling of TRY_EXPR, which no longer has a finally clause.
16079
16080 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
16081
16082         * jcf-parse.c (get_constant): Add braces around computation of 'd'
16083         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
16084
16085 1999-02-17  Andrew Haley  <aph@cygnus.com>
16086
16087         * class.c (build_utf8_ref): Back out broken patch which was
16088         intended to to output signatures using '.' as a separator.
16089
16090         * class.c (make_class_data): Output signatures using '.' as a
16091         separator, rather than '/'.
16092         (mangled_classname): Likewise.
16093         (make_field_value): Likewise.
16094         (make_method_value): Likewise.
16095         * constants.c (alloc_class_constant): Likewise.
16096         * expr.c (build_invokeinterface): Likewise.
16097
16098 1999-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16099
16100         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
16101         of an ancient workaround.
16102
16103 1999-02-10  Jeffrey A Law  (law@cygnus.com)
16104
16105         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
16106         here anymore.
16107
16108 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16109
16110         * lex.c (yylex): Encode \0 as UTF8.
16111
16112 1999-02-10  Tom Tromey  <tromey@cygnus.com>
16113
16114         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
16115         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
16116         (libgcj_zip): Renamed.
16117         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
16118         LIBJAVA_ZIP_FILE.
16119         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
16120
16121         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
16122         (GC_NAME): Renamed -lgc to -lgcjgc.
16123
16124 1999-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16125
16126         * lex.c (java_lang_cloneable): Initialize.
16127         * parse.y (java_lang_cloneable): New static variable.
16128         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
16129         doing one more qualification round.
16130         (valid_ref_assignconv_cast_p): Reject null source or
16131         destination. Allow an array to be cast into java.lang.Cloneable.
16132         (patch_cast): Swapped two first arguments to first call to
16133         valid_ref_assignconv_cast_p.
16134
16135 1999-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16136
16137         * parse.h: DECL_P renamed JDECL_P.
16138         * parse.y: DECL_P replaced by JDECL_P.
16139         (build_array_from_name): Always use pointer's type.
16140         (patch_bc_statement): Extra code to search continue target in a
16141         for loop. Fixed comments. Continue target is current loop when
16142         unlabeled.
16143
16144 1999-02-05  Andrew Haley  <aph@cygnus.com>
16145
16146         * class.c (make_class_data): The superclass of an interface should
16147         be null, not class Object.
16148
16149         * lex.c (java_lex): Sign extend hex literals.
16150
16151 1999-02-04  Andrew Haley  <aph@cygnus.com>
16152
16153         * class.c (build_utf8_ref): Output signatures using '.' as a
16154         separator, rather than '/'.
16155         (make_class_data): Likewise.
16156
16157 1999-02-03  Marc Espie <Marc.Espie@liafa.jussieu.fr>
16158
16159         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
16160         mkstemp.o.  Get them from libiberty now.
16161
16162 1999-02-02  Jeffrey A Law  (law@cygnus.com)
16163
16164         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
16165
16166 1999-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16167
16168         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
16169         from libiberty.h
16170
16171 1999-02-02  Per Bothner  <bothner@cygnus.com>
16172
16173         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
16174         * jcf-write.c (generate_bytecode_return):  New function.
16175         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
16176
16177         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
16178         generate special [fd]const_[01] instructions.
16179
16180         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
16181
16182         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
16183         handling OPCODE_lookupswitch or OPCODE_tableswitch.
16184
16185 1999-02-01  Per Bothner  <bothner@cygnus.com>
16186
16187         * parse.y (patch_method_invocation):  Handle calling static methods,
16188         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
16189
16190         * parse.y (java_complete_lhs):  Don't complain about unreachable
16191         exit condition in a do-while statement.
16192
16193 1999-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16194
16195         * lex.c (java_read_char): Fixed utf8 decoding.
16196         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
16197         range.
16198         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
16199         comments. Local variable `all_primitive' is gone. Broadened
16200         acceptance of `0' to floating point targets. `long' can now be
16201         widened to `double' or `float'.
16202         (valid_method_invocation_conversion_p): Added leading
16203         comment. Fixed tabulation.
16204         (build_string_concatenation): Optimize out left or right empty
16205         string constants.
16206
16207 1999-01-28  Per Bothner  <bothner@cygnus.com>
16208
16209         * jcf-write.c (localvar_alloc):  Only emit entry for
16210         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
16211         (generate_bytecode_insns):  Only call put_linenumber if
16212         debug_info_level > DINFO_LEVEL_NONE.
16213         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
16214         is specified, add -g1 (for compatibility wih javac).
16215
16216 1999-01-28  Hans-Peter Nilsson  <hp@axis.se>
16217
16218         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
16219         gjavah.o, check-init.o, jv-scan.o
16220
16221 1999-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16222
16223         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
16224
16225         * gjavah.c: Include config.h and system.h.
16226
16227         * javaop.h (inline): Don't define, its handled by system.h.
16228         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
16229         from `inline' to `static inline'.
16230
16231         * jcf.h (inline): Don't define, its handled by system.h.
16232
16233         * lex.c (inline): Likewise.
16234
16235 1999-01-31  Zack Weinberg  <zack@rabi.columbia.edu>
16236
16237         * lang-specs.h: Map -Qn to -fno-ident.
16238
16239 1999-01-29  Richard Henderson  <rth@cygnus.com>
16240
16241         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
16242
16243 1999-01-29  Tom Tromey  <tromey@cygnus.com>
16244
16245         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
16246         then cast it to Object before calling `append' method.
16247
16248 1999-01-28  Per Bothner  <bothner@cygnus.com>
16249
16250         * check-init.c (check_bool2_init, check_bool_init, check_init):
16251         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
16252         * jcf-write.c (generate_bytecode_insns):  Likewise.
16253
16254 1999-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16255
16256         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
16257         * parse.y (patch_cast): Allow a boolean to be cast into a
16258         boolean.
16259
16260 1999-01-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16261
16262         * parse.y: (class_declaration:): Fixed indentation.
16263         (class_member_declaration:): Extra `;' after field declaration now
16264         accepted.
16265         (interface_declaration:): Removed debug messages in error reports.
16266         (patch_binop): Nodes created and returned inherit the orignal
16267         node's COMPOUND_ASSIGN_P flag value.
16268         (patch_cast): Fix cast from char to floating point.
16269
16270 1999-01-25  Andrew Haley  <aph@cygnus.com>
16271
16272         * except.c, java-except.h (expand_resume_after_catch): new
16273         function.
16274         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
16275         to branch back to main flow of control after a catch block.
16276
16277 1999-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16278
16279         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
16280         $(srcdir)/../system.h.
16281         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
16282         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
16283         (jcf-write.o): Likewise.
16284         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
16285         (mangle.o): Depend on $(srcdir)/../toplev.h.
16286         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
16287         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
16288
16289         * class.c: Include output.h and parse.h.
16290         (mangled_classname): Add the `const' keyword to a char*.
16291         (find_named_method): Hide unused function definition.
16292         (build_utf8_ref): Change type of variable `c' to unsigned char.
16293         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
16294         (build_class_ref): Add the `const' keyword to a char*.
16295         (layout_class_method): Remove unused variable `buf'.
16296
16297         * decl.c (find_local_variable): Remove unused variable `rtl'.
16298         (pushdecl): Likewise for variables `different_binding_level' and
16299         `oldglobal'.
16300         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
16301         (maybe_build_cleanup): Likewise for parameter `decl'.
16302
16303         * except.c (expand_start_java_handler): Mark parameter `range'
16304         with ATTRIBUTE_UNUSED.
16305
16306         * expr.c: Include except.h.
16307         (pop_type): Remove unused variable `i'.
16308         (pop_value): Likewise for variables `n_words' and `i'.
16309         (expand_java_arrayload): Likewise for variable `convert'.
16310         (java_lang_expand_expr): Likewise for variables `op0', `type',
16311         `mode', `unsignedp', `node' and `elements'.
16312         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
16313         `eh_ranges'.
16314         (process_jvm_instruction): Add a `const' qualifier to a char*.
16315
16316         * gjavah.c (output_directory): Add the `const' keyword to a char*.
16317         (temp_directory): Likewise.
16318         (print_c_decl): Likewise.
16319         (print_method_info): Likewise.
16320         (decode_signature_piece): Likewise.
16321         (print_mangled_classname): Likewise.
16322
16323         * java-except.h: Provide prototypes for maybe_start_try,
16324         maybe_end_try and add_handler.
16325
16326         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
16327         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
16328         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
16329         init_expr_processing, push_super_field, init_class_processing,
16330         can_widen_reference_to, class_depth, verify_jvm_instructions,
16331         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
16332         set_local_type, merge_type_state, push_type, load_type_state,
16333         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
16334         emit_unicode_mangled_name): Add prototypes.
16335
16336         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
16337         (print_signature_type): Use ISDIGIT, not isdigit.
16338         (print_signature): Remove unused variable `j'.
16339
16340         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
16341         int when comparing against one.
16342
16343         * jcf-parse.c: Include toplev.h.
16344
16345         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
16346         (localvar_free): Remove unused variable `i'.
16347         (generate_bytecode_conditional): Likewise for variable `kind'.
16348
16349         * jv-scan.c: Include config.h and system.h.  Remove redundant
16350         OS header and gansidecl.h includes.
16351         (warning): Add the `const' keyword to a char*.  Also add
16352         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
16353         __STDC__, when determining whether to use ANSI-isms.
16354         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
16355         (xmalloc): Don't redundantly prototype here.
16356         (main): Remove unused parameter `envp'.  Also fix the arguments
16357         passed to function `fatal' to match the format specifier.
16358
16359         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
16360
16361         * mangle.c: Include toplev.h.
16362         (emit_unicode_mangled_name): Declare parameter `len'.
16363
16364         * parse.y (parse_warning_context): Add the `const' keyword to a
16365         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
16366         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
16367         (issue_warning_error_from_context): Add the `const' keyword to
16368         a char*.
16369         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
16370         not `__STDC__' for whether to use ANSI-isms.
16371
16372         * typeck.c (incomplete_type_error): Mark parameters `value' and
16373         `type' with ATTRIBUTE_UNUSED.
16374         (parse_signature_type): Use ISDIGIT, not isdigit.
16375
16376         * verify.c (check_pending_block): Add the `const' keyword to a char*.
16377         (verify_jvm_instructions): Likewise.  Remove unused variables
16378         `field_name' and `default_val'.
16379
16380         * zextract.c: Include config.h and system.h.  Remove redundant
16381         OS header includes.
16382
16383         * zipfile.h: Prototype `read_zip_archive'.
16384
16385 1999-01-21  Andrew Haley  <aph@cygnus.com>
16386
16387         * typeck.c (convert): Allow conversions to void type: some
16388         optimizations in gcc do this.
16389
16390 1999-01-21  Andrew Haley  <aph@cygnus.com>
16391
16392         * typeck.c (convert_ieee_real_to_integer): New function.
16393         (convert): When not using fast-math and using hardware fp, convert
16394         an IEEE NaN to zero.
16395
16396 1999-01-18  Andrew Haley  <aph@cygnus.com>
16397
16398         * parse.y (patch_binop): Do a type conversion from signed to
16399         unsigned and then back to signed when a ">>>" is found.
16400
16401 1999-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16402
16403         * java-tree.h: (check_for_initialization): Added prototype.
16404         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
16405         * parse.y (do_resolve_class): Removed unused locals.
16406         (read_import_dir): Likewise.
16407         (resolve_qualified_expression_name): Array creation
16408         expressions are valid primary expressions.
16409         (qualify_ambiguous_name): Likewise.
16410         (patch_synchronized_statement): Removed unused local.
16411
16412 1999-01-17  Jeffrey A Law  (law@cygnus.com)
16413
16414         * Makefile.in (zextract.o): Add dependencies.
16415
16416         * Makefile.in: Do not put ^Ls at the start of a line.
16417
16418 1999-01-15  Per Bothner  <bothner@cygnus.com>
16419
16420         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
16421         sub-type the result of the call that gets the exception value.
16422
16423         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
16424         don't call finish_class.
16425
16426         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
16427         clear found before continuing.
16428
16429         * verify.c (verify_jvm_instructions):  On an array load, allow
16430         and handle top of stack to be TYPE_NULL.
16431
16432         * gjavah.c (generate_access):  Translate Java package private or
16433         protected access to C++ public, but with a comment.
16434
16435 1999-01-13  Andrew Haley  <aph@cygnus.com>
16436
16437         * expr.c (generate_name): Name prefix changed to avoid clashes
16438         with assembler temp labels.
16439
16440         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
16441         MODIFY_EXPR.  Without this, code for the assignment may not be
16442         generated at all and the synchronized statement will read an
16443         uninitialized variable.
16444
16445 1999-01-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16446
16447         * class.c (maybe_layout_super_class): Fixed returned value.
16448         * lex.c: Added 1999 to the copyright.
16449         (java_init_lex): Initialize java_lang_imported.
16450         * lex.h: Added 1999 to the copyright.
16451         * parse.h: Added 1999 to the copyright.
16452         (REGISTER_IMPORT): Fixed typo in trailing macro.
16453         (CURRENT_OSB): New macro.
16454         (struct parser_ctxt): New fields osb_depth, osb_limit.
16455         * parse.y (java_lang_id): New global variable.
16456         (type_import_on_demand_declaration): Don't import java.lang.* twice.
16457         (array_creation_expression:): Use CURRENT_OSB.
16458         (dims:): Uses a stack to keep track of array dimensions.
16459         (cast_expression:): Use CURRENT_OSB.
16460         (find_expr_with_wfl): Return NULL if node found doesn't meet the
16461         conditions.
16462         (register_fields): Fixed typos in comment.
16463         (check_method_redefinition): Fixed comment indentation.
16464         (java_check_regular_methods): Set saved found wfl to NULL after
16465         having reinstalled it in the previously found DECL_NAME.
16466
16467 1999-01-10  Richard Henderson  <rth@cygnus.com>
16468
16469         * gjavah.c (java_float_finite): Use a union to do type punning.
16470         (java_double_finite): Likewise.
16471
16472 1999-01-09  Per Bothner  <bothner@cygnus.com>
16473
16474         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
16475         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
16476         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
16477         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
16478         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
16479         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
16480
16481 1999-01-08  Per Bothner  <bothner@cygnus.com>
16482
16483         * check-init.c (check_init):  If compiling to native, we don't
16484         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
16485
16486 1999-01-08  Tom Tromey  <tromey@cygnus.com>
16487
16488         * parse-scan.y (variable_declarator_id): Set or increment
16489         bracket_count.
16490         (bracket_count): New global.
16491         (formal_parameter): Handle case where bracket pairs trail variable
16492         declarator id.
16493
16494 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
16495
16496         * jcf-parse.c (yyparse): variable len changed from a char to an
16497         int to prevent overflow.
16498
16499 1999-01-06  Per Bothner  <bothner@cygnus.com>
16500
16501         * java-tree.h:  Declare read_class.
16502         * jcf-parse.c (read_class):  New function.
16503         (load_class):  Now just call read_class.
16504
16505         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
16506         * jcf-parse.c (parse_source_file):  Declare save_error_count,
16507         which is needed by java_parse_abort_on_error macro,
16508         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
16509
16510         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
16511         constructor, if initializing a static field.
16512         (patch_new_array_init):  Set TREE_CONSTANT if it is.
16513         * expr.c (java_lang_expand_expr):  For a static array constructor
16514         of primitive elements, allocate the array itself statically.
16515         Disabled until we can set the vtable field statically.
16516
16517         * check-init.c:  New file.  Checks for definite assignment.
16518         * Makefile.in (JAVA_OBJS):  Add check-init.o.
16519         * parse.y (java_complete_expand_method): Call check_for_initialization.
16520         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
16521
16522 1999-01-06  Graham <grahams@rcp.co.uk>
16523
16524         * parse.y : include system.h instead of including
16525         standard headers directly with the exception of <dirent.h>.
16526
16527 1999-01-06  Per Bothner  <bothner@cygnus.com>
16528
16529         * lex.h:  Moved static function declarations to lex.c,
16530         to shut up some -Wall warnings.
16531         * lex.c:  Static function declarations moved here.
16532         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
16533
16534 1999-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16535
16536         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
16537
16538 1998-12-22  Per Bothner  <bothner@cygnus.com>
16539
16540         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
16541         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
16542
16543         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
16544         (localvar_alloc):  Change return type to void,
16545         (emit_unop):  Remove unused variable size.
16546
16547         * jcf-write.c (struct jcf_block):  Add new union.
16548         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
16549         (call_cleanups):  New functions.
16550         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
16551         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
16552         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
16553         * lang.c (lang_init):  Call using_eh_for_cleanups.
16554         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
16555         completing operands to patch_synchronized_statement.
16556         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
16557         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
16558         WITH_CLEANUP_EXPR instead of TRY_EXPR.
16559
16560 1998-12-20  John F. Carr  <jfc@mit.edu>
16561
16562         * Make-lang.in: Comment out control-Ls; they upset some makes.
16563
16564 1998-12-18  Tom Tromey  <tromey@cygnus.com>
16565
16566         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
16567         consistently.
16568
16569 1998-12-17  Tom Tromey  <tromey@cygnus.com>
16570
16571         * parse.y (DIR_SEPARATOR): New define.
16572         (check_class_interface_creation): Use it.
16573
16574         * parse-scan.y (report_main_declaration): Recognize
16575         `java.lang.String' in argument to main.
16576
16577 1998-12-16  Per Bothner  <bothner@cygnus.com>
16578
16579         * parse.y (create_interface):  Remove bogus test.
16580
16581 1998-12-16  Per Bothner  <bothner@cygnus.com>
16582
16583         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
16584         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
16585
16586 1998-12-16  Tom Tromey  <tromey@cygnus.com>
16587
16588         * parse-scan.y (qualified_name): Use correct sprintf format.
16589
16590 1998-12-15  Tom Tromey  <tromey@cygnus.com>
16591
16592         * gjavah.c (print_field_info): Changed how most negative number is
16593         printed.
16594
16595 1998-12-14  Per Bothner  <bothner@cygnus.com>
16596
16597         * parse.y (fold_constant_for_init):  New function.
16598         (resolve_expression_name):  Don't replace static final
16599         constant-initialized fields by its value.
16600         (java_complete_lhs):  New.  Same as java_complete_tree, except does
16601         not replace static final constant-initialized fields by their values.
16602         (register_fields):  If there is an initializer, set DECL_INITIAL and
16603         MODIFY_EXPR_FROM_INITIALIZATION_P.
16604         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
16605         Only call patch_initialized_static_field if
16606         MODIFY_EXPR_FROM_INITIALIZATION_P.
16607         (patch_initialized_static_field):  If not valid constant, clear
16608         DECL_INITIAL.
16609
16610         * parse.y (lookup_field_wrapper):  Fix thinko.
16611
16612         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
16613         set and restore global lineno.
16614
16615 1998-12-14  Tom Tromey  <tromey@cygnus.com>
16616
16617         * gjavah.c (print_field_info): If value to print is the smallest
16618         value of its size, then print as hex to avoid later warnings from
16619         C++ compiler.
16620
16621 1998-12-14  Tom Tromey  <tromey@cygnus.com>
16622
16623         * gjavah.c (decompile_method): Decompile `return null'.
16624         (process_file): Generate `#pragma interface'.
16625         (method_declared): New global.
16626         (print_method_info): Set it.
16627         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
16628         (print_method_info): Handle abstract methods.
16629
16630 1998-12-13  Per Bothner  <bothner@cygnus.com>
16631
16632         * parse.y (patch_method_invocation):  If class_decl is null
16633         (e.g. an array type), use original type.
16634
16635         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
16636         errors about uncaught exception from clone (of array, specifically).
16637
16638 1998-12-13  Tom Tromey  <tromey@cygnus.com>
16639
16640         * gjavah.c (decompile_method): Handle all types of `return'
16641         opcode.  Decompile `return this' and `return'.
16642         (method_access): New global.
16643         (print_method_info): Set it.
16644         (decompile_method): Don't decompile a synchronized method.
16645
16646 1998-12-13  Tom Tromey  <tromey@cygnus.com>
16647
16648         * jcf-reader.c (jcf_parse_one_method): Recognize
16649         HANDLE_END_METHOD.
16650         * gjavah.c (HANDLE_END_METHOD): New macro.
16651         (HANDLE_CODE_ATTRIBUTE): New macro.
16652         (decompile_method): New function.
16653         (print_method_info): Don't print `;\n' at end of function decl.
16654         Include java-opcodes.h.
16655         (decompiled): New global.
16656
16657 1998-12-12  Per Bothner  <bothner@cygnus.com>
16658
16659         * class.c (build_class_ref):  Handle PRIMTYPE.class if
16660         flag_emit_class_files.
16661         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
16662         if flag_emit_class_files.
16663         * parse.y (java_complete_tree):  Pre-liminary support for
16664         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
16665
16666         * parse.y (patch_synchronized_statement):   Don't call monitorexit
16667         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
16668
16669         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
16670
16671         * zipfile.h (opendir_in_zip):  New declaration.
16672         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
16673         (opendir_in_zip):  New function, using code from open_in_zip.
16674         (open_in_zip):  Call opendir_in_zip.
16675         (find_class):  Remove no-longer-used do_class_file parameter,
16676         but add source_ok parameter.  Change logic so if we find a .java file,
16677         we don't look for .class in later classpath emtries.
16678         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
16679         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
16680         * gjavah.c: Update call to find_class.
16681         * jcf-dump.c:  Likewise.
16682
16683         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
16684         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
16685         nothing if body is empty_stmt_node.
16686         Various little fixes so SP gets correctly adjusted.
16687         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
16688         For CALL_EXPR, test if static first.
16689         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
16690         such as the ones we create for Object and Class.
16691         Set and restore current_function_decl.
16692         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
16693         (note_possible_classname):  New function.
16694         (read_import_entry):  Removed.  Merged with read_import_dir.
16695         (read_import_dir):  Don't call find_class - that only gives us
16696         the first classpath entry having the needed package.
16697         Use the struct buffer data structure from buffer.h.
16698         (read_import_dir, find_in_imports_on_demand):  The remembered
16699         class names now use '.' (not '/') as package separator.
16700
16701         * parse.y (java_complete_expand_methods):  Call write_classfile
16702         here, and not in java_expand_classes (which only gets first class).
16703
16704 1998-12-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16705
16706         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
16707         (register_fields):  If a static fields has an initializer, just
16708         chain it on ctxp->static_initialized, and handle later.
16709         (java_complete_expand_methods):  Force <clinit> first.
16710         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
16711         - it's already been completed.
16712         (patch_initialized_static_field):  New function.
16713         (java_complete_field):  Call it.
16714
16715 1998-12-12  Per Bothner  <bothner@cygnus.com>
16716
16717         * expr.c (encode_newarray_type, build_new_array):  New functions.
16718         * java-tree.h:  Declare build_new_array.
16719         * jcf-write.c (patch_newarray):  Use build_new_array.
16720
16721         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
16722         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
16723
16724         * parse.y (patch_new_array_init):  Re-organize.
16725         Now is passed the actual array (pointer) type of the value.
16726         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
16727         (patch_array_constructor):  Removed - merged into patch_new_array_init.
16728         (java_complete_tree):  Update patch_new_array_init.
16729
16730         * jcf-write.c (find_constant_index):  New function.
16731         (generate_bytecode_insns):  Use find_constant_index.
16732         (generate_classfile):  Use find_constant_index for ConstantValue.
16733
16734 1998-12-11  Tom Tromey  <tromey@cygnus.com>
16735
16736         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
16737         * decl.c (init_decl_processing): Renamed dtable -> vtable.
16738         * class.c (make_class_data): Renamed dtable -> vtable, and
16739         dtable_method_count -> vtable_method_count.
16740
16741 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16742
16743         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
16744         global variables, initialized.
16745         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
16746         Declared new global variables.
16747         * lex.c (java_lex): Return long_zero_node, float_zero_node,
16748         double_zero_node, integer_zero_node upon direct matching.
16749         * parse.y (purify_type_name): Added function prototype.
16750         (duplicate_declaration_error_p): Consider new_type as potentially
16751         being a incomplete type. Use purify_type_name on type string.
16752         (method_header): saved_type: unused variable removed. Don't figure
16753         return type if method name is invalid.
16754         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
16755         processed by patch_unaryop.
16756         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
16757         increment/decrement node into its original type after binary
16758         numeric promotion on its operands.
16759
16760 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16761
16762         * parse.y (array_initializer:): Array init operand is NULL_TREE
16763         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
16764         now an error. Fixed indentation problems.
16765         (patch_string): Handle error_mark_node as an argument.
16766         (patch_new_array_init): Fixed indentation problems.
16767         (array_constructor_check_entry): Removed check on null wfl_value.
16768         Return an error if wfl_value's walk returns an error.
16769
16770 1998-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16771
16772         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
16773         * lex.c (java_lex): Remember column position before advancing one
16774         token. Retain location information on OCB_TK.
16775         * lex.h (typedef struct java_lc): Added new field.
16776         * parse.h (GET_SKIP_TYPE): New macro.
16777         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
16778         * parse.y (build_new_array_init, patch_new_array_init,
16779         patch_array_constructor, maybe_build_array_element_wfl,
16780         array_constructor_check_entry): New function prototypes.
16781         (switch_block:): Tagged <node>.
16782         (OCB_TK): Tagged <operator>.
16783         (array_initializer:): Installed actions.
16784         (variable_initializer): Build location information on element if
16785         necessary.
16786         (switch_statement:): Fixed indentation typo.
16787         (switch_block:): Redefined default action.
16788         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
16789         (patch_assignment): Removed duplicate code.
16790         (maybe_build_array_element_wfl, build_new_array_init,
16791         patch_new_array_init, patch_array_constructor,
16792         array_constructor_check_entry): New functions.
16793
16794 1998-12-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16795
16796         * parse.y (array_initializer): Tagged <node>.
16797         (variable_initializer:): Use default rule.
16798         (array_initializer:): Defined actions.
16799         (variable_initializers:): Likewise.
16800         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
16801         non-static field accesses.
16802         (patch_invoke): Fixed indentation typo.
16803         (java_complete_tree): Likewise.
16804         (build_labeled_block): Changed leading comment. Generate an error
16805         in case of duplicate loop labels.
16806         (patch_conditional_expr): Patch results of string concatenation
16807         operations.
16808
16809 1998-12-06  Per Bothner  <bothner@cygnus.com>
16810
16811         * constants.c (find_methodref_index):  When the class is an interface,
16812         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
16813
16814         * decl.c (finit_identifier_node):  Use "$finit$", rather than
16815         "<finit>" (which Sun's verifier rejects).
16816         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
16817         (generate_field_initialization_code):  Removed.
16818         (fix_constructors)  Don't add call to $finit$ here (wrong order).
16819         (patch_method_invocation):  Add $finit$ call here.
16820
16821         * java-tree.h (CALL_USING_SUPER):  New macro.
16822         * parse.y (patch_invoke):  Remove im local variable.
16823         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
16824         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
16825         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
16826
16827         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
16828
16829         * parse.y (java_complete_tree):  Don't complain about unreachable
16830         statement if it is empty_stmt_node.
16831
16832         * jcf-write.c (find_constant_wide):  New function.
16833         (push_long_const):  Use find_constant_wide.
16834
16835         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
16836         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
16837         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
16838         Emit invokeinterface when calling an interface method.
16839         Emit invokespecial also when calling super or private methods.
16840
16841         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
16842
16843 1998-12-06  Per Bothner  <bothner@cygnus.com>
16844
16845         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
16846
16847 1998-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16848
16849         * java-tree.h (java_layout_seen_class_methods): New function
16850         prototype.
16851         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
16852         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
16853         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
16854         * parse.y (method_declarator:): Defined action.
16855         (issue_warning_error_from_context): input_filename saved, set to
16856         the appropriate value and restored after java_error is called.
16857         (build_unresolved_array_type): Fixed comment.
16858         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
16859         (method_header): Deal with return type the same way type are
16860         handled for fields and method's parameters and local variables
16861         types are handled.
16862         (check_method_redefinition): Removed extra CR.
16863         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
16864         (java_layout_seen_class_methods): New function.
16865         (java_layout_classes): Call java_layout_seen_class_methods.
16866
16867 1998-12-03  Per Bothner  <bothner@cygnus.com>
16868
16869         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
16870
16871 1998-12-03  Per Bothner  <bothner@cygnus.com>
16872
16873         * jcf-dump.c (main):  Fix error message.
16874         * jcf-path.c (add_entry):  Style fix.
16875
16876 1998-12-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16877
16878         * class.c (layout_class_method): Call build_java_argument_signature
16879         on constructors too.
16880         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
16881         (patch_method_invocation): Define a primary when resolving an
16882         expression name. Augmented comment on code checking illegal `this'
16883         usage. Loosened it test by accepting NEW_CLASS_EXPR.
16884
16885 1998-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16886
16887         * class.c (layout_class_method): Don't report error on non-static
16888         overriding static if the method is private.
16889         * java-tree.h (finish_class): Prototype added.
16890         * lex.c (java_get_line_col): Handle col argument -2 value.
16891         * parse.h: All static method declarations moved to parse.y.
16892         * parse.y: Now contains all static method declarations previously
16893         found in parse.h.
16894         (find_expr_with_wfl, missing_return_error,
16895         unreachable_stmt_error): New functions.
16896         (java_get_real_method_name): Identify constructors bearing class
16897         names in source code compiled classes only.
16898         (java_complete_expand_methods): Call missing_return_error.
16899         (invocation_mode): Private methods invoked as static methods.
16900         (java_complete_tree): Call unreachable_stmt_error.
16901
16902 1998-12-01  Tom Tromey  <tromey@cygnus.com>
16903
16904         * Makefile.in (+target): Removed.
16905         (+xmake_file): Likewise.
16906         (+tmake_file): Likewise.
16907         (.NOEXPORT): Removed duplicate.
16908
16909 1998-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16910
16911         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
16912
16913         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
16914
16915         * jvgenmain.c: Remove the xmalloc prototype, we get it from
16916         libiberty.h.  Provide an xmalloc definition.
16917
16918         * jvspec.c: Remove the xmalloc prototype.
16919
16920         * parse-scan.y: Include config.h and system.h.  Don't include
16921         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
16922         Provide an xstrdup definition.
16923
16924 1998-11-26  Alexandre Oliva  <oliva@dcc.unicamp.br>
16925
16926         * jcf-path.c (add_entry): Recognize ".jar" too.
16927         * lang-specs.h: Likewise.
16928
16929 1998-11-26  Per Bothner  <bothner@cygnus.com>
16930
16931         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
16932         soft_monitorenter_node, soft_monitorexit_node, throw_node.
16933
16934         * jcf-write.c (generate_bytecode_insns):
16935         Handle pre/post-increment/decrement of long.
16936
16937         * jcf-write.c (generate_bytecode_insns):
16938         Handle missing exception handler (finally for synchronized).
16939
16940 1998-11-25  Per Bothner  <bothner@cygnus.com>
16941
16942         * java-tree.h (end_params_node):  Declare global.
16943         * decl.c (end_params_node):  New global.
16944         (init_decl_processing, start_java_method):  Use end_params_node for
16945         end of list of parameter types.  Follows correct gcc conventions.
16946         * expr.c (pop_argument_types, pop_arguments):  Likewise.
16947         * lang.c (put_decl_node):  Likewise.
16948         * typeck.c (various places):  Likewise.
16949         * class.y (various places):  Likewise.
16950         * parse.y (various places):  Likewise.
16951
16952         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
16953         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
16954
16955         * class.c:  Add #include flags.h, remove no-longer needed declaration.
16956
16957         * class.c (layout_class_method):  Remove commented-out code, re-format.
16958         Don't add vtable entry (or index) for private methods.
16959         * expr.c (expand_invoke):  A private method is implicitly final.
16960         * class.c (make_class_data):  If inlining or optimizing,
16961         skip private methods.
16962
16963         * class.c (finish_class):  New function.  Calls existing methods,
16964         but alls emits deferred inline functions.
16965         * jcf-parse.c (parse_class_file):  Call finish_class.
16966         * parse.y (java_complete_expand_methods):  Likewise.
16967
16968         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
16969
16970         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
16971
16972 1998-11-25  Marc Espie <espie@quatramaran.ens.fr>
16973
16974         * jcf-write.c (generate_bytecode_conditional): Fix typo.
16975
16976 1998-11-24  Per Bothner  <bothner@cygnus.com>
16977
16978         * (generate_classfile): Always write class access flag with
16979         ACC_SUPER set.
16980
16981 1998-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16982
16983         * class.c (maybe_layout_super_class): New function.
16984         (layout_class): Reorganized. Loop on class methods dispatched into
16985         a new function. Call maybe_layout_super_class.
16986         (layout_class_methods, layout_class_method): New functions.
16987         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
16988         class.
16989         (expand_invoke): Likewise.
16990         * java-tree.h (all_class_list): New global variable declared.
16991         (layout_class_methods, layout_class_method): New function
16992         prototypes.
16993         (LAYOUT_SEEN_CLASS_METHODS): New macro.
16994         * jcf-parse.c (all_class_list): New global variable.
16995         (load_class): Extended what class_or_name can be. Use parser
16996         context mechanism to save globals before calling jcf_parse.
16997         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
16998         is set on the file name.
16999         (jcf_parse): Layout class methods when Object is loaded, otherwise
17000         record class in all_class_list for delayed method layout.
17001         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
17002         * lang.c (put_decl_node): Decode <init> into the decl context
17003         class name.
17004         * lex.c (java_allocate_new_line): Use xmalloc.
17005         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
17006         pointers, not TREE_LIST elements.
17007         (struct parser_ctxt): Fixed comment indentations, added comments
17008         and reordered some fields.
17009         (java_check_methods): Function prototype removed.
17010         * parse.y (java_push_parser_context): Use xmalloc.
17011         (java_parser_context_restore_global): Pop extra pushed ctxp only
17012         when there's nothing next.
17013         (maybe_create_class_interface_decl): Fixed comment, add new
17014         created class decl to all_class_list.
17015         (method_header): Use GET_REAL_TYPE on argument's types.
17016         (method_declarator): Use GET_REAL_TYPE, change type to the real
17017         type in TREE_LIST dependency node. Build argument list with the
17018         real type.
17019         (create_jdep_list): Use xmalloc. Removed allocation error message.
17020         (obtain_incomplete_type): Fixed leading comment. Broadened
17021         incoming argument meaning.
17022         (register_incomplete_type): Use xmalloc. Removed allocation error
17023         message.
17024         (safe_layout_class): Fixed leading comment.
17025         (jdep_resolve_class): Reversed if statement condition and switch
17026         if and else bodies.
17027         (resolve_and_layout): Fixed leading comment. Broadened incoming
17028         argument meaning.
17029         (complete_class_report_errors): New local variable name, for
17030         clarity. purify_type_name used for all error cases.
17031         (java_get_real_method_name): Stricter check on constructors.
17032         (java_check_regular_methods): Reverse methods list only if not
17033         already laid out. Layout artificial constructor.
17034         (java_check_methods): Deleted.
17035         (source_start_java_method): Obtain incomplete type for patchable
17036         method arguments.
17037         (java_layout_classes): Fixed leading comment. Use
17038         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
17039         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
17040         before returning. Fixed comments.
17041         (java_expand_classes): Check for errors up front.
17042         (patch_method_invocation): Class to search is resolved and laid
17043         out.
17044
17045 1998-11-24  Per Bothner  <bothner@cygnus.com>
17046
17047         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
17048
17049         * javaop.h (int8):  Removed - not used.
17050         (jbyte):  Redefine portably with correct signedness.
17051
17052         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
17053
17054         * jcf-write.c (generate_bytecode_insns):  Fix typo
17055         OPCODE_getstatic to OPCODE_getfield.
17056
17057         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
17058         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
17059         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
17060
17061 1998-11-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17062
17063         * jcf-parse.c (jcf_parse_source): Function returned type is
17064         void. Added prototype.
17065         (jcf_parse): Function returned type is void.
17066         (yyparse): Remove call to fclose on the last parsed file.
17067
17068         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
17069
17070 1998-11-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17071
17072         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
17073         (layout_class): Cope with methods featuring WFL in decl names.
17074         * decl.c (unqualified_object_id_node): New global variable,
17075         initialized.
17076         (build_decl_no_layout): Removed.
17077         * expr.c (build_primtype_type_ref): Handle Double.
17078         (java_lang_expand_expr): Fixed indentations.
17079         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
17080         (flag_wall, flag_redundant, flag_not_overriding,
17081         flag_static_local_jdk1_1, unqualified_object_id_node): Global
17082         variable declarations.
17083         (build_decl_no_layout): Removed prototype.
17084         (java_get_real_method_name): Added prototype.
17085         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
17086         (java_parse_abort_on_error): Macro now just returns.
17087         * jcf-parse.c (jcf_parse_source): Check fclose returned
17088         value. Call emit_register_classes if java_report_errors returns
17089         zero.
17090         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
17091         flag_static_local_jdk1_1): New integer flags.
17092         (lang_decode_option): New flags set here.
17093         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
17094         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
17095         the flag_redundant variable.
17096         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
17097         when parsing java.lang.Object class.
17098         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
17099         NULL_TREE to build.
17100         (resolve_qualified_expression_name): Fixed indentation.
17101         (patch_array_ref): Changed prototype.
17102         (not_initialized_as_it_should_p): Prototype removed.
17103         (java_report_errors): Added function prototype.
17104         * parse.y (formal_parameter:): Changed error message for not yet
17105         supported final parameters.
17106         (class_type_list:): Set both PURPOSE and VALUE of created
17107         TREE_LIST to be class_type.
17108         (primary_no_new_array:): Handle class literals on primitive types.
17109         (parse_warning_context): Reinstalled correct force_error and
17110         do_warning flags setups.
17111         (java_report_errors): Changed prototype. Return java_error_count
17112         value.
17113         (variable_redefinition_error): Consider treating variable type as
17114         a fake pointer.
17115         (create_interface): Warn about redundant abstract modifier if
17116         flag_redundant is set. Changed error message.
17117         (lookup_field_wrapper): Save/restore globals before/after looking
17118         up field.
17119         (duplicate_declaration_error_p): Consider treating declaration
17120         type as a fake pointer.
17121         (register_fields): Extract real type from dependency node. Check
17122         for duplicate field declaration after type adjustment. Use
17123         DECL_INITIAL to store static final initialized values.
17124         (method_header): Extract real function type from dependency node.
17125         (check_abstract_method_header): Use GET_METHOD_NAME.
17126         (obtain_incomplete_type): Layout fake pointer type.
17127         (safe_layout_class): Don't try to check for methods before layout.
17128         (java_complete_class): Don't check for correct throws clause
17129         elements inheritance here.
17130         (resolve_and_layout): Broadened name parameter meaning.
17131         (reset_method_name): Use GET_METHOD_NAME.
17132         (java_get_real_method_name): New function.
17133         (java_check_regular_methods): Don't check methods in
17134         java.lang.Object.  Verify lineage of throws clause elements. Use
17135         flag_no_overriding in warning report.
17136         (check_throws_clauses): Don't check if class was from
17137         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
17138         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
17139         (declare_local_variables): Use flag_static_local_jdk1_1 to report
17140         warning on unsupported final local variables. Use build_decl
17141         instead of build_decl_no_layout. Get real local variable type from
17142         dependency node.
17143         (source_start_java_method): Get real parameter type from
17144         dependency node. Call build_decl instead of build_decl_no_layout.
17145         (java_layout_classes): Reverse tree and layout type and class as
17146         required. Mark class as loaded when done.
17147         (resolve_field_access): Fixed indentation. Restricted condition
17148         leading to static field access code generation. Set field_type
17149         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
17150         (resolve_qualified_expression_name): Initialize type_found to
17151         null. Handle static field resolved during qualification. Fixed
17152         layout on non primitive field decl types.
17153         (not_accessible_p): Fixed typo in comment.
17154         (patch_method_invocation): Resolve and layout class to search from
17155         type.
17156         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
17157         layout non primitive type, if necessary. Make method node only to
17158         report errors.
17159         (find_applicable_accessible_methods_list): Consider WFL'ed method
17160         decl names. Fixed indentation.
17161         (argument_types_convertible): Resolve and layout target type if
17162         necessary.
17163         (java_complete_tree): Fixed indentation problems. Rewrote
17164         CALL_EXPR thrown exceptions check. Re-installed further processing
17165         of the assignment in certain cases.
17166         (patch_assignment): Call maybe_build_primttype_type_ref to perform
17167         inlining on class literals.
17168         (valid_builtin_assignconv_identity_widening_p): Cope with constant
17169         0 literal.
17170         (valid_method_invocation_conversion_p): Likewise.
17171         (patch_string): Temporary disable forbidden use of `this' in
17172         explicit constructor invocations when doing string concatenation
17173         within their scope.
17174         (patch_unaryop): Added comment. Reinstalled code to disable
17175         further check on assignment operation with cast expression RHS.
17176         (patch_switch_statement): Fixed indentation.
17177         (build_try_statement): Call build_decl instead of
17178         build_decl_no_layout.
17179         (patch_synchronized_statement): Likewise.
17180         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
17181         IS_UNCHECKED_EXPRESSION_P.
17182         (check_thrown_exceptions_do): Changed leading comment. Resolve and
17183         layout argument exception type.
17184         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
17185         of IS_UNCHECKED_EXPRESSION_P.
17186
17187 1998-11-18  Anthony Green  <green@cygnus.com>
17188
17189         * jcf-parse.c (yyparse): Open class file in binary mode.
17190
17191 1998-11-15  Per Bothner  <bothner@cygnus.com>
17192
17193         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
17194
17195         * jcf-write.c (perform_relocations):  Move check out one loop.
17196
17197 1998-11-15  Anthony Green  <green@hoser.cygnus.com>
17198
17199         * Make-lang.in: Fix reference to srcdir.
17200         * jv-scan.c: Add missing xmalloc prototype.
17201         * jvgenmain.c: Ditto.
17202
17203 1998-11-15  Per Bothner  <bothner@cygnus.com>
17204
17205         * decl.c (error_mark_node), java-tree.h:  New global.
17206         * parse.y:  Use empty_stmt_node instead of size_zero_node.
17207         (build_if_else_statement):  If missing else, use empty_stmt_node.
17208
17209         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
17210         (java_complete_expand_method):  Complain if return is missing.
17211         (java_check_regular_methods):  Comment out incorrect error check.
17212         (not_accessible_p):  Fix incorrect handling of protected methods.
17213         (patch_method_invocation):  Pass correct context to not_accessible_p.
17214         (find_applicable_accessible_methods_list):  Likewise.
17215         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
17216         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
17217         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
17218         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
17219
17220         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
17221         (push_int_const):  Remove reundant NOTE_PUSH.
17222         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
17223         (- case SWITCH_EXPR):  Fix code generation bug.
17224         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
17225         (generate_classfile):  More robust for abstract methods.
17226
17227 1998-11-15  Anthony Green  <green@cygnus.com>
17228
17229         * Makefile.in: jv-scan and jvgenmain all require libiberty.
17230         * Make-lang.in: Ditto.
17231
17232         * jv-scan.c: Remove xmalloc and xstrdup definitions.
17233         * jvgenmain: Ditto.
17234
17235 1998-11-15  Per Bothner  <bothner@cygnus.com>
17236
17237         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
17238
17239         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
17240
17241 1998-11-14  Per Bothner  <bothner@cygnus.com>
17242
17243         Allow uses of interface types to verify.  This is not really
17244         type-safe, but it matches what Sun does, and is OK as long as
17245         there are appropriate run-time checks.
17246         * verify.c (merge_types):  If merging two interface types,
17247         just set the result to java.lang.Object.
17248         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
17249
17250 1998-11-13  Tom Tromey  <tromey@cygnus.com>
17251
17252         * gjavah.c (main): Handle --output-class-directory argument.
17253         * jvspec.c (lang_specific_driver): Translate `-d' into
17254         -foutput-class-dir.
17255         * jcf.h (jcf_write_base_directory): Declare.
17256         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
17257         * lang-options.h: Mention -foutput-class-dir.
17258         * jcf-write.c (jcf_write_base_directory): New global.
17259         (make_class_file_name): Put generated .class file into `-d'
17260         directory, or into source directory if -d not given.  Function now
17261         static.
17262         (write_classfile): Free class file name.  Handle case where class
17263         file name is NULL.
17264         (DIR_SEPARATOR): New macro.
17265         Include <sys/stat.h>
17266
17267         * Makefile.in (prefix): New macro.
17268
17269 1998-11-12  Per Bothner  <bothner@cygnus.com>
17270
17271         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
17272         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
17273         here (done in patch_invoke instead).
17274         (case_identity):  Moved here from parse.y.
17275
17276         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
17277         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
17278         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
17279         so they can be efficiently scanned without recursion.
17280         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
17281         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
17282         in BLOCK iteratively, rather than recursively.
17283
17284         * parse.y (do_unary_numeric_promotion):  New function.
17285         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
17286
17287         * parse.y (patch_newarray):  Various fixes.
17288
17289         Re-do handling of switch statements (for proper block scoping).
17290         * parse.y:  Add just a single block for the enture switch block,
17291         but don't create any "case blocks".
17292         (group_of_labels):  Rmeoved unneeded non-terminal.
17293         CASE_EXPR and DEFAULT_EXPR are added to current block.
17294         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
17295         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
17296         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
17297         * parse.y (wfl_operator, print_int_node): Make non-static.
17298         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
17299         as part of recursive scan of block.
17300         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
17301         (patch_switch_statement):  Most tests move dinto java_complete_tree.
17302
17303         * parse.y:  Make various production be non-typed (void).
17304         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
17305         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
17306         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
17307
17308         * jcf-write.c (struct jcf_handler):  New type.
17309         (struct jcf_switch_state):  New type.
17310         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
17311         (alloc_handler, emit_unop, emit_reloc):  New functions.
17312         (adjust_typed_op):  Add extra parameter ("max type" offset).
17313         (emit_switch_reloc, emit_case-reloc):  New function.
17314         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
17315         (generate_bytecode_insns):  Support REAL_CST, switch statements,
17316         exception handling, method calls, object/array creation, and more.
17317
17318         * class.c:  Remove some unused variables.
17319         * constants.c (find_string_constant):  New function.
17320         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
17321         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
17322         if flag_emit_class_files.
17323
17324 1998-11-12  Tom Tromey  <tromey@cygnus.com>
17325
17326         * jcf-io.c (find_class): Added explanatory comment.
17327
17328         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
17329         trailing slash to `.zip' entries.
17330
17331         * jvspec.c (lang_specific_driver): Correctly handle case where
17332         GC_NAME not defined.
17333
17334 1998-11-11  Tom Tromey  <tromey@cygnus.com>
17335
17336         * jvspec.c (GC_NAME): New define.
17337         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
17338         if required.
17339         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
17340
17341 1998-11-11  Per Bothner  <bothner@cygnus.com>
17342
17343         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
17344
17345 1998-11-11  Tom Tromey  <tromey@cygnus.com>
17346
17347         * jcf-dump.c (main): Correctly recognize `--'-style long options.
17348
17349 1998-11-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17350
17351         * class.c (is_compiled_class): Call safe_layout_class for class
17352         compiled from source.
17353         * conver.h (convert_to_integer, convert_to_real,
17354         convert_to_pointer): Added prototypes.
17355         * decl.c (init_decl_processing): Non longer push the decls of
17356         `methodtable', `constants', `Class', `Field', `dispatchTable'
17357         `jexception' and `Method'.
17358         * expr.c (build_invokeinterface): New function.
17359         (expand_invoke): static variable CLASS_IDENT now in
17360         build_invokeinterface. Use build_invokeinterface.
17361         (expand_java_field_op): Moved code to inline
17362         java.lang.PRIMTYPE.TYPE into a function.
17363         (build_primtype_type_ref): New function.
17364         * java-tree.def (INSTANCEOF_EXPR): New tree code.
17365         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
17366         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
17367         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
17368         (DECL_LOCAL_STATIC_VALUE): New macro.
17369         (build_invokeinterface, build_primtype_type_ref): New function
17370         prototypes.
17371         (java_parse_abort_on_error): Macro rewritten.
17372         * jcf-parse.c (current_method): Add comment to declaration.
17373         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
17374         Function prototypes fixed.
17375         (jcf_parse_source): push/pop parser context. save/restore global.
17376         (parse_source_file): Fixed leading comment. Now take a
17377         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
17378         classes and pop the parser context anymore.
17379         (yyparse): Push parser context, save globals, parse the source
17380         file, restore globals and pop the parser context when processing a
17381         source file.
17382         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
17383         * lex.c (java_parse_doc_section): New function.
17384         (java_lex): Call java_parse_doc_section when appropriate. Build an
17385         operator around INSTANCEOF_TK.
17386         * lex.h (java_lineterminator, java_sprint_unicode,
17387         java_unicode_2_utf8, java_lex_error, java_store_unicode):
17388         Prototypes rewritten.
17389         (java_parse_escape_sequence, java_letter_or_digit_p,
17390         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
17391         java_read_unicode, java_store_unicode, java_read_char,
17392         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
17393         Added function prototypes.
17394         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
17395         define.
17396         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
17397         New macros
17398         (struct parser_ctxt): New fields: deprecated,
17399         current_parsed_class_un, gclass_list.
17400         (fix_method_argument_names, issue_warning_error_from_context,
17401         resolve_package, lookup_package_type): New function prototypes.
17402         (resolve_expression_name): Fixed function prototype.
17403         (find_applicable_accessible_methods_list): Fixed indentation, added
17404         extra argument in prototype.
17405         (check_final_assignment, build_null_of_type, check_deprecation,
17406         check_method_redefinition, reset_method_name,
17407         java_check_regular_methods, java_check_abstract_methods,
17408         maybe_build_primttype_type_ref): New function prototype.
17409         * parse.y (conver.h): Include.
17410         (INSTANCEOF_TK): Tagged <operator>.
17411         (single_type_import_declaration): Use REGISTER_IMPORT macro.
17412         (relational_expression:): Build binop for instanceof.
17413         (java_push_parser_context): Remember ctxp->gclass_list across
17414         contexts.
17415         (java_pop_parser_context): Simply return if no context
17416         exists. Remember gclass_list across contexts.
17417         (issue_warning_error_from_context): New function.
17418         (parse_error_context): Don't setup ctxp->elc here. Call
17419         issue_warning_error_from_context instead.
17420         (parse_warning_context): Likewise.
17421         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
17422         setup. Link new class/interface to ctxp->gclass_list.
17423         (add_superinterfaces): Register interface as incomplete if not
17424         loaded.
17425         (create_class): Remember class unqualified name in
17426         ctxp->current_parsed_class_un. Check class deprecation.
17427         (register_fields): Check field deprecation. Remember static final
17428         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
17429         processing INIT.
17430         (method_header): New local variable ORIG_ARG. Use unqualified
17431         current class name for check on constructor errors. Promote return
17432         type if of record type. Argument list fix moved in
17433         fix_method_argument_names, called here. Check method deprecation.
17434         (fix_method_argument_names): New function.
17435         (method_declarator): Promote record typed arguments.
17436         (safe_layout_class): Check class methods before layout.
17437         (java_complete_class): Compute field layout when patched.
17438         (do_resolve_class): Try to load class after having it renamed
17439         after the package name.
17440         (get_printable_method_name): Use DECL_CONTEXT.
17441         (reset_method_name): New function.
17442         (check_method_redefinition): Use reset_method_name.
17443         (java_check_regular_methods): New local variable
17444         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
17445         names for error report. Check for compile-time error when method
17446         found has default (package) access.
17447         (java_check_abstract_methods): Now takes an interface DECL node as
17448         an argument. Also reinstall real name on unchecked
17449         overriding/hiding methods for error report.
17450         (java_check_methods): Fixed leading comment. Get classes to verify
17451         from ctxp->gclass_list. Use CHECK_METHODS macro and set
17452         CLASS_METHOD_CHECKED_P on class verification.
17453         (lookup_java_method2): Get real method name if necessary.
17454         (find_in_imports): Don't check package class access here.
17455         (resolve_package, lookup_package_type): New functions.
17456         (java_layout_classes): Fixed leading comment. Take classes to be
17457         laid out from ctxp->gclass_list.
17458         (java_complete_expand_methods): Don't expand native and abstract
17459         methods.
17460         (java_expand_classes): New function.
17461         (resolve_expression_name): Use additional argument ORIG.  Retrieve
17462         values of static final field of primitive types.
17463         (resolve_field_access): Handles static final field of promotive
17464         type.
17465         (resolve_qualified_expression_name): Handle STRING_CST as
17466         primaries and package name resolution. Check deprecation on found
17467         decls. Set where_found and type_found on non static field resolved
17468         during qualification. Layout non primitive field decl types.
17469         (check_deprecation): New function.
17470         (maybe_access_field): Simplified.
17471         (patch_method_invocation_stmt): Local variable CLASS_TYPE
17472         removed. Reverse method's argument when primary is a type. Don't
17473         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
17474         instead. Include abstract class in the list of class searchable
17475         for constructors. Use DECL_CONTEXT of found method for access
17476         checks. Check method deprecation.
17477         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
17478         converting arguments. Handle INVOKE_INTERFACE.
17479         (lookup_method_invoke): Search constructor using existing
17480         infrastructure (don't rely on lookup_java_constructor anymore).
17481         (find_applicable_accessible_methods_list): Extra argument flag
17482         LC. Now include constructor in the search.
17483         (qualify_ambiguous_name): Conditional expression are primaries.
17484         (not_initialized_as_it_should_p): static final are always
17485         initialized.
17486         (java_complete_tree): Pass extra NULL argument to
17487         resolve_expression_name. Stricter test to carry on patching
17488         assignments. New case for INSTANCEOF_EXPR.
17489         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
17490         (check_final_assignment, maybe_build_primttype_type_ref): New
17491         functions.
17492         (patch_assignment): Detect resolved static finals and carry normal
17493         assignment error check on them. Inline PRIMTYPE.TYPE read access.
17494         (try_builtin_assignconv): Access constant 0 on all primitive
17495         types.
17496         (valid_builtin_assignconv_identity_widening_p): Accept identical
17497         types. Accept all promoted type on int type.
17498         (valid_ref_assignconv_cast_p): Accept a null pointer to be
17499         assigned to a reference.
17500         (valid_method_invocation_conversion_p): Accept to check null
17501         pointers.
17502         (build_binop): Merge declaration and initialization of local
17503         variable BINOP.
17504         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
17505         numeric types. Improved validity test for qualify operators on
17506         references.
17507         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
17508         and PREINCREMENT_EXPR. Also detect resolved static finals of a
17509         primitive type and issue the appropriate error message.
17510         (resolve_type_during_patch): Mark class loaded when resolved.
17511         (patch_cast): Allow null to be cased to reference types.
17512         (build_null_of_type): New function.
17513         (patch_array_ref): Handle array on references correctly.
17514         (patch_return): Removed unused local variable MODIFY. Force
17515         boolean to be returned as integers. Allows null to be returned by
17516         a function returning a reference.
17517         * typeck.c (convert_to_integer, convert_to_real,
17518         convert_to_pointer): Prototypes moved to convert.h
17519         (lookup_argument_method): Use method real name, if necessary.
17520
17521 1998-10-30  Tom Tromey  <tromey@cygnus.com>
17522
17523         * class.c (build_class_ref): Changed name of primitive classes to
17524         start with `_Jv_'.
17525
17526         * class.c (make_class_data): Renamed fields: nmethods to
17527         method_count, method_count to dtable_method_count.  Always set
17528         `state' field to 0.
17529         * decl.c (init_decl_processing): Likewise.
17530
17531 1998-10-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17532
17533         * class.c (layout_class): Don't mangle <finit>, produce
17534         __finit<class> instead. Don't verify artificial methods.
17535         * decl.c (finit_identifier_node): New declared global.
17536         (init_decl_processing): finit_identifier_node initialized.
17537         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
17538         * java-tree.h (finit_identifier_node): Declared as extern.
17539         (struct lang_decl): New field called_constructor.
17540         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
17541         (CLASS_HAS_FINIT_P): New macro.
17542         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
17543         explicit constructor invocation.
17544         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
17545         CALL_SUPER_CONSTRUCTOR_P): New macros.
17546         (write_classfile): Added prototype.
17547         * jcf-parse.c (jcf_parse_source): Parse and remember for
17548         generation if the file was seen on the command line.
17549         (parse_source_file): Don't write the class file here.
17550         (yyparse): Loop on files rewritten. Set current_jcf.
17551         (parse_zip_file_entries): Parse class file only if it was found.
17552         * lang.c (init_parse): Don't open command line provided filename
17553         here.
17554         (lang_parse): Don't set main_jcf anymore.
17555         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
17556         (JCONSTRUCTOR_CHECK): New macro.
17557         (JBSC_TYPE_P): New macro.
17558         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
17559         (COMPLETE_CHECK_OP_2): New macro.
17560         (struct parse_ctxt): New field explicit_constructor_p.
17561         (check_class_interface_creation): Fixed prototype indentation.
17562         (patch_method_invocation_stmt): Prototype reflects added argument.
17563         (patch_invoke): Likewise.
17564         (complete_method_declaration, build_super_invocation,
17565         verify_constructor_circularity,
17566         build_this_super_qualified_invocation, get_printable_method_name,
17567         patch_conditional_expr, maybe_generate_finit, fix_constructors,
17568         verify_constructor_super, create_artificial_method,
17569         start_artificial_method_body, end_artificial_method_body,
17570         generate_field_initialization_code): New function prototypes.
17571         * parse.y: Fixed leading comment
17572         (constructor_header:, constructor_body:, block_end:): Rules tagged
17573         <node>.
17574         (type_declaration:): Call maybe_generate_finit.
17575         (method_declaration:): Action for method_body: placed in new
17576         function complete_method_declaration, called here.
17577         (constructor_declaration:): Defined actions. Removed leading
17578         FIXME.
17579         (constructor_header:): New rule with action.
17580         (constructor_body:): Rule rewritten using block_begin: and
17581         block_end:. Defined actions.
17582         (constructor_declarator:, explicit_constructor_invocation:):
17583         Defined actions.
17584         (block:): Use new rules block_begin: block_end:.
17585         (block_begin:, block_end:): New rules and actions.
17586         (block_statements:): Fixed error message for explicit
17587         constructors.
17588         (method_invocation:): Call build_this_super_qualified_invocation
17589         if primary is `this' or `super' was seen.
17590         (conditional_expression:): Action defined.
17591         (extra_ctxp_pushed_p): New static global flag.
17592         (java_parser_context_save_global): Create parser context if
17593         necessary. Use extra_ctxp_pushed_p to remember it.
17594         (java_parser_context_restore_global): Pop extra parser context if
17595         one exists.
17596         (build_array_from_name): Array on primitive types are marked
17597         loaded.
17598         (register_fields): Restore new name in field initializer
17599         expression if type was altered. Non static fields initialized upon
17600         declaration marked initialized.
17601         (maybe_generate_finit): New function.
17602         (maybe_generate_clinit): Use create_artificial_method,
17603         start_artificial_method_body, end_artificial_method_body. Generate
17604         debug info for enclosed initialization statements.
17605         (method_header): Fixed leading comment. Check constructor
17606         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
17607         accordingly.
17608         (complete_method_declaration, constructor_circularity_msg,
17609         verify_constructor_circularity): New functions.
17610         (get_printable_method_name): New function.
17611         (check_method_redefinition): Don't rename <finit> methods. Fix
17612         declared constructor names. Error message for
17613         constructors modified.
17614         (java_check_regular_methods): Local variable seen_constructor
17615         renamed saw_constructor. Skip verification on constructors. Create
17616         default constructor with create_artificial_method.
17617         (java_check_methods): Removed unnecessary empty line.
17618         (create_artificial_method, start_artificial_method_body,
17619         end_artificial_method_body): New functions.
17620         (java_layout_classes): Changed leading comment. Reverse fields
17621         list if necessary. Always layout java.lang.Object if being
17622         defined.
17623         (java_complete_expand_methods): Verify constructor circularity.
17624         (java_complete_expand_method): Call fix_constructor on
17625         constructors.  Local variable no_ac_found removed. Restore
17626         bindings if method body expansion failed.
17627         (fix_constructors, verify_constructor_super,
17628         generate_field_initialization_code): New function.
17629         (java_expand_classes): Fixed leading comment. Write class file
17630         here.
17631         (resolve_expression_name): Check for illegal instance variable
17632         usage within the argument scope of an explicit constructor
17633         invocation.
17634         (resolve_qualified_expression_name): Pass extra from_super flag
17635         when invoking patch_method_invocation_stmt. New case for
17636         conditional expression when used as a primary. Check for error
17637         when acquiring super.
17638         (patch_method_invocation_stmt): Added extra argument super. New
17639         local variable is_static_flag. Set class_to_search according to
17640         the nature of the constructor invocation. Don't add `this'
17641         argument when expanding NEW_CLASS_EXPR. Check for illegal method
17642         invocation within the argument scope of explicit constructor
17643         invocation. Set is_static according to is_static_flag. Provide
17644         extra `super' argument to patch_invoke invocation.
17645         (patch_invoke): New argument from_super. Loop on arguments
17646         indentation fixed. Pass from_super to invocation_mode. New switch
17647         case INVOKE_SUPER. Fixed error message in switch default case.
17648         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
17649         value.
17650         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
17651         (lookup_method_invoke): Fixed prototypes in candidates list. Error
17652         message takes constructors into account.
17653         (find_applicable_accessible_methods_list): Fixed indentation.
17654         (qualify_ambiguous_name): Take explicit constructor invocation
17655         into account. Deal with a conditional expression as a primary to
17656         a method call.
17657         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
17658         case. Added extra argument to patch_method_invocation_stmt.
17659         Register calls made to explicit constructor `this'. Don't call
17660         save_expr in ARRAY_REF case when emitting class files. Check for
17661         illegal use of this when expanding explicit constructor invocation
17662         arguments.
17663         (complete_function_arguments): Set and reset parser context
17664         explicit_constructor_p field value when appropriate.
17665         (build_super_invocation, build_this_super_qualified_invocation):
17666         New functions.
17667         (patch_assignment): Fixed typo.
17668         (patch_unaryop): Check on final fields occurs only when a decl
17669         exits.
17670         (patch_return): Take constructors into account.
17671         (patch_conditional_expr): New function.
17672         * typeck.c (build_java_signature): Removed unnecessary empty line.
17673
17674 1998-10-28  Jeffrey A Law  (law@cygnus.com)
17675
17676         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
17677
17678 1998-10-28  Tom Tromey  <tromey@cygnus.com>
17679
17680         * decl.c (init_decl_processing): Renamed fields.
17681         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
17682         interface_len, msize fields.
17683
17684         * class.c (make_class_data): Removed subclass_head and
17685         subclass_next fields.
17686         * decl.c (init_decl_processing): Removed subclass_head and
17687         subclass_next fields.
17688
17689 1998-10-28  Jeffrey A Law  (law@cygnus.com)
17690
17691         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
17692         * mangle.c (emit_unicode_mangled_name): Similarly.
17693
17694 1998-10-26  Nick Clifton  <nickc@cygnus.com>
17695
17696         * jcf-parse.c (get_constant): Place braces around code to compute
17697         'd' when REAL_ARITHMETIC is not defined.
17698
17699 1998-10-25  H.J. Lu  (hjl@gnu.org)
17700
17701         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
17702         dependency.
17703
17704 1998-10-23  Tom Tromey  <tromey@cygnus.com>
17705
17706         * lang-specs.h: `.zip' files are input to jc1.
17707
17708 1998-10-22  Per Bothner  <bothner@cygnus.com>
17709
17710         * jvspecs.c:  Add (but don't enable) support for combining multiple
17711         .class and .java input filenames to a single jc1 invocation.
17712         Add support for -C flag (copile to .class files).
17713         Translate -classpath and -CLASSPATH arguments.
17714         * lang-specs.h:  Don't set %2 spec.
17715
17716 1998-10-22  Tom Tromey  <tromey@cygnus.com>
17717
17718         * jcf-path.c (add_entry): Don't add trailing separator if entry is
17719         a .zip file.
17720         (add_path): Don't add trailing separator to non-empty path
17721         elements.
17722
17723         * lang.c (lang_decode_option): Check for -fclasspath and
17724         -fCLASSPATH before examining other `-f' options.
17725
17726         * java-tree.h (finalize_identifier_node): Don't declare.
17727         * class.c (make_class_data): Don't push "final" field.
17728         * decl.c (init_decl_processing): Don't push "final" field.
17729         (finalize_identifier_node): Removed.
17730         (init_decl_processing): Don't set finalize_identifier_node.
17731
17732         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
17733
17734 1998-10-11  Anthony Green  <green@cygnus.com>
17735
17736         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
17737         (JV_SCAN_SOURCES): New macro.
17738         (JCF_DUMP_SOURCES): Likewise.
17739         (jcf-dump$(exeext)): New target.
17740         (jv-scan$(exeext)): New target.
17741
17742 1998-10-22  Tom Tromey  <tromey@cygnus.com>
17743
17744         * Makefile.in (LEX): Removed.
17745         (LEXFLAGS): Likewise.
17746         (SET_BISON): New macro.
17747         (BISON): Removed.
17748         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
17749         spurious diffs in parse.c.
17750         ($(PARSE_SCAN_C)): Likewise.
17751         (PARSE_DIR): New macro.
17752         (PARSE_C): Use it.
17753         (PARSE_SCAN_C): Likewise.
17754         (PARSE_RELDIR): New macro.
17755
17756         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
17757
17758         * jcf-io.c (find_class): Use saw_java_source to determine when to
17759         look for `.java' file.
17760         * jcf-parse.c (saw_java_source): New global.
17761         (yyparse): Set it if `.java' file seen.
17762
17763         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
17764         (GCJH_SOURCES): Likewise.
17765         * Makefile.in (datadir): New macro.
17766         (libjava_zip): Likewise.
17767         (JAVA_OBJS): Added jcf-path.o.
17768         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
17769         (../gcjh$(exeext)): Likewise.
17770         (jcf-path.o): New target.
17771         * java-tree.h (fix_classpath): Removed decl.
17772         * jcf-parse.c (fix_classpath): Removed.
17773         (load_class): Don't call fix_classpath.
17774         * parse.y (read_import_dir): Don't call fix_classpath.
17775         * lex.h: Don't mention classpath.
17776         * lex.c (java_init_lex): Don't initialize classpath.
17777         * jcf-io.c (classpath): Removed global.
17778         (find_class): Use jcf_path iteration functions.  Correctly search
17779         class path for .java file.
17780         (open_in_zip): New argument `is_system'.
17781         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
17782         classpath-related options.
17783         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
17784         and -I.
17785         (lang_init): Call jcf_path_init.
17786         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
17787         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
17788         Correctly put braces around second string in each entry.
17789         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
17790         classpath-related options.
17791         (help): Updated for new options.
17792         * jcf.h: Declare functions from jcf-path.c.  Don't mention
17793         `classpath' global.
17794         * jcf-path.c: New file.
17795
17796         * jcf-depend.c: Include jcf.h.
17797
17798         * jcf-write.c (localvar_alloc): Returns `void'.
17799         (localvar_free): Removed unused variable.
17800
17801         * lang.c (OBJECT_SUFFIX): Define if not already defined.
17802         (init_parse): Use OBJECT_SUFFIX, not ".o".
17803
17804 1998-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17805
17806         * class.c (emit_register_classes): Renamed from
17807         emit_register_class.
17808         * java-tree.h (emit_register_classes): Prototype renamed from
17809         emit_register_class.
17810         * jcf-parse.c (yyparse): Call emit_register_classes once before
17811         returning.
17812         * parse.y (java_expand_classes): No longer register classes.
17813
17814 1998-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17815
17816         * class.c (is_compiled_class): New local variable
17817         seen_in_zip. Identify classes found in currently compiled source
17818         file(s).
17819         * decl.c (complete_start_java_method): Fixed typo.
17820         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
17821         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
17822         (CLASS_P): Moved around.
17823         (java_parse_abort_on_error): Macro moved from jcf-parse.c
17824         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
17825         java-tree.h
17826         (jcf_parse_source): Changed leading comment. Removed unnecessary
17827         fclose and CLASS_FROM_SOURCE_P marking.
17828         (parse_source_file): New local variables remember_for_generation
17829         and filename. Mark parsed file name identifier node. Removed block
17830         executed when parse_only was null. Set remember_for_generation.
17831         Use it as an argument to java_pop_parser_context.
17832         (yyparse): New local variables several_files, list, next node and
17833         current_file_list. Split ampersand separated file names into
17834         current_file_list. Iterate through the list and parse accordingly.
17835         * parse.h (java_pop_parser_context): New function prototype.
17836         * parse.y (ctxp_for_generation): New static global variable.
17837         (java_pop_parser_context): New argument generate. Link popped ctxp
17838         to ctxp_for_generation list accordingly.
17839         (java_complete_expand_methods): Fixed indentation.
17840         (java_expand_classes): New function.
17841
17842 1998-10-17  Per Bothner  <bothner@cygnus.com>
17843
17844         * Makefile.in:  Link with libiberty.a instead of memmove.o.
17845
17846 1998-10-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17847
17848         * lex.c (setjmp.h): No longer included.
17849         * lex.h (setjmp.h): Included.
17850         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
17851         (duplicate_declaration_error_p): Renamed from
17852         duplicate_declaration_error.
17853         (build_array_from_name): New function prototype.
17854         * parse.y (setjmp.h): No longer included.
17855         (variable_declarator_id): Define action.
17856         (build_array_from_name): New function.
17857         (duplicate_declaration_error_p): Renamed from
17858         duplicate_declaration_error.  Fixed leading comment.
17859         (register_fields): Main `for' loop reorganized. Uses
17860         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
17861         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
17862         build_array_from_name.
17863         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
17864         types.
17865         (read_import_dir): Don't try to skip `.' and `..'.
17866         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
17867         build_array_from_name. Main `for' loop reorganized.
17868         (resolve_qualified_expression_name): When building access to a
17869         field, use the type where the field was found, not its own type.
17870         (maybe_access_field): Use field DECL_CONTEXT if the type where the
17871         field was found is null.
17872         (qualify_ambiguous_name): Sweep through all successive array
17873         dimensions.
17874
17875 1998-10-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17876
17877         * java-tree.h (pop_labeled_block, lang_printable_name,
17878         maybe_add_interface, set_super_info, get_access_flags_from_decl,
17879         interface_of_p, inherits_from_p, fix_classpath,
17880         complete_start_java_method, emit_handlers, init_outgoing_cpool,
17881         make_class_data, register_class, alloc_name_constant): New
17882         function prototypes.
17883         * lang.c (lang_decode_option): Set argc argument unused. Fixed
17884         indentation. Added cast to remove warning.
17885         (lang_printable_name): Set v argument unused.
17886         (lang_print_error): Added argument to lang_printable_name call.
17887         (java_dummy_print, print_lang_decl, print_lang_type,
17888         print_lang_identifier, lang_print_xnode): All argument marked
17889         unused.
17890         * lex.c (java_unget_unicode): Removed unnecessary argument.
17891         (java_allocate_new_line): Unused local variable is gone.
17892         (java_read_char): Added parenthesis in expressions to remove
17893         warnings.  Added final return statement.
17894         (java_read_unicode): Added parenthesis in expression to remove
17895         warning.
17896         (java_parse_end_comment): Fixed java_unget_unicode invocation.
17897         (java_parse_escape_sequence): Likewise.
17898         (java_lex): Unused local variables are gone. Fixed
17899         java_unget_unicode invocation.
17900         * lex.h (set_float_handler): Prototype added when JC1_LITE not
17901         defined.
17902         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
17903         lang_printable_name invocation in macro.
17904         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
17905         Likewise.
17906         (duplicate_declaration_error): Suppressed unused argument in
17907         prototype.
17908         (identical_subpath_p): Function declaration is gone.
17909         (patch_invoke): Suppressed unused argument in prototype.
17910         (patch_cast, build_labeled_block, check_thrown_exceptions):
17911         Likewise.
17912         * parse.y (setjmp.h): Included
17913         (toplev.h): Likewise.
17914         (field_declaration:): Suppressed unused local
17915         (label_decl:): Fixed build_labeled_block invocation.
17916         (java_pop_parser_context): Put extra parenthesis around assignment
17917         in if.
17918         (yyerror): Suppressed unused local variables.
17919         (variable_redefinition_error): Fixed lang_printable_name
17920         invocation.
17921         (create_interface): Suppressed unused local variables.
17922         (create_class): Likewise.
17923         (duplicate_declaration_error): Suppressed unused argument. Fixed
17924         lang_printable_name invocation.
17925         (register_fields): Suppressed unused local variable. Fixed
17926         duplicate_declaration_error invocation.
17927         (method_header): Suppressed unused local variable.
17928         (method_declarator, parser_check_super): Likewise.
17929         (java_complete_class): Suppressed unused local variable. Fixed
17930         fatal error message.
17931         (complete_class_report_errors): Added default: in switch.
17932         (java_check_regular_methods): Fixed lang_printable_name
17933         invocations.
17934         (check_throws_clauses): Likewise.
17935         (java_check_abstract_methods): Suppressed unused local
17936         variable. Fixed lang_printable_name invocation.
17937         (read_import_entry): Added supplemental return statement.
17938         (read_import_dir): Suppressed unused local variables.
17939         (check_pkg_class_access, declare_local_variables): Likewise.
17940         (source_start_java_method): Suppressed unused extern variable
17941         declarations
17942         (expand_start_java_method): Suppressed unused extern and local
17943         variable declarations.
17944         (java_complete_expand_methods): Likewise.
17945         (java_complete_expand_method): Suppressed unused local variables.
17946         (make_qualified_name): Likewise.
17947         (resolve_qualified_expression_name): Added default: in
17948         switch. Fixed lang_printable_name invocation.
17949         (class_instance_creation_expression): Added parenthesis around
17950         expressions.
17951         (patch_method_invocation_stmt): Fixed lang_printable_name and
17952         patch_invoke invocations.
17953         (check_for_static_method_reference): Fixed lang_printable_name
17954         invocation.
17955         (patch_invoke): Suppressed unused arguments and local variables.
17956         (lookup_method_invoke): Suppressed unused local variables.
17957         (qualify_ambiguous_name): Added default: in switch.
17958         (identical_subpath_p): Function removed.
17959         (patch_assignment): Suppressed unused local variables. Suppressed
17960         unnecessary if statement. Fixed lang_printable_name invocations.
17961         (try_builtin_assignconv): Fixed lang_printable_name invocations.
17962         (valid_ref_assignconv_cast_p): Parenthesis around
17963         expression. Suppressed unused local variables.
17964         (build_binop): Suppressed unused local variables. fixed
17965         lang_printable_name invocations.
17966         (string_constant_concatenation): Suppressed unused local
17967         variables.
17968         (patch_unaryop): Fixed lang_printable_name invocation.
17969         (patch_cast): Suppressed unnecessary argument. Fixed
17970         lang_printable_name invocation.
17971         (patch_array_ref): Fixed lang_printable_name invocation.
17972         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
17973         (build_labeled_block): Suppressed unused argument.
17974         (generate_labeled_block): Fixed build_labeled_block invocation.
17975         (build_loop_body): Suppressed unused local variables.
17976         (patch_loop_statement): Likewise.
17977         (patch_exit): Fixed lang_printable_name invocation.
17978         (patch_switch_statement): Likewise.
17979         (case_identity): First argument marked unused.
17980         (patch_try_statement): Fixed lang_printable_name invocations.
17981         (patch_synchronized_statement, patch_throw_statement): Likewise.
17982         (check_thrown_exceptions): Fixed check_thrown_exceptions and
17983         lang_printable_name invocations.
17984         (check_thrown_exceptions_do): Suppressed unused argument.
17985
17986 1998-10-14  Tom Tromey  <tromey@cygnus.com>
17987
17988         * jcf-write.c (write_classfile): Add output class file as target.
17989         * lang-options.h: Added -MD, -MMD, -M, and -MM.
17990         * jcf.h: Added declarations for dependency-tracking functions.
17991         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
17992         * lang.c (lang_decode_option): Recognize -MD and -MMD.
17993         (finish_parse): Call jcf_dependency_write.
17994         (dependency_tracking): New global.
17995         (DEPEND_SET_FILE): New define.
17996         (DEPEND_ENABLE): New define.
17997         (init_parse): Enable dependency tracking if required.
17998         Include "flags.h".
17999         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
18000         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
18001         (../gcjh$(exeext)): Likewise.
18002         (jcf-depend.o): New target.
18003         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
18004         (GCJH_SOURCES): Likewise.
18005         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
18006         dep_name argument.
18007         (find_classfile): Added dep_name argument.
18008         (find_class): Compute name of dependency.
18009         (open_in_zip): Call jcf_dependency_add_file.
18010         * gjavah.c (output_file): No longer global.
18011         (usage): Don't mention "gjavah".
18012         (help): Likewise.
18013         (java_no_argument): Likewise.
18014         (version): Likewise.
18015         (main): Recognize and handle -M family of options.
18016         (print_mangled_classname): Return is void.
18017         (process_file): Handle case where output is suppressed.
18018         (HANDLE_END_FIELD): Likewise.
18019         (HANDLE_METHOD): Likewise.
18020         * jcf-depend.c: New file.
18021
18022 1998-10-13  Jeffrey A Law  (law@cygnus.com)
18023
18024         * java-tree.def: Add missing newline at EOF.
18025
18026 1998-10-13  Tom Tromey  <tromey@cygnus.com>
18027
18028         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
18029         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
18030         function.
18031         Include <config.h> and "system.h".
18032         (disassemble_method): Undefine RET to avoid clash with
18033         config/i386/i386.h.
18034
18035 1998-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18036
18037         * decl.c (runtime_exception_type_node, error_exception_type_node):
18038         New global variables.
18039         (init_decl_processing): Initialized.
18040         * expr.c (java_lang_expand_expr): Set caught exception type to
18041         null if catch handler argument doesn't exit.
18042         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
18043         tree codes.
18044         * java-tree.h (runtime_exception_type_node,
18045         error_exception_type_node): Global variables declared.
18046         (DECL_FUNCTION_THROWS): New macro.
18047         (DECL_FUNCTION_BODY): Modified comment.
18048         (DECL_SPECIFIC_COUNT): Likewise.
18049         (struct lang_decl): New field throws_list.
18050         (IS_UNCHECKED_EXPRESSION_P): New macro.
18051         * lex.c (java_lex): Generate location information for THROW_TK.
18052         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
18053         EXCEPTIONS_P): New macros.
18054         (enum jdep_code): New value JDEP_EXCEPTION.
18055         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
18056         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
18057         PATCH_METHOD_RETURN_ERROR): New macros.
18058         (patch_method_invocation_stmt): Added new argument to prototype.
18059         (patch_synchronized_statement, patch_throw_statement,
18060         check_thrown_exceptions, check_thrown_exceptions_do,
18061         purge_unchecked_exceptions, check_throws_clauses): New function
18062         prototypes.
18063         * parse.y Fixed typo in keyword section.
18064         (throw:): Rule tagged <node>.
18065         (THROW_TK): Keyword tagged <operator>.
18066         (method_header:): Last argument to call to method_header passed
18067         from throws: rule.
18068         (throws:, class_type_list:, throw_statement:,
18069         synchronized_statement:, synchronized:): Defined actions.
18070         (method_header): New local variable current. Register exceptions
18071         from throws clause.
18072         (java_complete_tree): Complete and verify exceptions from throws
18073         clause.
18074         (complete_class_report_errors): Error message on exceptions not
18075         found
18076         (java_check_regular_methods): Fixed typo. Shortcut on private
18077         overriding methods. Changed error message on method
18078         redefinition. Check for throws clause compatibility.
18079         (check_throws_clauses): New function.
18080         (java_check_abstract_methods): Use DECL_NAME for wfl or current
18081         method. Changed error message on method redefinition.
18082         (currently_caught_type_list): New static variable.
18083         (java_complete_expand_methods): Purge unchecked exceptions from
18084         throws clause list. Call PUSH_EXCEPTIONS before walk and
18085         POP_EXCEPTIONS after.
18086         (resolve_qualified_expression_name): Pass new argument as NULL to
18087         patch_method_invocation_stmt.
18088         (patch_method_invocation_stmt): New argument ref_decl. Invoke
18089         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
18090         argument list when appropriate. Use new argument if non null to
18091         store selected method decl.
18092         (patch_invoke): Convert if necessary args of builtin types before
18093         forming CALL_EXPR. Argument list no longer reversed here.
18094         (invocation_mode): Treat final methods as static methods.
18095         (java_complete_tree): New cases for THROW_EXPR: and
18096         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
18097         function call.
18098         (complete_function_arguments): No more RECORD_TYPE
18099         conversion. Function parameter nodes no longer saved.
18100         (valid_ref_assignconv_cast_p): Avoid handling null type.
18101         (patch_binop): Fixed null constant reference handling.
18102         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
18103         BUILD_THROW macros.
18104         (patch_try_statement): Fixed comments. Record caught types in
18105         list, push the list, expand try block and pop the list.
18106         (patch_synchronized_statement, patch_throw_statement,
18107         check_thrown_exceptions, check_thrown_exceptions_do,
18108         purge_unchecked_exceptions): New functions.
18109         * typeck.c (lookup_argument_method): Allow WFL in place of method
18110         DECL_NAME during method definition check
18111
18112 1998-10-09  Tom Tromey  <tromey@cygnus.com>
18113
18114         * gjavah.c (decode_signature_piece): New function.
18115         (print_c_decl): Use it.  Added `name_override' argument.
18116         (print_method_info): Use name_override argument to print_c_decl.
18117         (seen_fields): Removed.
18118         (print_field_info): Don't update seen_fields.
18119         (struct method_name): New structure.
18120         (method_name_list): New global.
18121         (print_method_info): Add new method to list of methods.
18122         (name_is_method_p): New function.
18123         (print_field_info): If field name has same name as method, then
18124         change field name.
18125         (process_file): Parse methods before fields.
18126         (field_pass): New global.
18127         (HANDLE_END_FIELD): Take field_pass into account.
18128
18129 1998-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18130
18131         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
18132         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
18133
18134 1998-10-03  Anthony Green  <green@cygnus.com>
18135
18136         * jvspec.c: Fix bug in jvgenmain_spec patch.
18137
18138 1998-10-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18139
18140         * Makefile.in (lang.o:): Install dependency on java-tree.def.
18141         * decl.c (soft_exceptioninfo_call_node): New global variable.
18142         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
18143         takes extra integer argument. soft_exceptioninfo_call_node
18144         initialized.
18145         * except.c (java_set_exception_lang_code): New function
18146         (method_init_exceptions): Called here.
18147         (prepare_eh_table_type): New function.
18148         (expand_end_java_handler): Called here.
18149         * expr.c (build_java_throw_out_of_bounds_exception): Now features
18150         one argument. Modified generation of call to
18151         soft_badarrayindex_node to use new argument.
18152         (build_java_arrayaccess): Pass faulty index value to
18153         build_java_throw_out_of_bounds_exception.
18154         (generate_name): New function.
18155         (java_lang_expand_expr): New local variables node, current,
18156         has_finally_p. Expand TRY_EXPR node.
18157         (process_jvm_instruction): Replace top of the stack with thrown
18158         object reference when entering exception handler.
18159         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
18160         specific tree codes.
18161         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
18162         global.
18163         (DECL_SPECIFIC_COUNT): New macro.
18164         (prepare_eh_table_type, java_set_exception_lang_code,
18165         generate_name): New function declarations.
18166         (match_java_method): Declaration deleted.
18167         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
18168         macros.
18169         * lex.c (TRY_TK, CATCH_TK): Generate location information.
18170         * parse.h (redefinition_error, refine_accessible_methods_list,
18171         can_cast_to_p): Function declaration removed.
18172         (classitf_redefinition_error, variable_redefinition_error,
18173         parse_jdk1_1_error, find_applicable_accessible_methods_list,
18174         find_most_specific_methods_list, argument_types_convertible,
18175         enter_a_block, valid_builtin_assignconv_identity_widening_p,
18176         valid_cast_to_p, valid_method_invocation_conversion_p,
18177         try_reference_assignconv, add_stmt_to_compound,
18178         build_jump_to_finally, build_tree_list, patch_try_statement,
18179         java_get_catch_block): New function declarations.
18180         * parse.y (string_buffer_type): Global variable deleted.
18181         (group_of_labels, catches, catch_clause, catch_clause_parameter,
18182         finally): Rules tagged <node>.
18183         (TRY_TK, CATCH_TK): Token tagged <operator>.
18184         (class_body_declaration:, class_member_declaration:,
18185         formal_parameter:, explicit_constructor_invocation:,
18186         interface_member_declaration:, constant_declaration:,
18187         primary_no_new_array:, class_instance_creation_expression:,
18188         array_creation_expression:): Issue error on unsuported JDK1.1
18189         features.
18190         (try_statement:, catches:, finally:): Define actions.
18191         (catch_clause_parameter): New rule.
18192         (catch_clause:): Use new rule catch_clause_parameter.
18193         (parse_jdk1_1_error): New function.
18194         (redefinition_error): Renamed classitf_redefinition_error.
18195         (variable_redefinition_error): New function.
18196         (check_class_interface_creation): Call
18197         classitf_redefinition_error.
18198         (java_complete_tree): Added error message on JDEP_TYPE: case.
18199         (complete_class_report_errors): Fixed indentation.
18200         (declare_local_variables): Call variable_redefinition_error.
18201         (source_end_java_method): Call java_set_exception_lang_code and
18202         emit_handlers where appropriate.
18203         (java_method_add_stmt): Call add_stmt_to_block.
18204         (add_stmt_to_block): New function.
18205         (lookup_method_invoke): Fixed outside comment. new local variable
18206         candicates.  Call find_applicable_accessible_methods_list and
18207         find_most_specific_methods_list when searching for a
18208         method. Modified error report to list possible candidates when
18209         applicable.
18210         (find_applicable_accessible_methods_list,
18211         find_most_specific_methods_list, argument_types_convertible): New
18212         function.
18213         (refine_accessible_methods_list): Function deleted.
18214         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
18215         expr (if applicable) before calling patch_array_ref.
18216         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
18217         (enter_block): Fixed comment.
18218         (enter_a_block): New function.
18219         (patch_assignment): Reorganized. Call try_reference_assignconv for
18220         references. Call valid_cast_to_p instead of can_cast_to_p.
18221         (try_reference_assignconv,
18222         valid_builtin_assignconv_identity_widening_p): New functions.
18223         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
18224         (valid_cast_to_p, valid_method_invocation_conversion_p): New
18225         functions.
18226         (build_string_concatenation): Don't resolve StringBuffer.
18227         (patch_cast): Fixed inverted arguments.
18228         (patch_array_ref): Code to save array expr deleted. Call
18229         valid_cast_to_p instead of can_cast_to_p.
18230         (generate_labeled_block): Call generate_name.
18231         (build_jump_to_finally, build_try_statement, java_get_catch_block,
18232         patch_try_statement): New functions.
18233         * typeck.c (match_java_method): Function deleted.
18234
18235 1998-10-02  Anthony Green  <green@cygnus.com>
18236
18237         * jvspec.c: jvgenmain_spec uses different temporary file names.
18238
18239 1998-10-02  Anthony Green  <green@cygnus.com>
18240
18241         * jvspec.c (lang_specific_driver): Fail if user specifies
18242         --main= when not linking.
18243
18244 1998-09-28  Tom Tromey  <tromey@cygnus.com>
18245
18246         * class.c (make_class_data): Push value for `thread' field.
18247         * decl.c (init_decl_processing): Added `thread' field to class.
18248
18249         * class.c (add_field): Always make static fields externally
18250         visible.
18251
18252 1998-09-26  Anthony Green  <green@cygnus.com>
18253
18254         * expr.c (build_java_athrow,
18255         build_java_throw_out_of_bounds_exception, expand_invoke,
18256         build_newarray, expand_java_multianewarray, build_java_monitor):
18257         Update comments to reflect _Jv_* function names.
18258
18259 1998-09-25  Per Bothner  <bothner@cygnus.com>
18260
18261         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
18262         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
18263         * parse.y (expand_start_java_method):  Likewise.
18264
18265 1998-09-24  Per Bothner  <bothner@cygnus.com>
18266
18267         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
18268
18269         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
18270         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
18271         * expr.c:  Remove no-longer-needed calls to promote_type.
18272         * decl.c (give_name_to_locals):  Liekwise.
18273         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
18274         * parse.y:  Add/remove promote_type calls as appropriate.
18275         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
18276         (parse_signature_string):  Likewise.
18277         (build_java_array_type):  Fix for now signature convenions.
18278
18279         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
18280
18281 1998-09-23  Tom Tromey  <tromey@cygnus.com>
18282
18283         * class.c (init_class_processing): libjava function renamed to
18284         _Jv_RegisterClass.
18285
18286 1998-09-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18287
18288         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
18289         * java-tree.def: Fixed DEFTREECODE third argument.
18290         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
18291         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
18292         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
18293         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
18294         JAVA_THIS_EXPR): Now replaced by tree code definitions.
18295         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
18296         * lang.c (java_tree_code_type, java_tree_code_length,
18297         java_tree_code_name): New arrays.
18298         (lang_init): Append Java tree node definitions to Gcc ones.
18299         * lex.c (expression_obstack): Declared as extern when JC1_LITE
18300         defined.
18301         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
18302         wfl_to_string.
18303         (java_lex): Allow declaration of empty string constants. Retain
18304         location information on CASE_TK and DEFAULT_TK.
18305         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
18306         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
18307         Modified to be more robust.
18308         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
18309         (build_new_invocation, try_builtin_assignconv,
18310         patch_switch_statement, string_constant_concatenation,
18311         build_string_concatenation, patch_string_cst, patch_string,
18312         java_expand_switch): New function declarations.
18313         * parse.y: Rules related to switch and EH tagged <node>.
18314         (label_id): Set to NULL_TREE
18315         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
18316         tree nodes.
18317         (this_or_super:): Fixed indentation.
18318         (statement:, statement_nsi:, statement_without_trailing_substatement:,
18319         statement_expression:): Removed call to RULE on all sub-rules.
18320         (switch_expression:, switch_labels:): New rules.
18321         (switch_statement:, switch_block:, switch_block_statement_groups:,
18322         switch_block_statement_group:, switch_labels:, switch_label:):
18323         Defined actions.
18324         (throw_statement:, synchronized_statement:, try_statement:):
18325         Defined temporary actions.
18326         (class_instance_creation_expression:): Call
18327         build_new_invocation. Fixed indentation.
18328         (field_access): Fixed indentation.
18329         (method_invocation): Likewise.
18330         (make_qualified_primary): Use THIS_EXPR.
18331         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
18332         resolving from SUPER, set *type_found.
18333         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
18334         (java_complete_tree): Removed unused local variable `location'. Case
18335         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
18336         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
18337         on MODIFY_EXPR: and all binary operator tree code cases. Removed
18338         STRING_CST: case. default: checks for patchable strings.
18339         (complete_function_arguments): Transform string constant or
18340         crafted StringBuffer if necessary.
18341         (build_method_invocation): Fixed comments.
18342         (build_new_invocation): New function.
18343         (patch_assignment): Call try_builtin_assignconv to figure a valid
18344         assignment conversion between builtin types.
18345         (try_builtin_assignconv): New function.
18346         (build_binop): Use URSHIFT_EXPR directly to call build.
18347         (operator_string): Use UNARY_PLUS_EXPR.
18348         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
18349         operator.
18350         (do_merge_string_cste, merge_string_cste,
18351         string_constant_concatenation, build_string_concatenation,
18352         patch_string, patch_string_cst): New function.
18353         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
18354         (patch_unaryop): Likewise. New test of valid ++/-- operands.
18355         (build_newarray_node): Use NEW_ARRAY_EXPR.
18356         (build_this): Use THIS_EXPR.
18357         (build_return): Enable debug information on return statement.
18358         (build_if_else_statement): Likewise.
18359         (complete_labeled_statement): Fixed related comment.
18360         (build_loop_body): Fixed comment.
18361         (build_bc_statement): Enable debug information on break/continue
18362         statements.
18363         (patch_bc_statement): Fixed typos. Handle SWITCH statement
18364         context.
18365         (patch_switch_statement, case_identity, java_expand_switch): New
18366         functions.
18367
18368 1998-09-21  Per Bothner  <bothner@cygnus.com>
18369
18370         * buffer.h (BUFFER_INIT):  New macro.
18371         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
18372         Pass (struct jcf_partial *state) to most functions.
18373         (jcf_block, jcf_relocation):  New types.
18374         Support labels, branches, conditionals, loops.
18375
18376 1998-09-21  Tom Tromey  <tromey@cygnus.com>
18377
18378         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
18379
18380 1998-09-21  Per Bothner  <bothner@cygnus.com>
18381
18382         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
18383         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
18384         not integer_type_node (INT_TYPE_SIZ bits).
18385
18386         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
18387
18388         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
18389         * jcf-dump.c (print_exception_table):  New function.
18390         (disassemble_method):  Better handling of wide instructions.
18391         Make more robust for bad input.
18392
18393 1998-09-30  Jeffrey A Law  (law@cygnus.com)
18394
18395         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
18396         FreeBSD.
18397
18398 1998-09-17  Jeffrey A Law  (law@cygnus.com)
18399
18400         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
18401
18402 1998-09-17  Tom Tromey  <tromey@cygnus.com>
18403
18404         * Makefile.in ($(PARSE_H)): Removed target.
18405
18406 1998-09-17  Jeffrey A Law  (law@cygnus.com)
18407
18408         * Makefile.in (JAVA_OBJS): Add memmove.o
18409         (memmove.o): New target & rules.
18410
18411 1998-09-15  Tom Tromey  <tromey@cygnus.com>
18412
18413         * expr.c (expand_invoke): Don't generate a call to the class init
18414         code.
18415
18416 1998-09-14  Jeffrey A Law  (law@cygnus.com)
18417
18418         * Makefile.in: Add many missing dependencies.
18419         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
18420         as appropriate.
18421         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
18422         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
18423
18424 1998-09-11  Per Bothner  <bothner@cygnus.com>
18425
18426         * decl.c (complete_start_java_method):  If method is static (and
18427         not private) call _Jv_InitClass.
18428         * expr.c (expand_invoke):  Don't call build_class_init.
18429
18430         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
18431
18432 1998-09-10  Jeffrey A Law  (law@cygnus.com)
18433
18434         * Make-lang.in (GCJ): Define before using.
18435
18436 1998-09-09  Jeffrey A Law  (law@cygnus.com)
18437
18438         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
18439         losing due to namespace pollution in GNU getopt.h
18440
18441 1998-09-09  Tom Tromey  <tromey@cygnus.com>
18442
18443         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
18444         (java.all.cross): Likewise.
18445         (java.rest.encap): Likewise.
18446
18447 1998-09-08  Jeffrey A Law  (law@cygnus.com)
18448
18449         * gjavah.c (print_class_decls): Fix thinko in arglist
18450         * jcv-io.c (find_classfile): Similarly.
18451
18452 1998-09-07  Jeffrey A Law  (law@cygnus.com)
18453
18454         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
18455
18456 1998-09-05  Tom Tromey  <tromey@cygnus.com>
18457
18458         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
18459         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
18460         * Makefile.in (PARSE_C): New macro.
18461         (PARSE_H): Likewise.
18462         (PARSE_SCAN_C): Likewise.
18463         ($(PARSE_C)): Target renamed from parse.c.
18464         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
18465         (clean): Remove parse-scan.c as well.
18466         (parse.o): Depend on $(PARSE_C).
18467
18468 1998-09-05  Anthony Green  <green@cygnus.com>
18469
18470         * README, license.terms: Removed.
18471
18472         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
18473         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
18474         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
18475         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
18476         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
18477         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
18478         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
18479         and Java trademark attribution.
18480
18481 1998-09-04  Tom Tromey  <tromey@cygnus.com>
18482
18483         * Makefile.in: Use gcjh, not gjavah.
18484         * config-lang.in (stagestuff): Use gcjh, not gjavah.
18485         * Make-lang.in: Changed gjavah to gcjh everywhere.
18486
18487 1998-09-03  Per Bothner  <bothner@cygnus.com>
18488
18489         * gjavah.c:  Support new -prepend -add -append flags.
18490         (print_method_info):  Method is not virtual if class is final.
18491
18492 1998-09-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18493
18494         * jv-scan.c: Fixed copyright assignment.
18495         * keyword.gperf: Likewise.
18496         * keyword.h: Likewise.
18497         * lex.c: Fixed copyright assignment.
18498         (java_lex): Push unicode back when parsing '<'.
18499         * lex.h: Fixed copyright assignment.
18500         * parse-scan.y: Likewise.
18501         * parse.h: Fixed copyright assignment.
18502         (build_debugable_stmt, complete_for_loop): New function prototypes.
18503         * parse.y: Fixed copyright assignment.
18504         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
18505         size_zero_node when completing a loop with no exit condition.
18506         (for_statement_nsi:): Define action.
18507         (for_init:, for_update:): Return size_zero_node when empty.
18508         (declare_local_variables): Call build_debugable_stmt.
18509         (build_debugable_stmt): New function.
18510         (build_loop_body): Build debugable statement around loop
18511         condition part.
18512         (complete_loop_body): Take into account the debugable statement
18513         around the EXIT_EXPR.
18514         (complete_loop_body): New function.
18515         (patch_exit_expr): Fixed condition inversion.
18516
18517 1998-09-02  Tom Tromey  <tromey@cygnus.com>
18518
18519         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
18520         name of thread define.
18521         * jvspec.c (THREAD_NAME): New macro.
18522         (GCLIB): Likewise.
18523         (THREADLIB): Likewise.
18524         (lang_specific_driver): Recognize attempt to link with thread
18525         library or gc library.  Recognize -ljava on command line so it
18526         isn't linked against more than once.
18527
18528 1998-09-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18529
18530         * parse-scan.y (report_main_declaration): Name of the class
18531         containing `main' can be a qualified name.
18532
18533 1998-08-31  Tom Tromey  <tromey@cygnus.com>
18534
18535         * config-lang.in: Changed gjavac to gjc everywhere.
18536         * Make-lang.in: Changed gjavac to gjc everywhere.
18537
18538 1998-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18539
18540         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
18541         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
18542         and install the files.
18543         * Makefile.in (JAVA_OBJS_LITE): New variable.
18544         (compiler:): Now include jv-scan as a dependency.
18545         (../jv-scan$(exeext), parse-scan.c): New targets.
18546         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
18547         * config-lang.in (compilers): Removed gcj, gjavah from the list.
18548         * jcf-parse.c (parse_source_file): Call java_layout_classes and
18549         check for errors even if parse_only.
18550         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
18551         defined.
18552         (yylex): New function. Uses java_lex body.
18553         (java_lex): Removed commented out statement. Remove local variable
18554         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
18555         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
18556         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
18557         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
18558         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
18559         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
18560         where appropriate.
18561         (java_lex_error): Empty if JC1_LITE is defined.
18562         (java_get_line_col): Return 0 if JC1_LITE is defined.
18563         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
18564         SET_MODIFIER_CTX): Moved into the section containing the macros
18565         conditionally defined by JC1_LITE.
18566         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
18567         argument if JC1_LITE is defined.
18568         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
18569         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
18570         is defined.
18571         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
18572         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
18573         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
18574         to different values according to JC1_LITE.
18575         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
18576         declared if JC1_LITE set.
18577         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
18578         defined if JC1_LITE not set.
18579         (struct parser_ctx): Reorganized and skip the jc1 front end part
18580         if JC1_LITE set.
18581         (java_layout_classes): New function definition.
18582         (java_push_parser_context, java_init_lex, yyparse, yylex,
18583         yyerror): Prototype always declared. All other static function
18584         prototypes declared only if JC1_LITE is not set.
18585         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
18586         declared in parse.h.
18587         (java_layout_classes): New function.
18588         (java_complete_expand_methods): No longer layout the class here.
18589         * parse-scan.y: New file.
18590         * jv-scan.c: New file.
18591
18592 1998-08-25  Tom Tromey  <tromey@cygnus.com>
18593
18594         * gjavah.c (main): Handle -friend option.
18595         (friend_specs): New global.
18596         (generate_access): Handle friend_specs.
18597         (process_file): Likewise.
18598         (MAX_FRIENDS): New macro.
18599         (friend_count): New global.
18600         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
18601         Changed all callers.
18602
18603 1998-08-24  Per Bothner  <bothner@cygnus.com>
18604
18605         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
18606         (main):  Handle processing all the entries of a named .zip archive.
18607         * jcf-io.c (jcf_trim_old_input):  New function.
18608         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
18609
18610 1998-08-24  Per Bothner  <bothner@cygnus.com>
18611
18612         * lang.c (flag_assume_compiled):  Make default be on.
18613
18614 1998-08-21  Per Bothner  <bothner@cygnus.com>
18615
18616         * jcf-dump.c:  Add bunches of flags to control output more.
18617         (process_class):  New function;  support printing more than one class.
18618         (main): Support new --print-main and --javap flags.
18619         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
18620         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
18621
18622 1998-08-20  Per Bothner  <bothner@cygnus.com>
18623
18624         Change mangling of dispatch table to match C++ vtable (w/thunks).
18625         * class.c (build_dtable_decl), java-tree.h:  New function.
18626         (make_class_data):  Call it.
18627         * decl.c (init_decl_processing):  Likewise.
18628
18629 1998-08-19  Warren Levy  <warrenl@cygnus.com>
18630
18631         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
18632         soft_anewarray; adjust args passed.
18633         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
18634         match _Jv_NewObjectArray.
18635
18636 1998-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18637
18638         * decl.c (push_labeled_block, pop_labeled_block): New functions.
18639         * expr.c (loopup_label): Call create_label_decl.
18640         (create_label_decl): New function.
18641         (java_lang_expand_expr): Call expand_start_bindings with argument
18642         set to zero.
18643         * java-tree.h Added space after PROTO in function declarations
18644         when necessary.
18645         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
18646         (create_label_decl, push_labeled_block): New function
18647         declarations.
18648         * lex.c (label_id): Initialize.
18649         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
18650         switch.
18651         * parse.h Added space after PROTO in function declarations when
18652         necessary.
18653         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
18654         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
18655         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
18656         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
18657         macros.
18658         (struct parser_ctxt): New fields current_loop,
18659         current_labeled_block.
18660         (build_if_else_statement, patch_if_else_statement,
18661         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
18662         generate_labeled_block, complete_labeled_statement,
18663         build_bc_statement, patch_bc_statement, patch_loop_statement,
18664         build_new_loop, build_loop_body, complete_loop_body): New function
18665         declarations.
18666         * parse.y (java_warning_count): New global variable.
18667         (label_id): New static variable.
18668         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
18669         (block:): Return size_zero_node when block is empty.
18670         (empty_statement:): Return size_zero_node.
18671         (statement:): Implement supplemental action when for_statement: is
18672         reduced.
18673         (label_decl:): New rule.
18674         (labeled_statement:): Rewritten using label_decl. Actions
18675         implemented.
18676         (labeled_statement_nsi:): Likewise.
18677         (if_then_statement): Actions implemented.
18678         (while_expression): New rule.
18679         (while_statement:): Rewritten using while_expression. Actions
18680         implemented.
18681         (while_statement_nsi:): Likewise.
18682         (do_statement_begin:): New rule.
18683         (do_statement:): Rewritten using do_statement_begin. Actions
18684         implemented.
18685         (for_statement:): Rewritten using for_begin. Actions implemented.
18686         (for_statement_nsi:): Likewise.
18687         (for_header:, for_begin:): New rules.
18688         (for_init:): Actions implemented.
18689         (statement_expression_list:, break_statement:,
18690         continue_statement:): Likewise.
18691         (yyerror): Count number of issued warning(s).
18692         (java_report_errors): Report error(s) and/or warning(s).
18693         (java_complete_class): Use build_java_argument_signature to
18694         recompute completed method signature.
18695         (java_check_regular_methods): New locals method_wfl and aflags.
18696         Use method_wfl instead of lookup_cl during error reports. Fixed
18697         indentation and modified some error messages. Use
18698         lang_printable_name in method instead of the DECL_NAME. New code
18699         to issue warnings on methods not overriding corresponding methods
18700         private to a different package.
18701         (java_method_add_stmt): Call add_stmt_to_compound.
18702         (add_stmt_to_compound): New function.
18703         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
18704         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
18705         (build_if_else_statement, patch_if_else_statement,
18706         build_labeled_block, generate_labeled_block,
18707         complete_labeled_statement, build_new_loop, build_loop_body,
18708         complete_loop_body, patch_loop_statement, build_bc_statement,
18709         patch_bc_statement, patch_exit_expr): New functions.
18710         * typeck.c (build_java_signature): Build argument signature before
18711         enclosing it in between parenthesis.
18712
18713 1998-08-17  Warren Levy  <warrenl@cygnus.com>
18714
18715         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
18716         (JAVA_OBJS): Added reminder comment
18717
18718 1998-08-13  Nick Clifton  <nickc@cygnus.com>
18719
18720         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
18721         be interpreted as a long long.
18722
18723 1998-08-13  Warren Levy  <warrenl@cygnus.com>
18724
18725         * decl.c (init_decl_processing): Use _Jv_InitClass, not
18726         soft_initialise_class.  Use _Jv_NewMultiArray, not
18727         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
18728         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
18729         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
18730         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
18731
18732 1998-08-12  Per Bothner  <bothner@cygnus.com>
18733
18734         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
18735         length_identifier_node):  New global tree node constants.
18736         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
18737         Replace uses by super_identifier_node etc.
18738         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
18739
18740         * parse.y (resolve_field_access):  Don't special-case ".length" if
18741         flag_emit_class_files.
18742         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
18743         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
18744         and ARRAY.length.
18745
18746 1998-08-11  Per Bothner  <bothner@cygnus.com>
18747
18748         * decl.c (init_decl_processing): Remove unused method_type_node fields.
18749         * class.c (make_method_value):  Remove init for removed fields.
18750
18751         * class.c (layout_class):  Use build_java_argument_signature.
18752         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
18753
18754         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
18755         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
18756         (build_java_signature):  Don't use push_java_argument_signature.
18757
18758         * typeck.c (lookup_argument_method):  New function.
18759         * parse.y (java_check_regular_methods):  Use lookup_argument_method
18760         instead of lookup_java_method2 followed by lookup_java_method.
18761
18762         * parse.y (check_method_redefinition):  Minor optimization.
18763
18764         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
18765         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
18766
18767 1998-08-10  Tom Tromey  <tromey@cygnus.com>
18768
18769         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
18770         c-pragma.o.
18771
18772         * gjavah.c (java_float_finite): Use K&R-style definition.
18773         (java_double_finite): Likewise.
18774         (generate_access): Now returns void.  Changed all callers.
18775         (last_access_generated): Removed.
18776         (process_file): Only make a single pass over the .class file.
18777
18778 1998-07-29  Per Bothner  <bothner@cygnus.com>
18779
18780         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
18781         for compatibility for G++ (with -fvtable-thunks).
18782         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
18783
18784         * gjavah.c (process_file):  Use public inheritance for super-class.
18785
18786 1998-07-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18787
18788         * lex.c (java_init_lex): Initialize ctxp->package.
18789         * parse.h (struct parser_ctxt): package and package_len replaced
18790         by tree package, an identifier node. Field method_decl_list is
18791         gone. Fixed comments.
18792         (lookup_field_wrapper, merge_qualified_name, not_accessible,
18793         class_in_current_package): New function prototypes.
18794         * parse.y (array_type:): Set class loaded flag on primitive type
18795         arrays.
18796         (package_declaration:): Assign ctxp->package to the
18797         identifier node.
18798         (method_invocation:): Handle invocation of method qualified by
18799         `super'.
18800         (single_type_import_declaration:): Removed ambiguity check.
18801         (java_pop_parser_context): New local variable `next'. Reset and
18802         set IMPORT_CLASSFILE_NAME flags on current and previous import
18803         list.
18804         (java_accstring_lookup): Use new local macro COPY_RETURN.
18805         (lookup_field_wrapper): New function.
18806         (parser_qualified_classname): Use merge_qualified_name.
18807         (parser_check_super_interface): Broaden error message.
18808         (do_resolve_class): Check for qualified class name in the current
18809         compilation unit if appropriate.
18810         (process_imports): Check for already defined classes.
18811         (check_pkg_class_access): Got rid of call to
18812         get_access_flags_from_decl.
18813         (java_complete_expand_methods): Call safe_layout_class based on
18814         the current class size.
18815         (make_qualified_primary): Build a WFL qualification on primary if
18816         none exists.
18817         (merge_qualified_name): New function.
18818         (make_qualified_name): Use merge_qualified_name.
18819         (resolve_expression_name): Use safe_lookup_field.
18820         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
18821         (resolve_qualified_expression_name): Likewise. Check on resolved
18822         element accessibility.
18823         (not_accessible_p, class_in_current_package): New functions.
18824         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
18825         (patch_method_invocation_stmt): Merged common pieces. Check
18826         accessibility of invoked method.
18827         (check_for_static_method_reference): Add returned type in error
18828         message.
18829         (invocation_mode): Get rid of bogus check on PRIVATE methods.
18830         (refine_accessible_methods_list): Merged two conditions in test.
18831         (java_complete_class): Sanity check on stabilize_ref gone.
18832         * zextract.c (read_zip_archive): Cast lseek second argument to long.
18833
18834 1998-07-28  Per Bothner  <bothner@cygnus.com>
18835
18836         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
18837
18838 1998-07-24  Tom Tromey  <tromey@cygnus.com>
18839
18840         * gjavah.c (F_NAN): Removed.
18841         (F_NAN_MASK): New macro.
18842         (F_POSITIVE_INFINITY): Removed.
18843         (F_NEGATIVE_INFINITY): Likewise.
18844         (java_float_finite): Rewrote.
18845         (D_NAN_MASK): Renamed.
18846         (java_double_finite): Rewrote.
18847         (D_POSITIVE_INFINITY): Removed.
18848         (D_NEGATIVE_INFINITY): Likewise.
18849
18850         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
18851         If verbose, print underlying representation of value in hex.
18852
18853 1998-07-24  Per Bothner  <bothner@cygnus.com>
18854
18855         * buffer.h, buffer.c:  New files.
18856         * Makefile.in (JAVA_OBJS):  Add buffer.o.
18857
18858         Support locals variables and writing their debug entries to .class.
18859         * jcf-write.c:  Simplify some by user new buffer type.
18860         (vode_buffer_grow):  Removed.
18861         (struct localvar_info):  New type.
18862         (localsvars, localvartable):  New buffers.
18863         (localvar_alloc, localvar_free):  New functions.
18864         (generate_bytecode_insns):  Handle local variables.
18865         (generate_classfile):  Write LocalVariableTable attribute.
18866
18867 1998-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18868
18869         * jcf-io.c (open_in_zip): Check the zipfile magic number.
18870         * zipfile.h (ZIPMAGIC): New macro.
18871
18872 1998-07-24  Tom Tromey  <tromey@cygnus.com>
18873
18874         * Makefile.in (gjavah.o): Updated dependencies.
18875         (jcf-dump.o): Likewise.
18876         (all.indirect): Use ../gjavah.
18877         (../gjavah$(exeext)): Likewise.
18878         (clean): Don't remove gjavah.
18879         (clean): Remove parse.c, not java/parse.c.
18880         * Make-lang.in (java): Added gjavah.
18881         (gjavah$(exeext)): New target.
18882         (GJAVAH_SOURCES): New macro.
18883         (java.all.build): Added gjavah.
18884         (java.all.cross): Likewise.
18885         (java.rest.encap): Likewise.
18886         * config-lang.in (compilers, stagestuff): Added gjavah.
18887
18888 1998-07-23  Tom Tromey  <tromey@cygnus.com>
18889
18890         * gjavah.c (java_float_finite): New function.
18891         (java_double_finite): Likewise.
18892         (F_POSITIVE_INFINITY): New macro.
18893         (F_NEGATIVE_INFINITY): Likewise.
18894         (F_NAN): Likewise.
18895         (D_POSITIVE_INFINITY): Likewise.
18896         (D_NEGATIVE_INFINITY): Likewise.
18897         (D_NAN): Likewise.
18898         (print_field_info): Use java_float_finite and java_double_finite.
18899
18900 1998-07-23  Per Bothner  <bothner@cygnus.com>
18901
18902         * parse.y (method_header):  Name "this" implicit argument.
18903
18904 1998-07-22  Per Bothner  <bothner@cygnus.com>
18905
18906         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
18907         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
18908         (put_linenumber):  New function.
18909         (generate_bytecode_insns, generate_classfile):  Write line numbers.
18910
18911 1998-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18912
18913         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
18914         (lookup_name, build_known_method_ref, build_class_init,
18915         build_invokevirtual, invoke_build_dtable, match_java_method,
18916         build_field_ref, pushdecl_force_head, build_java_binop,
18917         binary_numeric_promotion, build_decl_no_layout,
18918         build_java_arrayaccess, build_newarray, build_anewarray,
18919         build_java_array_length_access, build_java_arraynull_check): New
18920         extern function prototypes.
18921         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
18922         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
18923         java-tree.h.
18924         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
18925         to NULL
18926         * jcf.h (jcf_out_of_synch): New extern function prototype.
18927         * parse.h: Static/global function implemented in parse.y
18928         prototyped and declarations moved at the end of the file.
18929         (DECL_P): Check that the argument isn't null.
18930         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
18931         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
18932         (QUAL_DECL_TYPE): New macro.
18933         (PARAMS): Macro definition removed.
18934         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
18935         (return_statement:): Call build_return.
18936         (field_access:): Call make_qualified_primary in sub rule.
18937         (method_invocation:): Build method invocation and call
18938         make_qualified_primary when processing primaries.
18939         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
18940         get_type_from_signature.
18941         (java_check_regular_method): Extra integer 0 argument when calling
18942         lookup_java_method2.
18943         (lookup_java_interface_method2): Extra method DECL argument when
18944         calling lookup_java_interface_method2.
18945         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
18946         COMPOUND_EXPR node.
18947         (java_complete_expand_method): Layout current class iff not
18948         already done. Don't process interface's methods.
18949         (java_complete_expand_method): Use super class only if it
18950         exists. Use current class otherwise.
18951         (make_qualified_primary): New function.
18952         (resolve_expression_name): Process qualified expression or
18953         expression from primary the same way.
18954         (resolve_expression_name): Two last arguments to
18955         resolve_field_access are now NULL_TREEs.
18956         (resolve_field_access): New variable is_static. Local field must
18957         be DECLs. is_static computed on field DECLs only. Append code in
18958         where_found to the field access if necessary. Use QUAL_DECL_TYPE
18959         to initialize field_type.
18960         (resolve_qualified_expression_name): New local variable,
18961         previous_call_static and is_static. Handle primaries with function
18962         calls, casts, array references and `this'. `super' now handled as
18963         `(super_class)this'. Use is_static to clarify boolean expressions.
18964         Added code to handle case where a proper handle is required to
18965         access a field. Use QUAL_DECL_TYPE where applicable.
18966         (maybe_access_field): New function.
18967         (patch_method_invocation_stmt): New arguments primary, where,
18968         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
18969         deleted. Use `where' as a type to search from if specified. Check
18970         for static method reference where forbidden. Append primary or
18971         current_this to the argument list if not calling constructor nor
18972         static methods.
18973         (check_for_static_method_reference): New function.
18974         (patch_invoke): Layout the class on which new is done if
18975         necessary.
18976         (lookup_method_invoke): Changed format to report errors on
18977         methods.
18978         (qualify_ambiguous_name): New local variable this_found. Now
18979         handle things from primaries. Method call are considered
18980         expression names.
18981         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
18982         changed into NULLs.
18983         (not_initialized_as_it_should_p): Comply with the new DECL_P.
18984         (java_complete_tree): New case fo RETURN_EXPR. Process function
18985         call arguments in separate function.
18986         (complete_function_arguments): New function.
18987         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
18988         anymore.
18989         (patch_assignment): Take the return function slot into account as
18990         a RHS. Distinguish assignment from a return.
18991         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
18992         when checking methods in interfaces.
18993         (resolve_type_during_patch): NULL argument to unresolve_type_p
18994         instead of NULL_TREE.
18995         (patch_newarray): Fixed typo in comment.
18996         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
18997         (build_return, patch_return): New functions.
18998         * typeck.c (lookup_java_constructor): Fixed typo in comment.
18999
19000 1998-07-21  Per Bothner  <bothner@cygnus.com>
19001
19002         * constants.c (find_name_and_type_constant, find_fieldref_index,
19003         find_methodref_index):  New methods.
19004         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
19005         just return given method.  Also, rename to build_known_method_ref.
19006         (expand_invoke):  Rename call to build_invoke_non_interface.
19007         * java-tree.h, parse.h:  Update prototype.
19008         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
19009         (such as expand_expr_stmt) if flag_emit_class_files.
19010         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
19011         STACK_TARGET, IGNORE_TARGET):  New macros.
19012         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
19013         (generate_bytecode_insn):  New function to generate method's bytecode.
19014         (generate_classfile):  Node generate Code attribute for a method.
19015         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
19016         push_long_const, field_op, adjust_typed_op, maybe_wide):
19017         New functions used by generate_bytecode_insn.
19018
19019         * typeck.c (signature_include_return):  Remove variable.
19020         (push_java_argument_signature, build_java_argument_signature):  New.
19021         (build_java_signature):  Use push_java_argument_signature.
19022         * parse.y:  Use build_java_argument_signature instead of fiddling
19023         with signature_include_return.
19024
19025 1998-07-17  Tom Tromey  <tromey@cygnus.com>
19026
19027         * gjavah.c (print_c_decl): Always generate JArray<>* for array
19028         types.
19029
19030         * Makefile.in (all.indirect): Added gjavah$(exeext).
19031         (gjavah$(exeext)): Added $(exeext).
19032         (clean): Likewise.
19033
19034 1998-07-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19035
19036         * class.c (layout_class): Call to java_layout_parsed_class replace
19037         by safe_layout_class.
19038         * expr.c (build_java_array_length_access): Removed static storage
19039         class in the function definition.
19040         (build_java_arraynull_check): Likewise.
19041         Also fixed typos in two comments.
19042         * lex.c (java_init_lex): Initialize static global kw_length.
19043         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
19044         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
19045         java_lex_error.
19046         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
19047         * parse.h (resolve_no_layout): New static function declaration.
19048         (get_identifier_in_static): Declaration removed.
19049         (java_layout_parsed_class): Function name declaration changed to
19050         safe_layout_class.
19051         (build_newarray_node, patch_newarray, resolve_type_during_patch,
19052         not_initialized_as_it_should_p, build_this): New static function
19053         declarations.
19054         (pushdecl_force_head, build_java_binop, int_fits_type_p,
19055         binary_numeric_promotion, stabilize_reference,
19056         build_decl_no_layout, build_java_arrayaccess): Extern function
19057         declarations moved into their own section.
19058         (build_newarray, build_anewarray, build_java_array_length_access,
19059         build_java_arraynull_check): New extern function declarations.
19060         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
19061         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
19062         fake tree codes.
19063         (CALL_CONSTRUCTOR_P): New macro.
19064         * parse.y (kw_length): New static global tree node.
19065         (return_statement): Tagged <node>.
19066         (RETURN_TK): Tagged <operator>.
19067         (variable_declarator_id:): Build variable declaration with an
19068         empty initialization value if a syntax error was found in the
19069         initialization part of the variable declaration.
19070         (statement_without_trailing_substatement:): return_statement: now
19071         uses the default rule.
19072         (return_statement:): Temporarily fixed to return NULL_TREE.
19073         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
19074         (class_instance_creation_expression:): Class creation rules now
19075         call build_method_invocation upon reduction.
19076         (array_creation_expression:): Rules call build_newarray_node upon
19077         reduction.
19078         (dim_exprs:): Build a list of dimension expressions.
19079         (dim_expr:): Store location of the OSB_TK in the dimension
19080         expression node.
19081         (method_invocation:): Added a new error rule.
19082         (build_unresolved_array_type): WFL argument may also be an array
19083         on a primitive type. Name of the argument changed to reflect this.
19084         (method_declarator): Insert argument type at the beginning of the
19085         argument type list and later reverse the list.
19086         (unresolved_type_p): Argument 'returned' may be optionally
19087         NULL_TREE.
19088         (java_layout_class_from_source): Function renamed
19089         safe_layout_class.
19090         (resolve_and_layout): Now call resolve_no_layout and
19091         safe_layout_class.
19092         (resolve_no_layout): New function.
19093         (purify_type_name): New function.
19094         (complete_class_report_errors): Call purify_type_name during error
19095         report on a type not found.
19096         (process_imports): error_found local variable doesn't need to be
19097         initialized to zero.
19098         (declare_local_variables): New local type_wfl. Fixed typo in error
19099         message. type_wfl assigned to unresolved type and used to register
19100         incomplete type. Build a WFL around the variable initialization
19101         statement so that debug info can be generated on it.
19102         (source_start_java_method): Reverse argument list after they've
19103         been processed.
19104         (current_this): New static global variable.
19105         (java_complete_expand_methods): Set current_this when appropriate.
19106         (resolve_expression_name): Build correct static and non static
19107         field access bearing a simple name.
19108         (resolve_field_access): Resolve the length field of arrays. Handle
19109         f.m() cases.
19110         (patch_method_invocation_stmt): Set the type of the method
19111         invocation to error_mark_node. This value is later overridden by a
19112         valid type, if any. Don't handle qualified constructor invocation
19113         as qualified method invocation. Call lookup_method_invoke with its
19114         new flag. It's no longer necessary to access the selected method
19115         as the value of a tree list. Handle constructor invocation.
19116         (patch_invoke): Reverse argument list when invoking non interface
19117         methods. Insert call to new as the first argument of the
19118         constructor.
19119         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
19120         defined within a final class. Return INVOKE_STATIC if the invoked
19121         method is a constructor.
19122         (lookup_method_invoke): New lc argument is a flag to indicate a
19123         constructor lookup. Now handle constructor lookup. Choose the most
19124         specific method in case several were matching the invocation
19125         requirements. Return a method decl instead of a tree list featuring
19126         one single method decl element.
19127         (refine_accessible_methods_list): New lc flag argument to
19128         indicate that a constructor is being looked up.
19129         (not_initialized_as_it_should_p): New function.
19130         (java_complete_tree): Now process fake tree codes
19131         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
19132         save_expr on resolved function call arguments. Case on
19133         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
19134         (patch_assignment): LHS can be a field access expression. When
19135         dealing with reference, lhs_type is the promoted type of the
19136         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
19137         applicable.
19138         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
19139         (patch_binop): Use not_initialized_as_it_should_p where
19140         applicable.
19141         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
19142         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
19143         where applicable.
19144         (resolve_type_during_patch): New function.
19145         (patch_cast): Call resolve_type_during_patch to resolve type and
19146         report error accordingly.
19147         (patch_array_ref): Use not_initialized_as_it_should_p where
19148         applicable. Array base expression is saved before being
19149         used. Promote the type of an array elements if it contains non
19150         builtin types.
19151         (build_newarray_node, patch_newarray, build_this): New functions.
19152
19153 1998-07-16  Tom Tromey  <tromey@cygnus.com>
19154
19155         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
19156         increment it in `for' statement.
19157         (print_field_info): If number is inf or nan, don't print it.
19158         (print_method_info): If method name is `delete', just ignore it.
19159         (print_c_decl): Special-case jstringArray.
19160
19161         * gjavah.c (help): New function.
19162         (no_argument): New function.
19163         (usage): Changed text.
19164         (main): Rewrote argument handling.  Now handles -v, --help,
19165         --version.
19166         (version): New function.
19167         (found_error): New global.
19168         (main): Return found_error.
19169         (generate_access): Set found_error.
19170         (print_c_decl): Likewise.
19171
19172 1998-07-15  Tom Tromey  <tromey@cygnus.com>
19173
19174         * gjavah.c (print_c_decl): Don't print "," when examining field.
19175         Skip type name when looking at "[L" types.
19176         (process_file): Now static.
19177         (generate_access): Now returns int.
19178         (last_access_generated): New global.
19179         (process_file): Clear last_access_generated; make multiple passes
19180         over the class.
19181         (print_field_info): Just return if generate_access returns true.
19182         (print_method_info): Likewise.  Also, allow <init> functions to
19183         pass through.
19184         (print_c_decl): Added is_init argument.  Print constructors
19185         properly.
19186         (print_cxx_classname): Use UTF8_GET to extract characters from
19187         string.
19188         (print_base_classname): New function.
19189         (print_class_decls): New function.
19190         (process_file): Use it.
19191         (utf8_cmp): New function.
19192
19193 1998-07-13  Nick Clifton  <nickc@cygnus.com>
19194
19195         * lang-options.h: Format changed to match changes in gcc/toplev.c
19196         to implement a --help option.
19197
19198 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
19199
19200         * decl.c (init_decl_processing): Revert change to dtable_type.
19201
19202 1998-07-09  Per Bothner  <bothner@cygnus.com>
19203
19204         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
19205
19206 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
19207
19208         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
19209
19210         * lang.c (lang_init): Default flag_exceptions to 1, without
19211         checking to see if it's 2 first.
19212
19213 1998-07-08  Jeffrey A Law  (law@cygnus.com)
19214
19215         * constants.c: Include "system.h".
19216         * decl.c: Likewise.
19217         * lang.c (flag_new_exceptions): Get via extern now.
19218         (lang_init_options): New functions.  Turn on flag_new_exceptions.
19219
19220 1998-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19221
19222         * lex.c (java_lex): Return 0 when we see an invalid character in
19223         the input.
19224
19225         * lex.c (java_read_char): Specify extra argument when calling
19226         java_lex_error.
19227         (java_read_unicode, java_parse_end_comment,
19228         java_parse_escape_sequence): Likewise,
19229         (java_lex): Specify extra argument when calling
19230         java_lex_error. Test that IDs are beginning with a legal character
19231         for IDs. Handle invalid characters with an error message and a
19232         call to java_lex_error.
19233         (java_lex_error): Adjust column position by new argument
19234         `forward'. Issue an error even if in the middle of reporting an
19235         other error.
19236
19237 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
19238
19239         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
19240         we don't explicitly put a null pointer when we're copying it.
19241
19242 1998-07-07  Tom Tromey  <tromey@cygnus.com>
19243
19244         * gjavah.c (print_cxx_classname): New function.
19245         (super_class_name): Likewise.
19246         (print_super_fields): Removed.
19247         (in_super): Removed.
19248         (print_field_info): Never generate #defines.
19249         (print_c_decl): Changed generated types to match JNI.  No longer
19250         print class name before method name.
19251         (print_method_info): Print "static" before static methods.
19252         Print "virtual" before non-final methods.
19253         (usage): Use exit(1), not exit(-1).
19254         (main): Likewise.
19255         (print_field_info): Use %.17g to print a double.
19256         (last_access): New globals.
19257         (process_file): Initialize last_access.
19258         (usage): Now static.
19259         (ACC_VISIBILITY): New define.
19260         (generate_access): New function.
19261         (print_field_info): Call it.
19262         (print_method_info): Likewise.  Also, generate information for all
19263         methods, not just native methods.  Return void.
19264         (print_c_decl): Return void.
19265         (print_field_info): Return void.
19266
19267 1998-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19268
19269         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
19270         processing the jc1 grammar file. Prefix bison functions and
19271         variables with java_.
19272         (parse.c): Dependencies on parse.h and lex.h
19273         * expr.c (build_java_arrayaccess): Function now global.
19274         * java-tree.h: Comment reorganized to carry on previous
19275         classification effort.
19276         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
19277         RESOLVE_TYPE_NAME_P): New flags on WFLs.
19278         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
19279         java_parse (new prefix java_ generated by bison).
19280         (java_layout_parsed_class, java_register_parsed_class): Function
19281         call removed.
19282         (yyparse): Removed unnecessary call to init_outgoing_cpool.
19283         * lex.c (static tree wfl_op): Variable deleted.
19284         (java_init_lex): Initialize kw_super and kw_this. Initialize more
19285         ctxp fields to NULL_TREE.
19286         (java_lex): No longer create WFL for operators. Filename caching
19287         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
19288         created as STRING_CST and later expanded. Removed extra argument
19289         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
19290         and SUPER.
19291         (build_wfl_node): Removed code in comments.
19292         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
19293         store token and location data in the current bison token.
19294         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
19295         static/extern function declaration at the beginning of the file.
19296         (struct qualification): Data structure definition deleted.
19297         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
19298         (qualify_ambiguous_name): Function declaration modified. Function
19299         now returns nothing.
19300         (build_array_ref, patch_array_ref, make_qualified_name,
19301         resolve_qualified_expression_name, maybe_generate_clinit,
19302         resolve_field_access): New static function declarations.
19303         (build_java_arrayaccess): New extern function declaration.
19304         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
19305         (CALL_EXPR_PRIMARY): Macro deleted.
19306         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
19307         (struct parser_ctxt): Field initialized_final
19308         removed. non_static_initialized, static_initialized: New fields.
19309         * parse.y (static tree kw_super, static tree kw_this): New global
19310         static.
19311         (%union): tree wfl field of operator member replaced by int
19312         location. WFLs are non longer created for operators.
19313         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
19314         (qualified_name:): Now calls make_qualified_name to build the
19315         identifier.
19316         (type_declaration:): Consider generating <clinit> when class
19317         parsing completed.
19318         (variable_declarator:): Directly build an assignment node when the
19319         variable is initialized when declared.
19320         (this_or_super:): Build a WFL and set current location when THIS
19321         or SUPER are parsed.
19322         (expression_statement:): Wrap statement around a WFL.
19323         (primary_no_new_array:): Fixed typo. Changed value returned by
19324         THIS_TK because of its new type (temporary).
19325         (dim_exprs:): Temporary fix because of OSB_TK's new type.
19326         (field_access:): Build qualified name with SUPER.
19327         (method_invocation:): Fixed returned value because of SUPER's new
19328         type.
19329         (array_access:): Use OSB_TK location information.
19330         (post_increment_expression:, post_decrement_expression:,
19331         unary_expression:, pre_increment_expression:,
19332         pre_decrement_expression:, unary_expression_not_plus_minus:,
19333         cast_expression:, multiplicative_expression:,
19334         additive_expression:, shift_expression:, relational_expression:,
19335         equality_expression:, and_expression:, exclusive_or_expression:,
19336         inclusive_or_expression:, conditional_and_expression:,
19337         conditional_or_expression:, assignment:): Use new location/token
19338         information available on operators.
19339         (create_class): Set super_decl_type to NULL_TREE when processing
19340         java.lang.Object.
19341         (register_fields): Field initialization is now a MODIFY_EXPR
19342         node. Chain initialization code to the matching lists (according
19343         to the field declaration modifiers).
19344         (maybe_generate_clinit): New function.
19345         (method_header): Don't set method's DECL_NAME to a WFL when adding
19346         methods to java.lang.Object.
19347         (resolve_and_layout): Now can return NULL_TREE if the type
19348         resolution fails. Otherwise, return the class DECL instead of its
19349         TYPE.
19350         (check_method_redefinition): Don't patch method DECL_NAME if it
19351         belongs to java.lang.Object.
19352         (process_imports): Simply assign error_found to the value returned
19353         by check_pkg_class_access.
19354         (declare_local_variables): Don't use their init statements (if
19355         any) when parsing error were previously found. Reuse MODIFY_EXPR
19356         build during parsing as an init statement.
19357         (java_method_add_stmt): Now return the current method body.
19358         (java_layout_parsed_class, java_register_parsed_class): Functions
19359         removed.
19360         (java_complete_expand_methods): Initialize the constant pool on a
19361         per class basis. Layout the classes before expanding their method
19362         bodies. Don't try expand artificial constructor code if error were
19363         found. Make the classes data and register them if no error were
19364         found.
19365         (java_complete_expand_method): Retrieve an artificial constructor
19366         argument list before entering its body. Assign the top block to
19367         the artificial constructor function body and set types of declared
19368         blocks and compound statements to void. Walk method body if not an
19369         artificial constructor.
19370         (make_qualified_name, cut_identifier_in_qualified): New functions.
19371         (resolve_expression_name): Fixed comments. Save/restore the
19372         current class CLASS_LOADED_P flag value. Build non qualified
19373         static field access and handle qualified expression names.
19374         (resolve_field_access, resolve_qualified_expression_name): New
19375         functions.
19376         (patch_method_invocation_stmt): Use the new expression resolution
19377         scheme, calling resolve_field_access when the function call is
19378         resolved as an expression.
19379         (qualify_ambiguous_name): Function rewritten to work on qualified
19380         expression produced by make_qualified_name.
19381         (java_complete_tree): Promote type when function's argument are
19382         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
19383         the assignment to discover further errors if RHS is a expression
19384         name that fails to evaluate. Declare LHS initialized even though
19385         the assignment failed. Don't use the location variable and removed
19386         extra argument in patch function calls. Now handle the ARRAY_REF
19387         case and build internal string representation when STRING_CSTs are
19388         walked.
19389         (build_method_invocation): Don't wrap function call around a WFL.
19390         (build_assignment): Likewise. Use the operator location
19391         information.
19392         (patch_assignment): Handle array access LHSs. Handle error
19393         provenance, resulting in a better error report.
19394         (build_binop): Use op_location from operator as binop location
19395         information.
19396         (build_unaryop, build_incdec, build_cast): Likewise.
19397         (patch_binop): Extract location information from the node. Fixed
19398         typo in error message.
19399         (patch_unary_op): Extract location information from the node.
19400         (build_array_ref, patch_array_ref): New functions.
19401
19402 1998-07-01  Tom Tromey  <tromey@cygnus.com>
19403
19404         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
19405         match _Jv_IsInstanceOf.
19406         * decl.c (init_decl_processing): Use _Jv_NewArray, not
19407         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
19408
19409 1998-06-30  Tom Tromey  <tromey@cygnus.com>
19410
19411         * decl.c (init_decl_processing): Functions are now named
19412         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
19413
19414 1998-06-29  Per Bothner  <bothner@cygnus.com>
19415
19416         * java-tree.h (load_class):  Add prototype.
19417         * class.c (is_compiled_class):  Add missing arg to load_class.
19418         * expr.c (expand_java_NEW):  Call load_class.
19419         * parse.y (process_import):  Removed bogus use of void return value.
19420
19421 1998-06-25  Per Bothner  <bothner@cygnus.com>
19422
19423         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
19424         Function name is "_Jv_Throw" instead of "soft_athrow".
19425         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
19426         Function name is "_Jv_AllocObject" instead of "soft_new".
19427         Takes an extra parameter (object size).
19428         * expr.c:  Update calls.
19429
19430 1998-06-24  Per Bothner  <bothner@cygnus.com>
19431
19432         * lex.c (java_get_line_col):  Handle end-of-file.
19433         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
19434
19435 1998-06-24  Andrew MacLeod  <amacleod@cygnus.com>
19436
19437         * lang.c (lang_init): Make -fexceptions the default.
19438         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
19439         exception handling is not turned on.
19440
19441 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
19442
19443         * lang.c (flag_new_exceptions): Make this this default.
19444         * decl.c (end_java_method): Call emit_handlers.
19445         * except.c (method_init_exceptions): Set language code and version.
19446         (expand_start_java_handler): Enable exception, and call
19447         expand_eh_region_start.
19448         (expand_end_java_handler): Enable exception, and set up catch blocks.
19449         (emit_handlers): New routine to generate the saved handlers.
19450         * java-except.h (emit_handlers): Add prototype.
19451
19452 1998-06-12  Per Bothner  <bothner@cygnus.com>
19453
19454         We used to have three different representations of the constant pool:
19455         the CPool structure, the tree_constant_pool, and the constructures
19456         used to build the Class object (which may need class and string
19457         constants) in compiled code.  None were appropriate for compiling
19458         to .class files, so I did a major overhaul.
19459
19460         First, the tree_constant_pool array was removed.  Things were
19461         modified to the CPool structure in the JCF could be used.
19462         Second, a "capacity" field was added to the CPool, and functions
19463         written to search for a matching constant, adding one if not found.
19464         The code that generated the Class object was changed to use a CPool.
19465         The actual TREE_LISTs used to build the CONSTRUCTORs used for
19466         the static Class object are now only in build_constants_constructor.
19467         Finally, I wrote code which can generate a .class file (including its
19468         constant pool) from the RECORD_TYPE of a class.  This is a big step
19469         on the way to compiling Java source into .class files.
19470
19471         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
19472         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
19473
19474         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
19475         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
19476         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
19477         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
19478         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
19479         (lang_type):  Removed constant_pool field.
19480         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
19481         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
19482         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
19483         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
19484
19485         * constants.c (current_constant_pool_tags, current_constant_pool_data,
19486         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
19487         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
19488         (set_constant_entry, find_constant1, find_constant2,
19489         find_class_constant, count_constant_pool_bytes, write_constant_pool,
19490         find_utf8_constant, find_class_or_string_constant):  New functions.
19491
19492         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
19493         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
19494         (give_name_to_class, get_class_constant):  Likewise.
19495         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
19496         (get_name_and_type_constant, get_ref_constant):  Removed.
19497         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
19498         * parse.y:  Don't save/restore tree_constant_pool.
19499         * verify.c (verify_jvm_instructions):  Update for new approach.
19500         * expr.c (expand_invoke, expand_java_field_op): Likewise.
19501
19502         * lang-options.h:  Added -femit-class-file, -femit-class-files.
19503         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
19504         (lang_f_options):  Added "emit-class-file(s)".
19505
19506         * expr.c (build_java_arrayaccess):  Generate more efficient array
19507         bounds checking, by using unsigned compare.
19508
19509         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
19510
19511 1998-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19512
19513         * parse.h: New comment on the handling of unresolved type
19514         identifiers. JDEPs are now part of the jdep_code enum.
19515         (typedef struct jdep): Now use enum jdep_code or int, depending on
19516         availability. Both are narrowed down to an 8 bits bitfield.
19517         (CALL_EXPR_PRIMARY): Fixed comment.
19518
19519 1998-06-10  Tom Tromey  <tromey@cygnus.com>
19520
19521         * Make-lang.in (java): Added gjavac and jvgenmain.
19522         (java.start.encap): Depend on gjavac.
19523         (java.rest.encap): Depend on jvgenmain.
19524
19525         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
19526         (JAVA_CROSS_NAME): Likewise.
19527         (java.all.build): Depend on jvgenmain and gjavac.
19528         (java.all.cross): Depend on jvgenmain and gjavac-cross.
19529         (jvgenmain$(exeext)): New target.
19530         (java.install-common): Wrote.
19531         * config-lang.in (compilers, stagestuff): Added gjavac and
19532         jvgenmain.
19533
19534 1998-06-10  Dave Brolley  <brolley@cygnus.com>
19535
19536         * lang.c (lang_decode_option): New argc/argv interface.
19537
19538 1998-06-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19539
19540         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
19541         * decl.c (build_decl_no_layout): New function.
19542         * expr.c (java_lang_expand_expr): Layout declarations found in
19543         blocks before they're pushed.
19544         * jcf-parse.c (load_class): Save current line when parsing class
19545         file.
19546         (parse_source_file): Register class before expanding their
19547         methods.
19548         * lang.c (put_decl_node): Produce `null' when `void *' is
19549         processed.
19550         * lex.c (static tree wfl_op): New static global, for error report
19551         on casts.
19552         (java_init_lex): wfl_operator and wfl_op initialized
19553         here. Filename caching added for wfl_op. Return wfl_op when `(' is
19554         parsed.
19555         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
19556         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
19557         build_unresolved_array_type): New static function definitions.
19558         (build_decl_no_layout): New extern function declared.
19559         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
19560         faulty modifier exists.
19561         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
19562         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
19563         (UNARY_PLUS_EXPR): New fake operator.
19564         (struct parser_ctxt): New field osb_number.
19565         * parse.y (static tree wfl_operator): New static WFL for operator
19566         bound error messages.
19567         (DECR_TK, INCR_TK): Moved.
19568         (OP_TK): Tagged <operator>.
19569         (array_type:): Now call build_unresolved_array_type.
19570         (dim_expr:): Count the number of '[' seen.
19571         (post_increment_expression, post_decrement_expression,
19572         pre_increment_expression, pre_decrement_expression,
19573         unary_expression_not_plus_minus, unary_expression:): Actions are
19574         now building the corresponding unary expressions.
19575         (cast_expression:): Actions are now building cast expressions.
19576         (build_unresolved_array_type): New function.
19577         (create_interface): Reset the number of declared interfaces.
19578         (create_class): Likewise.
19579         (method_header): Methods declared within the scope of an interface
19580         are now implicitly set public and abstract.
19581         (java_complete_class): Variable's and parameter's type are patched
19582         with a promoted type.
19583         (declare_local_variables): Resolved non builtin types are promoted
19584         before being used to build a variable decl. Removed type patch
19585         posted on variable initialization statement.
19586         (source_start_java_method): Use build_decl_no_layout to build the
19587         decl of a parameter of incomplete type.
19588         (java_register_parsed_class): Process interfaces too. Call
19589         rest_of_decl_compilation on each processed class declarations.
19590         (java_complete_expand_methods): Don't attempt to expand things in
19591         interfaces.
19592         (java_complete_tree): Process CONVERT_EXPR, even though it always
19593         has a type. Propagate error_mark_node to node's type too. Promote
19594         method's call argument type and return error_mark_node if
19595         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
19596         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
19597         handle unary operator nodes.
19598         (build_assignment): Added comment.
19599         (print_int_node): New function.
19600         (patch_assignment): New second argument. New error handling. Use
19601         print_int_node. Handle references. Use can_cast_to_p to issue
19602         different error message according to the context and check upon
19603         the initialization of the RHS.
19604         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
19605         (operator_string): Handle more operators.
19606         (patch_binop): No longer use a function static
19607         wfl_operator. Improved error message on shift distance.
19608         (build_unaryop, build_incdec, build_cast, patch_unaryop,
19609         patch_cast): New functions.
19610
19611 1998-06-05  Per Bothner  <bothner@cygnus.com>
19612
19613         * jvspec.c:  New file.
19614         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
19615
19616         * java-tree.h (identifier_subst):  Add declaration.
19617
19618 1998-06-04  Tom Tromey  <tromey@cygnus.com>
19619
19620         * jvgenmain.c (main): Generate call to JvRunMain.
19621
19622         * class.c (make_class_data): Push value for "sync_info" field.
19623         * decl.c (init_decl_processing): Push "sync_info" field.
19624
19625 1998-06-03  Per Bothner  <bothner@cygnus.com>
19626
19627         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
19628         Java (source) name, not signature.
19629         Set TYPE_ALIGN to (at least) that of element_type.
19630
19631 1998-06-02  Per Bothner  <bothner@cygnus.com>
19632
19633         * class.c:  Moved classname-mangling-rekated code to ...
19634         * mangle.c:  ... this new file.
19635         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
19636         * Makefile.in:  Update for above changes.
19637
19638 1998-06-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19639
19640         * expr.c (truthvalue_conversion): Convert integer and floating
19641         point value to their truth value.
19642         * lex.c (java_lex): Handle the `null' literal.
19643         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
19644         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
19645         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
19646         New macros.
19647
19648         * parse.y: Reorganization/documentation on token declaration.
19649         (binop_lookup[]): New added new tree codes.
19650         (relational_expression): Build corresponding binary operators.
19651         (equality_expression, conditional_and_expression,
19652         conditional_or_expression): Likewise.
19653         (java_complete_class): Fix crash in debug message.
19654         (java_complete_tree): Check initialization of method call
19655         arguments. Further bogus node evaluation to detect more error
19656         during assignments. Handles more binary operators.
19657         (patch_assignment): Use DECL_P.
19658         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
19659         code.
19660         (operator_string): Handle more case. Compacted source.
19661         (patch_binop): Changed function comment. Checking for
19662         uninitialized first operand takes the compound assignment into
19663         account and uses DECL_P. Checking for uninitialized second operand
19664         delayed to routine's end. Use macros to issue type bound error
19665         messages and issue messages on both operands if their types are
19666         different. Force fixed type into node. Handle all binary
19667         operators.
19668
19669 1998-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19670
19671         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
19672         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
19673         build operator node and return tokens.
19674         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
19675         * parse.h (java_complete_tree): Changed returned type in prototype.
19676         (build_method_invocation, build_assignment, patch_assignment,
19677         patch_binop): New static function declarations.
19678         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
19679         BUILD_EXPR_WFL): New macros.
19680         * parse.y (enum tree_code binop_lookup[]): New static for token to
19681         TREE_CODE lookup.
19682         (%union): Parser union has new sub-structure `operator'.
19683         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
19684         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
19685         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
19686         ASSIGN_ANY_TK): Tokens tagged `operator'.
19687         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
19688         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
19689         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
19690         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
19691         (assignment_operator:): Rule tagged `operator'.
19692         (expression_statement:): Re-installed default rule.
19693         (method_invocation:): Sub rules call build_method_invocation.
19694         (postfix_expression:): Don't attempt to resolve name here. Just
19695         return an ID.
19696         (multiplicative_expression:): Sub-rules build corresponding binop
19697         expression node.
19698         (additive_expression:, shift_expression:, and_expression:,
19699         exclusive_or_expression:, inclusive_or_expression:): Likewise.
19700         (assignment:): Sub rule invoke build_assignment.
19701         (assignment_operator:): Default rules on sub rules.
19702         (force_error): Added documentation on this variable.
19703         (declare_local_variables): Build initialization calling
19704         build_assignment.
19705         (expand_start_java_method): Removed unused rtx declaration. Mark
19706         arguments as already initialized.
19707         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
19708         (java_complete_expand_methods): Don't process next method if
19709         completion of the previous one triggered errors.
19710         (java_complete_expand_method): Call source_end_java_method if no
19711         error were found during completion.
19712         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
19713         locals declaratilon. Handle names found within a class. Return
19714         error_mark_node when things aren't found.
19715         (patch_method_invocation_stmt): Return error_mark_node on failures.
19716         (patch_invoke): Removed unused local. Return the correct node.
19717         (java_complete_tree): Now returns a value. The BLOCK section binds
19718         local identifiers and the type of a BLOCK is now void. Assign the
19719         result of operand completion on COMPOUND_EXPR. Assign the
19720         encapsulated node of a WFL to the result of its completion, except
19721         when the node is an identifier. Now handle MODIFY_EXPR and several
19722         binary operators. Return error_mark_node on errors.
19723         (build_method_invocation, build_assignment, patch_assignment,
19724         build_binop, operator_string, patch_binop): New functions.
19725         * typeck.c (binary_numeric_promotion): New function.
19726
19727 1998-05-21  Per Bothner  <bothner@cygnus.com>
19728
19729         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
19730         Replace most uses of ident_subst by identifier_subst.
19731
19732         * class.c (push_class_static_dummy_field):  Removed function.
19733         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
19734         instead of looking got "class" static field.  Create that decl here.
19735         (class_identifier_node):  Removed;  no longer needed.
19736         (init_class_processing):  Don't init class_identifier_node.
19737         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
19738         Do nreverse 0 times (instead of twice) for Object and Class.
19739         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
19740
19741 1998-05-20  Per Bothner  <bothner@cygnus.com>
19742
19743         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
19744         while initializing linenumber_count and linenumber_table.
19745         Do it before init_function_start (which calls emit_line_note).
19746         * expr.c (expand_byte_code):  Don't need to clear lineno here.
19747
19748 1998-05-18  Tom Tromey  <tromey@cygnus.com>
19749
19750         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
19751         then mangle number as _N_.
19752
19753         * class.c (mangle_class_field): New function.
19754         (build_class_ref): Set assembler name of class reference using
19755         mangle_class_field.
19756         (push_class_static_dummy_field): Likewise.
19757
19758 1998-05-17  Michael Tiemann <tiemann@cygnus.com>
19759
19760         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
19761         of assigning to TREE_CODE.  The latter method exploits a feature
19762         of GCC that is not ANSI compliant.
19763
19764 1998-05-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19765
19766         * decl.c (pushdecl_force_head): New function.
19767         (pushlevel): Removed conditional printf.
19768         (complete_start_java_method): Don't enter local variable scope if
19769         function is compiled from source code.
19770         * expr.c: parse.h now included
19771         (java_lang_expand_expr): New function.
19772         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
19773         printf. Terminate buffer when doing directories.
19774         * jcf-parse.c (parse_source_file): Call lang_init_source before
19775         parsing and before code generation.
19776         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
19777         use printf if the macro is defined.
19778         * lang.c (lang_init): Install lang_expand_expr hook on
19779         java_lang_expand_expr.
19780         (java_dummy_print): New function.
19781         (lang_init_source): New function.
19782         * lex.c (java_lex): Remember location of an opening brace at the
19783         second nesting level.
19784         (java_is_eol): Unget character seen after a CR if it is EOF.
19785         * parse.h: Now includes lex.h
19786         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
19787         printf if the macro is defined.
19788         (expand_start_java_method, build_expr_block, enter_block,
19789         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
19790         New static function declarations.
19791         (pushdecl_force_head): New extern function declaration.
19792         (INCOMPLETE_TYPE_P): New macro.
19793         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
19794         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
19795         BLOCK_EXPR_ORIGIN): New macros.
19796         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
19797         DECL_SOURCE_LINE_LAST): New macros.
19798         (struct parser_ctxt): Removed field current_method_decl, redundant
19799         with the field current_function_decl. Added fields
19800         first_ccb_indent1 and pending_block.
19801         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
19802         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
19803         tagged <node>
19804         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
19805         (compilation_unit:): Cosmetic on sub rule.
19806         (type_declaration:): Cosmetic on sub rules. Added an error rule.
19807         (variable_initializer:): Installed default rule on expression:.
19808         (method_declaration:): method_header: starts a new
19809         method. method_body: installs the function body, absorbs blocks
19810         emitted for temporary variable scopings, pops function's body block
19811         and merges function's last statement lineno in DECL_SOURCE_LINE.
19812         (method_body:): Installed default rules.
19813         (block:): Call enter_block when an opening brace is seen.  Absorb
19814         scoping blocks and call exit_block when a closing brace is seen.
19815         (block_statement:): Cosmetic changes.
19816         (method_invocation:): Create WFL around CALL_EXPR node.
19817         (patch_stage): Added comment around definition.
19818         (method_header): Try to use first_ccb_indent1 as the first line of
19819         the method, so BP debug info are emitted at the first opening
19820         brace of the function. If the function has no body, use the
19821         location of the function's name. Override currently defined method
19822         name with the matching WFL so we can point redefinition errors
19823         using the location where the function's name was declared.
19824         (check_abstract_method_header): Interprets DECL_NAME as an
19825         identifier or as a WFL, accordingly.
19826         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
19827         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
19828         location and name information out of it and reinstall DECL_NAME to
19829         its original identifier node value.
19830         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
19831         function's source code).
19832         (read_import_dir): Test the value returned by find_class and issue
19833         a fatal accordingly.
19834         (declare_local_variables): Push a new block for the scope of the
19835         new variable(s) if code has been already generated at that nesting
19836         level. Pinpoint redefinition errors using the variable id
19837         WFLs. Generate initialization code if necessary. If the variable
19838         type is incomplete, register a patch on its decl.
19839         (source_start_java_method): Rewritten. Define a new block for the
19840         function's parameters. Build parameter decl out of function's
19841         arguments and register them for a patch if their types are
19842         incomplete.
19843         (expand_start_java_method): Includes the part of
19844         source_start_java_method that was pushing the parameter decls and
19845         completing the method start code.
19846         (source_end_java_method): Removed call the expand_end_bindings and
19847         poplevel (already taken care of). Reinstall function's arguments
19848         and get function's last line of code before calling
19849         expand_function_end.
19850         (java_method_add_stmt): New comment before the function's
19851         code. Complement the second operand of the current COMPOUND_EXPR
19852         if necessary.
19853         (java_complete_expand_methods): Don't generate debug info on line
19854         zero when expanding a generated constructor.
19855         (java_complete_expand_method): Set start and end line numbers for
19856         a artificially generated constructor to one and manually call
19857         enter_block and exit_block when defining it. For all methods:
19858         expand function's start calling the new expand_start_java_method
19859         and invoke java_complete_tree on the effective method's body, if
19860         any.
19861         (resolve_expression_name): Now use lookup_name_in_blocks to search
19862         local variable decls and print out an error when variables are
19863         undefined.
19864         (patch_method_invocation_stmt): Inserted comment before the
19865         function's code.
19866         (lookup_method_invoke): Chain method's arguments using chainon
19867         with the current arg list as a second argument. Inserted missing
19868         IDENTIFIER_POINTER when reporting an error on methods not found.
19869         (refine_accessible_methods_list): Don't retain constructors.
19870         (patch_arguments): Function removed.
19871         (java_complete_tree): Inserted comment before the function's
19872         code. New case for BLOCKs. Moved the WFL case a bit
19873         further. Complete function's arguments.
19874         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
19875         maybe_absorb_scoping_blocks): New functions.
19876
19877 1998-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19878
19879         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
19880         previously set.
19881         * jcf-parse.c (parse_source_file, java_error_count): New forward
19882         and extern declarations.
19883         (java_parse_abort_on_error): Macro moved.
19884         (jcf_parse_source): fatal called if fopen fails. Now calls
19885         parse_source_file.
19886         (parse_source_file): New parse_only parameter. Reflects the
19887         elimination of the second pass.
19888         (yyparse): parse_source_file called with argument set to 0.
19889         * jcf.h (JCF_ZERO): Sets java_source to zero.
19890         * lex.c (java_init_lex): pass argument is gone. Function modified
19891         to be called once during the analysis of a file.
19892         (java_unget_unicode): Fixed typo in fatal message.
19893         (java_get_line_col): Likewise.
19894         (java_lval): Likewise. String literals no longer built during
19895         second pass.
19896         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
19897         account.
19898         * parse.h (MODIFIER_WFL): New macro.
19899         (parse_check_super, parser_check_super_interface): Now return int.
19900         (parser_chain_incomplete_item, not_builtin_p,
19901         complete_method_decl): Declarations removed.
19902         (build_method_invocation_stmt, build_invoke): Renamed using the
19903         `patch' instead of `build'
19904         (register-incomplete_type, obtain_incomplete_type,
19905         java_complete_tree, java_complete_expand_method,
19906         unresolved_type_p, create_jdep_list): New function declarations.
19907         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
19908         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
19909         (jdep): New typedef on new struct _jdep.
19910         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
19911         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
19912         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
19913         JDEP_RESOLVED_P): New macros.
19914         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
19915         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
19916         JDEP_VARIABLE): New enum values and jdep kinds.
19917         (jdeplist): New typedef on struct _jdeplist.
19918         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
19919         macros.
19920         (CALL_EXPR_PRIMARY): New macro.
19921         (struct parser_ctxt): Fields java_pass, current_method_decl,
19922         method_decl_list deleted. New field jdeplist.
19923         (INCOMPLETE_P): Macro deleted.
19924         * parse.y (single_type_import_declaration:): Removed pass switch.
19925         (type_import_on_demand_declaration): Likewise.
19926         (field_declaration:): Removed pass switch on all sub rules.
19927         (class_declaration:): Call the complete_class_decl removed on
19928         class_body rules.
19929         (method_declaration:): Removed second pass switch. No longer chain
19930         methods decl when method_header reduced.
19931         (method_header:): Sub rules no longer depend on pass switch.
19932         (method_declarator:): Likewise.
19933         (method_body:): Likewise.
19934         (abstract_method_declaration:): Likewise.
19935         (block_statement:): Likewise.
19936         (local_variable_declaration:): Likewise.
19937         (argument_list:): Likewise.
19938         (method_invocation:): Likewise. Call to build_method_invocation_stmt
19939         removed. Partial CLASS_EXPR tree node built instead.
19940         (postfix_expression:): Removed pass switch on all sub rules.
19941         (java_pop_parser_context): Free classd_list content.
19942         (yyerror): Call obstrack_grow0 to finalize error message.
19943         (check_class_interface_creation): Comment modified to reflect new
19944         returned value meaning. Removed second pass switch. Return 1 if an
19945         error was found, 0 otherwise. Adjust pointer on filename if a
19946         leading path separator was found.
19947         (maybe_create_class_interface_decl): Removed first pass switch
19948         when linking the class decl to the class_list. Install a new
19949         jdep_list for the class.
19950         (add_superinterfaces): List of unresolved interfaces is
19951         gone. Unresolved interfaces are directly added to the current
19952         dependencies list.
19953         (create_interface): Second pass shortcut removed.
19954         ctpx->modifier_ctx access through MODIFIER_WFL.
19955         (create_class): Second pass shortcut removed. Call to
19956         register_incomplete_type replaces the call to
19957         parser_chain_incomplete_item.
19958         (complete_class_decl): Function removed.
19959         (duplicate_declaration_error): New way of retrieving redeclared
19960         item type.
19961         (register_fields): Call to lookup_modifier_cl replaced by
19962         MODIFIER_WFL. New way of handling unresolved type, using
19963         unresolved_type_p and obtain_incomplete_type.
19964         register_incomplete_type replaces call to parser_chain_incomplete_item.
19965         (patch_stage): New static global variable.
19966         (method_header): New way of handling unresolved type, using
19967         unresolved_type_p and obtain_incomplete_type. patch_stage used to
19968         indicates that the method decl needs to be patched.
19969         (check_abstract_method_header): Call to lookup_modifier_cl
19970         replaced by MODIFIER_WFL.
19971         (method_declarator): Incomplete argument type are registered
19972         calling register_incomplete_type. Patch on the declared method is
19973         issued in that case.
19974         (unresolved_type_p): New function.
19975         (parser_check_super_interface): New comment to reflect function's
19976         modified returned type (int). Function and has a new argument
19977         this_wfl. Call to parse_error_context uses this_wfl instead of
19978         relying on lookup_cl.
19979         (parser_check_super): Comment reflects function's new returned
19980         type (int). Function returns nonzero value on error.
19981         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
19982         register_incomplete_type, jdep_resolve_class): New functions to
19983         handle incomplete types in declarations.
19984         (java_complete_class): Rewritten to work with the new incomplete
19985         type handling scheme.
19986         (complete_class_report_errors): Likewise.
19987         (complete_method_decl): Removed: it jobs is now handled by
19988         java_complete_class.
19989         (do_resolve_class): Class loaded in not already loaded and not
19990         found in Java source code.
19991         (java_check_regular_methods, java_check_abstract_methods): Don't
19992         call complete_method_decl anymore.
19993         (lookup_modifier_cl, not_builtin_p): Functions deleted.
19994         (read_import_dir): Got rid of the pass number dependency.
19995         (declare_local_variables): New handling of unresolved types (patch
19996         issued).
19997         (source_start_java_method): New parameter level. Function called
19998         with level set to 1 when argument types are potentially
19999         unresolved.  Called to complete the job with level set to 2 once
20000         types are complete.
20001         (source_end_java_method): Call to permanent_allocation
20002         removed. Waiting to be replaced by a more suitable obstack
20003         management.
20004         (java_complete_expand_methods, java_complete_expand_method,
20005         java_expand_finals): New functions.
20006         (build_method_invocation_stmt): Renamed
20007         patch_method_invocation_stmt. Extracts function call expression
20008         (wfl) and arguments (args) from CALL_EXPR tree operands.
20009         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
20010         call. Patch the function and argument operand of the CALL_EXPR
20011         tree argument.
20012         (patch_argument, java_complete_tree): New functions.
20013
20014 1998-04-20  Per Bothner  <bothner@cygnus.com>
20015
20016         Recover from missing fields and methods (i.e. error instead of fatal).
20017         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
20018         * expr.c (expand_invoke):  Recover from missing method.
20019         (expand_java_field_op):  Recover from missing field.
20020         Inline references to java.lang.{Integer,Char,...}.TYPE.
20021         * typeck.c (get_type_from_signature), java-tree.h:  New function.
20022         * class.c (add_method):  Use get_type_from_signature.
20023         (build_class_ref):  Handle a class that was not found.
20024         * typeck.c (convert):  Handle conversion to pointers (for convenience).
20025         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
20026         instead of lookup_field to handle missing fields.
20027
20028         * jcf-parse.c (process_zip_dir):  Set java_source.
20029
20030 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
20031
20032         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
20033
20034 1998-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20035
20036         * jcf-parse.c (load_class): Don't change input_filename before
20037         calling jcf_parse_source (but still do it before calling
20038         jcf_parse).
20039         (jcf_parse_source): Assign input_filename after having saved the
20040         parser context.
20041         * lex.c (java_init_lex): Chain a WFL node to the import on demand
20042         list. ctxp->modifier_ctx zeroed according to its new
20043         definition. ctxp->filename initialized. Removed
20044         JAVA_MODIFIER_CTX_UNMARK.
20045         (java_unget_unicode): Update the character based column position.
20046         (java_allocate_new_line): ref_count not used anymore. Always free
20047         ctxp->p_line. Initialize c_line->char_col to 0.
20048         (java_get_unicode): Update the character based column position.
20049         (java_lex): Use ctxp->elc to store current position in source
20050         file, at the beginning of the parsed token. Set modifier_ctx entry
20051         corresponding to the parse modifier to a WFL node. Return a WFL
20052         node when an identifier is parsed.
20053         (java_lex_error): Now uses ctxp->elc to store current position in
20054         source.
20055         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
20056         * lex.h (build_wfl_node): New function definitions.
20057         (struct java_line): ref_count and next fields are gone. New field
20058         char_col.
20059         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
20060         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
20061         (JAVA_COLUMN_DELTA): New macro.
20062         (java_lc): New typedef on new struct _java_lc.
20063         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
20064         (parse_error_context, parse_warning_context): Changed prototypes.
20065         (java_get_line_col): Added as an available global function.
20066         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
20067         (IC_DECL): Replaced by macro IC_TYPE
20068         (DEPEND_WFL): New macro.
20069         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
20070         wrong modifier.
20071         (exit_java_complete_class): Removed a commented out statement.
20072         (struct parser_ctxt): Added comments on fields. modifier_ctx is
20073         now an array of tree nodes. Deleted fields line_list and
20074         e_line. New field elc, to replace e_line.
20075         * parse.y (array_type:): Build WFL node.
20076         (qualified_name:): Build a single WFL node out of two. Retain
20077         the location information of the first node in the resulting node.
20078         (package_declaration:): Use package name as a WFL node
20079         (single_type_import_declaration:): Use imported name as a WFL node.
20080         (type_import_on_demand_declaration:): Use root of the imported
20081         packages as a WFL node.
20082         (field_declaration:): Removed unused local variable cl.
20083         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
20084         (yyerror): New static elc. Removed static error_line, error_pos.
20085         New local code_from_source. Save ctxp->elc into elc at the first
20086         pass. Call java_get_line_col to get a string of the line where
20087         the error occurred.
20088         (debug_line): Removed static function.
20089         (parse_error_context, parse_warning_context): Parameter cl is now
20090         a WFL node. Use its value to initialize ctxp->elc.
20091         (redefinition_error): Parameter cl is now a WFL node.
20092         (parse_add_interface): New parameter wfl. No longer call
20093         lookup_cl, use wfl instead.
20094         (check_class_interface_creation): Parameter cl is now a WFL node.
20095         (maybe_create_class_interface_decl): Likewise.
20096         (add_superinterfaces): New function.
20097         (create_interface): Removed local cl, node, super_decl,
20098         super_decl_type.  Function now uses id as a WFL node. Better
20099         warning/error report on obsolete or forbidden mix of
20100         modifiers. Now calls add_superinterfaces to register interfaces.
20101         (create_class): Removed local cl, node. Local variable id is used
20102         as a WFL node. Better error report on forbidden modifier
20103         mix. Uses add_superinterfaces to register interfaces.
20104         (find_field): Argument cl is now a WFL node. Now store the WFL
20105         node of a fields that needs to be checked for their
20106         initialization.
20107         (method_header): Local variable node non longer used. Local
20108         variable id replaces cl.
20109         (check_modifiers_consistency): Local variable cl is now a WFL
20110         node.
20111         (method_declarator): Local variable cl replaced by parameter id.
20112         (parser_qualified_name): Now uses parameter name as a WFL node.
20113         (parser_check_super_interface): New parameter wfl, for achieve
20114         greater accuracy during error reports.
20115         (parser_chain_incomplete_item): New parameter named location. Used,
20116         along the decl, to construct the incomplete item node.
20117         (java_complete_class): resolve_class now uses WFL node extracted
20118         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
20119         where appropriate.
20120         (complete_method_decl): Unresolved function's argument types are WFL.
20121         (resolve_class): Parameter cl is now a WFL node.
20122         (resolve_and_layout): Likewise.
20123         (do_resolve_class): Likewise. Try first to use cl and then do the
20124         lookup on the decl when calling check_pkg_class_access.
20125         (complete_class_report_errors): Use IC_TYPE in place of
20126         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
20127         instead of doing a lookup over the decl.
20128         (java_check_final): Use WFL info from field tree list.
20129         (lookup_cl): Rewritten and returns a statically defined WFL node.
20130         (lookup_modifier_cl): Now uses information from WFL nodes.
20131         (process_imports): Likewise.
20132         (read_import_dir): name and cl arguments replaced by a single WFL
20133         node. Function modified accordingly.
20134         (find_in_imports_on_demand): Now uses WFL node.
20135         (check_pkg_class_access): cl argument is now a WFL node.
20136         (declare_local_variables): Fixed to use WFL nodes.
20137         (resolve_expression_name): Likewise.
20138         (build_method_invocation_stmt): name_combo argument renamed
20139         wfl. Function modified to use WFL nodes.
20140         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
20141         (lookup_method_invoke): cl is now a WFL node. Added missing
20142         IDENTIFIER_POINTER to class type decl name.
20143
20144 1998-04-14  Dave Brolley  <brolley@cygnus.com>
20145
20146         * lang.c (init_parse): Now returns char* containing the filename.
20147
20148 1998-04-10  Per Bothner  <bothner@cygnus.com>
20149
20150         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
20151
20152         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
20153         * class.c (make_class_data):  If flag_assume_compiled, initial class
20154         state is CSTATE_PREPARED; make superclass and interfaces direct
20155         references, rather than constant pool indexes.
20156
20157 1998-04-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20158
20159         * parser.y: Include flags.h. Removed debug variable pl.
20160         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
20161         (block:): Likewise.
20162         (labeled_statement_nsi:): Generate debug info when reducing
20163         expression_statement:.
20164         (check_pkg_class_access): get_access_flags_from_decl invocation
20165         fixed for new CLASS_* flags location.
20166         (source_end_java_method): Save/restore parser context when
20167         entering/leaving this routine. Restore lineno to its right value
20168         before calling expand_end_bindings.
20169         (build_method_invocation_stmt): build_invoke called with the
20170         current line information.
20171         (build_invoke): New argument cl. Wrap the function call around a
20172         wfl node.
20173         (refine_accessible_methods_list): Changed comment, removed
20174         unnecessary code.
20175         * parse.h: Fixed typo in comments.
20176         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
20177         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
20178         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
20179         parser_ccb_indent.
20180         * lex.c (java_lex): Record the last closing curly bracket of a
20181         function.
20182         * jcf-parse.c (jcf_parse_source): Now calls
20183         java_check_methods. Clarified comment, fixed typo.
20184
20185 1998-04-09  Dave Brolley  <brolley@cygnus.com>
20186
20187         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
20188         (finish_parse): Expose for non USE_CPPLIB builds.
20189
20190 1998-04-08  Jeffrey A Law  (law@cygnus.com)
20191
20192         * lang.c (lang_print_xnode): New function.
20193
20194 1998-04-03  Per Bothner  <bothner@cygnus.com>
20195
20196         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
20197         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
20198         used to build a class's dispatch table.
20199         (make_class_data):  Generate dispatch table if flag_assume_compiled.
20200         Set dtable of class object to address of class_dtable_decl.
20201
20202         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
20203         be volatile and have side effects - generates better code.
20204
20205         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
20206         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
20207
20208         * expr.c (expand_invoke):  If class is final, method is
20209         effectively final, so can call it directly.
20210
20211         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
20212
20213         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
20214
20215 1998-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20216
20217         * parse.y (build_method_invocation_stmt): Removed extra argument
20218         to build_invoke.
20219
20220 1998-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20221
20222         * expr.c (dtable_indent): Now static global.
20223         (expand_invoke): Now call invoke_build_dtable and
20224         build_invokevirtual.
20225         (invoke_build_dtable, build_invokevirtual): New functions.
20226         * jcf-io.c (find_class): Defer issuing a warning by setting
20227         jcf->outofsynch to 1.
20228         * jcf-parse.c (jcf_out_of_synch): New function.
20229         (load_class): Test this_jcf.outofsynch flag and call
20230         jcf_out_of_synch accordingly.
20231         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
20232         comment indentation.
20233         * lex.c (java_get_unicode): Fixed code indentation.
20234         (java_lex): Create string literal. Fixed typo. Removed several
20235         premature obstack_free.
20236         * parse.h: New enums for name resolution and invocation mode.
20237         (struct qualification): New data structure.
20238         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
20239         (do_resolve_class, build_method_invocation_stmt,
20240         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
20241         debug_line, identical_subpath_p, invocation_mode,
20242         refine_accessible_methods_list, build_invoke,
20243         lookup_method_invoke): New functions declared.
20244         (build_invokevirtual, invoke_build_dtable, match_java_method,
20245         build_field_ref, jcf_out_of_synch): New references to external
20246         functions.
20247         (struct parse_ctxt): Removed artificial_constructor field.
20248         * parse.y: (array_type:): Type defined for this rule.
20249         (class_type:): Installed default rule for interface_type:.
20250         (array_type:): Now build Java array type.
20251         (qualified_name:): Now use obstack_grow0.
20252         (method_declaration:): Skip the artificial constructor added to
20253         the list, if any.
20254         (abstract_method_declaration:): Execute the code only during pass 1.
20255         (block:): Installed default rule in block_statements:.
20256         (block_statement:): Add the statement to the method during pass 2.
20257         (statement_expression): Installed default rule for
20258         method_invocation:.
20259         (argument_list:): Added code to build the argument list.
20260         (method_invocation:): Added call to create the method invocation
20261         node.
20262         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
20263         (debug_line): New function for debug.
20264         (complete_class_decl): No longer do something during pass 1.
20265         (method_header): Use BUILD_PTR_FROM_NAME.
20266         (parser_qualified_classname): Use obstack_grow0. Removed bogus
20267         obstack_free.
20268         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
20269         function's main comment.
20270         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
20271         classes.
20272         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
20273         (resolve_class): Now works with arrays.
20274         (do_resolve_class, resolve_and_layout): New functions.
20275         (java_check_regular_methods): Reverse method list before and after
20276         having processed it. No longer set ctxp->artificial_constructor.
20277         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
20278         accordingly. Fixed typo in issued error message. Now use
20279         obstack_grow0.
20280         (find_in_imports_on_demand): Now use obstack_grow0.
20281         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
20282         (source_end_java_method): Call expand_expr_stmt instead of
20283         expand_expr. Calls it before calling expand_function_end.
20284         (java_method_add_stmt): Do nothing if errors were found during
20285         parsing.
20286         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
20287         (build_method_invocation_stmt, build_invoke, invocation_mode,
20288         lookup_method_invoke, refine_accessible_methods_list,
20289         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
20290         New functions.
20291         * typeck.c (build_java_signature): Properly end method signature
20292         if return type skipped.
20293         (match_java_method): New function.
20294
20295 1998-03-16  Per Bothner  <bothner@cygnus.com>
20296
20297         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
20298
20299 1998-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20300
20301         * expr.c (build_invoke_non_interface): New function.
20302         (methods_ident, ncode_ident): Now static globals.
20303         (expand_invoke): Use build_invoke_non_interface.
20304         * java-tree.h (struct lang_decl): New field function_decl_body.
20305         (DECL_FUNCTION_BODY): New macro.
20306         * jcf-parse.c (jcf_parse_source): Deeper check before setting
20307         CLASS_FROM_SOURCE_P.
20308         (parse_source_file): Fixed typos. Call java_layout_parsed_class
20309         before starting pass 2. Call to java_generate_parsed_class replaced
20310         by java_register_parsed_class.
20311         * lex.c: Fixed typo in header. Some line width related formating.
20312         * lex.h: Some line width related formating.
20313         * parse.h (source_end_java_method, resolve_expression_name,
20314         complete_class_decl, maybe_create_class_interface_decl,
20315         check_class_interface_creation): New static function declarations.
20316         (java_layout_parsed_class, java_method_add_stmt): New function
20317         declarations.
20318         (struct parser_ctxt): Field mark_class_generate removed. New
20319         fields class_list and artificial_constructor.
20320         * parse.y: Fixed typo in header.
20321         (class_declaration:): Call complete_class_decl when class body
20322         parsed.
20323         (method_declaration:): Call source_end_java_method in pass 2 when
20324         the method body is defined.
20325         (postfix_expression:): Do expression name resolution on sub-rule
20326         name during pass 2.
20327         (create_class, create_interface): Merged common pieces.
20328         (check_class_interface_creation, maybe_create_class_interface_decl):
20329         New functions.
20330         (complete_class_decl): New function.
20331         (register_fields): Fixed line width related typo.
20332         (method_header): Correctly skip first argument when fixing
20333         argument line. Changed the loop.
20334         (java_check_circular_reference): Now use ctxp->class_list.
20335         (java_complete_class): Removed start/stop marking.
20336         (java_check_regular_methods): Now takes a class decl as an
20337         argument.  Add default constructor if none were encountered.
20338         (java_check_methods): Now use ctxp->class_list. Changed call to
20339         java_check_regular_methods.
20340         (source_start_java_method): Set DECL_ARG_TYPE for each function
20341         arguments.
20342         (source_end_java_method, java_method_add_stmt): New functions.
20343         (java_generate_parsed_class): No longer exists.
20344         (java_layout_parsed_class, java_register_parsed_class): New functions.
20345         (resolve_expression_name): New function.
20346
20347 1998-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20348
20349         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
20350         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
20351         until pass initializations are done. Call read_import_dir with
20352         pass set to 0.
20353         * parse.h: (lookup_modifier_cl): New function declared.
20354         (INTERFACE_FIELD_MODIFIERS): New macro.
20355         (OBSOLETE_MODIFIER_WARNING): New macro.
20356         * parse.y: (register_fields): Class type and current field name in
20357         local variables. Check modifier(s) if adding field(s) to an interface.
20358         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
20359         and report errors using the faulty modifier line context.
20360         (lookup_modifier_cl): New function.
20361         (read_import_dir): Detect and report default import processing
20362         failure.
20363
20364 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
20365
20366         Add a pair of -fassume-compiled/-fno-assume-compiled options.
20367         * class.c (is_compiled_class): Return 1 after making sure it
20368         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
20369         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
20370         * java-tree.h (flag_assume_compiled): Add decl.
20371         * lang.c (lang_f_options): Add the flag.
20372         (flag_assume_compiled): Add decl, default to 0.
20373
20374 1998-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20375
20376         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
20377         (is_compiled_class): Likewise.
20378         (layout_class): Likewise.
20379         (layout_class): Detect and lay out classes defined in source code.
20380         (interface_of_p, add_interface_do, may_add_interface): New
20381         function.
20382         (add_interface): Now use add_interface_do.
20383         (add_method_1): New function.
20384         (add_method): Now use add_method_1.
20385         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
20386         (complete_start_java_method): New function.
20387         (start_java_mehod): Now call complete_start_java_method.
20388         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
20389         (expand_invoke): Likewise and fixed typo.
20390         *gjava.c: (print_super_field): Use new argument to find_class
20391         DO_CLASS_FILE.
20392         (main): Likewise.
20393         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
20394         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
20395         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
20396         IDENTIFIER_NODE.
20397         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
20398         (add_method_1, push_class): New prototypes.
20399         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
20400         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
20401         directory where the class was found.
20402         (find_class): New argument DO_CLASS_FILE. Function find_class
20403         modified accordingly.
20404         *jcf-parse.c: (fix_class_path): New function.
20405         (load_class): Use new VERBOSE argument. load_class now finds and
20406         loads/parses .class/.java files. Save read_state of current_jcf
20407         if necessary.
20408         (java_parser_abort_on_error): New macro.
20409         (jcf_parse_source, parse_source_file): New function.
20410         (jcf_parse): Fixed typo.
20411         (yyparse): Call parse_source_file () only.
20412         (process_zip_dir): Fixed typo, fix zdir->filename_length when
20413         writing the real class name back in the zip directory entry.
20414         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
20415         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
20416         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
20417         (find_class): Prototype fixed.
20418         *lex.c: Added 1998 time stamp.
20419         Removed all static global variables, moved into the parser
20420         context data structure.. Now include unistd.h if SEEK_SET not
20421         defined.
20422         (java_init_lex): Rewritten.
20423         (java_sneak_unicode): Modified current unicode access in current line.
20424         (java_unget_unicode): Likewise.
20425         (java_allocate_new_line): New allocation management.
20426         (java_read_char): Modified access and storage of unget_utf8_value.
20427         New way of processing current unicode.
20428         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
20429         (java_get_unicode): Now use the parser context.
20430         (java_lineterminator): Likewise.
20431         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
20432         of the reentrant parser implementation. Function now use the
20433         parser context data structure and java_lval. Fixed production of
20434         the float and double constant "out of range" error message. Fixed
20435         obstack use. Return integer value when hitting a modifier. Now
20436         return type for TRUE, FALSE and other predefined types. Return
20437         identifier as a TREE_LIST list containing the current line context
20438         as the TREE_VALUE sub-node.
20439         (java_unicode_2_utf8): Fixed typo in declaration.
20440         (java_lex_error): Now use the parser context data structure.
20441         *lex.h: Added 1998 time stamp.
20442         (struct java_line): New fields ref_count and next.
20443         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
20444         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
20445         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
20446         *parse.h: Added 1998 time stamp.
20447         (java_parse_source_file): Renamed from parse_source_file.
20448         (YYERROR_NOW, YYNOT_TWICE): Fixed.
20449         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
20450         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
20451         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
20452         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
20453         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
20454         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
20455         (struct parser_ctxt): New data structure to keep the parser context.
20456         *parse.y: Added 1998 time stamp, got rid of static global variables.
20457         (java_error_count, ctxp): New global variables.
20458         (%union): New value field.
20459         (numeric_type, integral_type): Rules removed.
20460         (primitive_type): Rule defined to handle integral, float, double and
20461         boolean types.
20462         (qualified_name, package_declaration,
20463         single_type_import_declaration, type_import_on_demand_declaration,
20464         modifiers, class_declaration, super, interfaces,
20465         interface_type_list, class_body, field_declaration,
20466         field_declaration, variable_declarators, variable_declarator,
20467         variable_declarator_id, method_declaration, method_header,
20468         formal_parameter_list, formal_parameter, method_body, block,
20469         static, interface_declaration, extends_interfaces,
20470         abstract_method_declaration, local_variable_declarators): Rules now
20471         define actions.
20472         (force_error, do_warning): New global statics.
20473         (push_parser_context, parser_context_save_global,
20474         parser_context_restore_global, pop_parser_context): New functions.
20475         (yyerror): Now uses the global parser context. Fixed use of obstack.
20476         (parse_error, parse_error_context, parse_warning_context,
20477         java_accstring_lookup, redefinition_error, check_modifiers,
20478         parser_add_interface, create_interface, create_class, find_field,
20479         duplicate_declaration_error, register_fields, method_header,
20480         check_modifiers_consistency, check_abstract_method_header,
20481         method_declarator, parser_qualified_classname,
20482         parser_check_super_interface, parser_check_super,
20483         parser_chain_incomplete_item, java_check_circular_reference,
20484         layout_class_from_source, java_complete_class,
20485         complete_method_decl, resolve_class, complete_class_report_errors,
20486         java_check_final, check_method_redefinition,
20487         java_check_regular_methods, java_check_abstract_methods,
20488         java_check_methods, lookup_java_interface_method2,
20489         lookup_java_method2, lookup_cl, find_name_in_single_imports,
20490         process_imports, find_in_imports, read_import_entry,
20491         read_import_dir, find_in_imports_on_demand,
20492         check_pkg_class_access, not_builtin_p, declare_local_variables,
20493         source_start_java_method, java_generate_parsed_class): New
20494         functions.
20495         *typeck.c: (signature_include_return): New global variable.
20496         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
20497         to add the function returned type in the signature.
20498
20499 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
20500
20501         * jcf-io.c (open_in_zip): Use strncmp and LEN.
20502
20503 1998-01-29  Dave Brolley  <brolley@cygnus.com>
20504
20505         * Make-lang.in (java.info): Added.
20506         (java.install-info): Added
20507
20508 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
20509
20510         * Makefile.in (clean): Also remove java/parse.c.
20511
20512 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
20513
20514         Add a pair of -fbounds-check/-fno-bounds-check options.
20515         * lang.c (lang_decode_option): Add code to grok arguments.
20516         (flag_bounds_check): Add decl.
20517         (lang_f_options): New array w/ the option in it.
20518         * java-tree.h (flag_bounds_check): Add decl.
20519         * lang-options.h: New file.
20520         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
20521         of a static macro value.
20522         (JAVA_ARRAY_EXCEPTION): Delete macro.
20523
20524 1998-01-23  Per Bothner  <bothner@cygnus.com>
20525
20526         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
20527         * expr.c (build_anewarray):  Add missing promote_type.
20528
20529 1998-01-22  Per Bothner  <bothner@cygnus.com>
20530
20531         Add array types with known length to optimize bounds checking.
20532         * typeck.c (build_java_array_type):  Take length parameter.
20533         (java_array_type_length, build_prim_array_type):  New functions.
20534         * java-tree.h:  Update for new functions.
20535         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
20536         * class.c:  Use build_prim_array_type.
20537         * expr.c (can_widen_reference_to):  Handle known-length array types.
20538         (verify_jvm_instructions):  Keep track of integer push instructions
20539         followed by newarray/anewarray, so we can build known-length arrays.
20540         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
20541         (java_array_data_offset):  New function.
20542         (build_java_array_length_access):  New function.  Optimize if constant.
20543         (build_java_arrayaccess):  Constant fold bounds check.
20544         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
20545         (build_newarray, build_anewarray):  New functions.
20546         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
20547         * verify.c (merge_types):  Handle known-lengh array types.
20548
20549 1998-01-19  Per Bothner  <bothner@cygnus.com>
20550
20551         * expr.c (expand_byte_code):  Fix performace bug, which caused
20552         searching linenumber_table to be linear rather than constant.
20553
20554 1997-12-12  Per Bothner  <bothner@cygnus.com>
20555
20556         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
20557
20558         * decl.c, java-tree.h (soft_fmod_node):  New global.
20559         * decl.c (init_decl_processing):  Define __builtin_fmod.
20560         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
20561         using __builtin_fmod.
20562
20563 1997-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20564
20565         * keyword.h: New file, output of keyword.gperf as processed by
20566         gperf.
20567         * lex.c (java_lex_init): Initialize java_error_flag.
20568         * parse.c (YYERROR_NOW): Uses java_error_flag.
20569         * parse.y: New static java_error_flag. Useless definition of
20570         buffer_error gone.
20571         * parse.y (java_error): Portable error recovery using
20572         java_error_flag (not yet completely tuned).
20573
20574 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
20575
20576         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
20577
20578 1997-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20579
20580         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
20581         (parse.c, lex.c, keyword.h): New rules for Java source code
20582         front-end.
20583         * parse.c: Renamed into jcf-parse.c.
20584         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
20585         * keyword.gperf: New file, Java keywords.
20586         * parse.y: New file, Java language grammar.
20587         * parse.h: New file, Java language grammar definitions.
20588         * lex.c: New file, Java language lexer.
20589         * lex.h: New file, Java language lexer definitions.
20590
20591 1997-12-03  Per Bothner  <bothner@cygnus.com>
20592
20593         * decl.c (clinit_identifier_node), java-tree.h:  New global.
20594         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
20595         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
20596         * expr.c (expand_java_field_op):  Check for invalid assignment
20597         to final field.
20598
20599         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
20600
20601 1997-10-27  Per Bothner  <bothner@cygnus.com>
20602
20603         * verify.c (verify_jvm_instructions):  When processing a handler,
20604         attempt to set the current_subr to the right value.
20605         (More complicated code combines Sep 17 and Oct 22 versions.)
20606
20607 1997-10-24  Per Bothner  <bothner@cygnus.com>
20608
20609         * class.c (push_class):  Figure out (guess) name of source file.
20610         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
20611         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
20612         (parse_class_file):  Change return type from int to void.
20613         Call debug_start_source_file/debug_end_source_file.
20614
20615         * expr.c (build_java_binop):  Fix masking 2nd operand.
20616         * decl.c (init_decl_processing):  Set sizetype first.
20617
20618 1997-10-22  Per Bothner  <bothner@cygnus.com>
20619
20620         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
20621         (Revert Sep 17 change.)
20622
20623 1997-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20624
20625         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
20626         .class extension in their name and fix thing so we don't process
20627         them parse_zip_file_entries().
20628         (parse_zip_file_entries): Cleaned unused local variables.
20629
20630 1997-10-20  Per Bothner  <bothner@cygnus.com>
20631
20632         * expr.c (can_widen_reference_to):  Allows equal array element types.
20633         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
20634         * jcf-dump.c (RET):  Get (and print) index.
20635
20636         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
20637         Promote element type to POINTER_TYPE.
20638
20639 1997-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20640
20641         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
20642         find_in_current_zip, jcf_figure_file_type): Moved from
20643         jcf-reader.c to parse.c.
20644         * zextract.c: (read_zip_archive): takes file_comment_length possible
20645         field into account.
20646
20647 1997-10-20  Per Bothner  <bothner@cygnus.com>
20648
20649         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
20650
20651         * verify.c (merge_types):  Handle array types even better ...
20652
20653 1997-10-17  Per Bothner  <bothner@cygnus.com>
20654
20655         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
20656
20657         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
20658         * class.c (make_class_data):  Don't build fields_decl if no fields.
20659         When building fields_decl, skip if DECL_ARTIFICIAL.
20660
20661         * expr.c (java_stack_swap):  Update stack_type_map.
20662         * verify.c (merge_types):  Handle array types better.
20663
20664 1997-10-15  Per Bothner  <bothner@cygnus.com>
20665
20666         * class.c (add_field):  Don't promote short integral fields to
20667         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
20668         * expr.c (push_value):  Promote and convert short integral values.
20669
20670         * decl.c, java-tree.h (integer_two_node):  New constant node.
20671         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
20672
20673 1997-10-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20674
20675         * class.c (append_gpp_mangled_type): Use function argument
20676         unpromoted type to generate mangled name.
20677
20678 1997-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20679
20680         * constants.c (build_constant_data_ref): Now uses current_class
20681         instead of main_class.
20682         (build_constants_constructor): Now uses current_class instead of
20683         main_class.
20684         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
20685         of the global variable SeepZipFiles done here.
20686         * zextract.c (read_zip_archive): extra_field optional field taken
20687         into account while computing the position of the class file in the
20688         archive.
20689         * verify.c (verify_jvm_instructions): Use current_jcf to search
20690         the constant pool.
20691         * parse.c (load_class): First search for the class to load in the
20692         current zip file. Saves current_jcf (restored before returning
20693         from that function). Don't call JCF_FINISH in the class was found
20694         in the current ZIP file.
20695         (jcf_parse): If the class was found in the current ZIP file, save
20696         its tree_constant_pool (for later reuse).
20697         (parse_class_file): New function. Process each method defined in
20698         the current class and record the class as to be later registered.
20699         (yyparse): Rewritten. Figure the type of the current file and switch
20700         accordingly.
20701         * lang.c: New global variable current_jcf.
20702         (lang_init): Removed compiling_from_source test (done later, in
20703         yyparse). Removed call the jcf_parse ().
20704         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
20705         (typedef struct JCF): New fields seen_in_zip (to mark a class found
20706         in the current ZIP file) and zip_offset (offset to the class data in
20707         the current zip file).
20708         * jcf-reader.c: zipfile.h included.
20709         localToFile: New ZipFileCache static global variable
20710         (parse_zip_file_entries): New function. Browse the current ZIP
20711         file directory and process each class found.
20712         (process_zip_dir): New function. Register each class found in the
20713         ZIP file directory. The class aren't parsed but a valid JCF is
20714         link to each of them.
20715         (find_in_current_zip): New function. Search for a class in the
20716         current ZIP file directory. If found, prepare the class so that it
20717         can be loaded.
20718         (jcf_figure_file_type): New function. Examine the file structure
20719         to figure a class file, a ZIP file. If none of these categories are
20720         matched, a source file is assumed.
20721         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
20722         SeenZipFile: New global variable.
20723         (open_in_zip): Use zipmember's length to accelerate the search for
20724         a member. If zipmember was NULL and zip file successfully read,
20725         return 0.
20726         * java-tree.h: New global variable current_jcf declared.  Added
20727         declaration for current_constant_pool_tags, current_constant_pool_data,
20728         current_constant_pool_length, current_constant_pool_data_ref.
20729         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
20730         store the JCF of classes seen in a zip file) and tree *constant_pool
20731         (to save a loaded class constant pool). current_class declared here.
20732         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
20733         retrieve method_ref_constant.
20734         (PUSHC): java_push_constant_from_pool now uses current_jcf.
20735         (OBJECT): get_class_constant now uses current_jcf.
20736         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
20737         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
20738         (expand_invoke): Now uses current_class instead of main_class
20739         (build_class_init): Now uses current_class instead of main_class
20740         * class.c: New static global variable registered_class.
20741         (register_class): New function.
20742         (emit_register_class): Modified to use registered_class instead of
20743         main_class
20744         (is_compiled_class): Now take into account class seen in the archive.
20745
20746 1997-10-06  Per Bothner  <bothner@cygnus.com>
20747
20748         * except.h:  Renamed to: java-except.h.
20749         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
20750         * except.c:  Add semi-working (commented out) implementation.
20751
20752         * expr.c (expand_iinc):  Add needed flush_quick_stack.
20753         * parse.c (set_source_filename):  New function.
20754         (give_name_to_class):  Set input_filename from package.classname.java.
20755
20756         * jcf-io.c (find_class):  Don't look first in ".".
20757
20758 1997-10-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20759
20760         * zextract.c (read_zip_archive): Now takes into account the
20761         extra_field field.
20762         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
20763
20764 1997-09-20  Per Bothner  <bothner@cygnus.com>
20765
20766         * constants.c, java-tree.h (build_internal_class_name):  New function.
20767         (alloc_class_constant):  Re-implement using build_internal_class_name.
20768         * class.c (make_class_data):  Likewise.
20769         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
20770
20771 1997-09-17  Per Bothner  <bothner@cygnus.com>
20772
20773         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
20774         to NULL before pushing an exception handler target.
20775
20776         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
20777         (java_stack_swap, java_stack_dup):  Re-write to be safe from
20778         clobbering registers.
20779         (build_class_init):  New function.
20780
20781 1997-09-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20782
20783         * typeck.c (build_java_array_type): Temporary use
20784         permanent_obstack to create the array 'length' field.
20785         * expr.c (lookup_label): Temporay use permanent_obstack to create
20786         label if not found.
20787         * class.c (push_super_field): Tempory use permanent_obstack.
20788
20789 1997-09-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20790
20791         * typeck.c (type_for_mode): Now handles double_type_node and
20792         float_type_node.
20793         * verify.c (verify_jvm_instructions): The instruction following
20794         the wide bytecode is checked. OPCODE_ret added to the list of
20795         wide.
20796
20797 1997-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20798
20799         * class.c (make_class): Temporary use permanent_obstack. Set the
20800         class CLASS_P field to 1.
20801         (push_class): Temporary use permanent_obstack.
20802         (set_super_info): Temporary use permanent_obstack.
20803         (add_method): Temporary use permanent_obstack, set
20804         METHOD_TRANSIENT().
20805         (add_field): Temporary use permanent_obstack. Sets
20806         FIELD_VOLATILE() and FIELD_TRANSIENT().
20807         (build_class_ref): Temporary use permanent_obstack if the class
20808         isn't compiled.
20809         (build_static_field_ref): Temporary use permanent_obstack when
20810         creating field's rtl.
20811         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
20812         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
20813         and fields. Function finalized, as far as flag handling.
20814         (push_class_static_dummy_field): Temporary use permanent_obstack.
20815         (emit_register_class): Force generation of class registration at
20816         -O3 or deeper.
20817         * decl.c (end_java_method): Call permanent_allocation() before
20818         returning.
20819         * expr.c (can_widen_reference_to): Added comment to interface
20820         handling, fixed typo.
20821         (lookup_field): Now uses CLASS_P() to correct FIXME
20822         (expand_invoke): Verification on public && !static &&
20823         !abstract moved into soft_lookupinterfacemethod (kaffe).
20824         Use Object class dtable if objectref is an array when expanding
20825         invokeinterface.
20826         (java_push_constant_from_pool): Temporary use permanent_obstack
20827         for CONSTANT_string
20828         * parse.c (get_ref_constant): Temporary use permanent_obstack to
20829         create constant references.
20830         (get_constant): Temporary use permanent_obstack to create constant.
20831         (load_class): Temporary use permanent_obstack to load class.
20832         (jcf_parse): Temporary use permanent_obstack to perform class
20833         layout.
20834         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
20835         (build_java_signature): Temporary use permanent_obstack.
20836         * verify.c: (verify_jvm_instruction): removed unnecessary verification
20837         on ACC_SUPER flag.
20838         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
20839         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
20840         (CLASS_P): Defined
20841
20842 1997-09-11  Per Bothner  <bothner@cygnus.com>
20843
20844         * class.c (append_gpp_mangled_type):  Fix typo.
20845         (emit_register_class):  Use main_class to get class object, rather
20846         than looking for no-longer-existing static decl starting with _CL.
20847         * typeck.c (parse_signature_type):  Promote array element type
20848         if it is a RECORD_TYPE.
20849
20850 1997-09-10  Per Bothner  <bothner@cygnus.com>
20851
20852         * class.c (push_class_static_dummy_field):  New function.
20853         (mangle_static_field):  New. Do G++-style mangling of static fields.
20854         (layout_class):  Mandle static fields here, not in add_field.
20855         (build_class_ref):  The class object is now a dummy static field.
20856         * decl.c (find_local_variable):  Look for best, instead of first match.
20857         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
20858         (build_java_athrow):  Don't check here if exception is Throwable.
20859         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
20860         (TYPE_USED):  Removed.  No longer used ...
20861         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
20862         * verify.c (push_pending_label):  New function.
20863         (push_pending_block):  Renamed to check_pending_block.
20864         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
20865         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
20866         re-checking possible handlers) after a store (less wasted work).
20867         Check for null handler (finally) before calling add_handler.
20868         Various changes to (finally?) correctly handle try/finally.
20869
20870 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
20871
20872         * class.c: Include stdio.h.
20873
20874 1997-09-04  Per Bothner  <bothner@cygnus.com>
20875
20876         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
20877         to make sure class is initialized before static/special invoke.
20878
20879         * verify.c (verify_jvm_instructions):  On a store instruction,
20880         call find_local_variable to force pre-allocation of decl and rtx.
20881         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
20882
20883 1997-09-03  Per Bothner  <bothner@cygnus.com>
20884
20885         * class.c (build_class_ref):   Strip off "promoted_" if need be.
20886         (make_field_value): Call build_java_signature when needed.
20887         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
20888         * expr.c (build_java_athrow):  Don't push_value of exception.
20889         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
20890         match specification of [fd]cmp[lg] for NaNs.
20891         (expand_byte_code):  Add support for exception handler ranges.
20892         * except.c:  Add skeleton for EH code-generation.
20893         * verify.c (merge_types):  Treat all promoted integral types as equal.
20894         * constants.c (build_constants_constructor):  To force creation of
20895         current_constant_pool_data_ref, call build_constant_data_ref.
20896
20897         * javaop.def (lload):  Fix typo.
20898         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
20899
20900 1997-09-02  Brendan Kehoe  <brendan@lisa.cygnus.com>
20901
20902         * parse.c: Don't include function.h.
20903
20904 1997-08-27  Per Bothner  <bothner@cygnus.com>
20905
20906         * except.[ch]:  New files.
20907         * Makefile.in (JAVA_OBJS):  Add except.o
20908         * expr.c:  Temporary warning about unimplemented exceptions.
20909         * verify.c:  Verify exception handlers.
20910
20911         * jcf-dump.c (disassemble_method):  Print exception table.
20912
20913 1997-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20914
20915         * expr.c (verify_jvm_instructions): Started a thorough
20916         verification of invoke* bytecodes.
20917         (expand_byte_code): flush quick stack if PC is the target of a
20918         branch.  and undef RET (conflicting with config/i386/i386.h).
20919         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
20920         used.
20921         (expand_invoke): Now handles invokeinterface and do more
20922         verification according to the bytecode.
20923         (lookup_field): Don't try to load the class if processing
20924         dtable_type.
20925         (can_widen_reference_to): Now handles interfaces.
20926         * decl.c (init_decl_processing): New global variable
20927         soft_lookupinterfacemethod_node, declared in java-tree.h.
20928         Call set_super_info on string_type_node.
20929         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
20930         defined.
20931         * class.c (set_super_info): Fills the CLASS_* flags according to
20932         access_flags.
20933         (get_access_flags_from_decl): Handles all class flags.
20934
20935 1997-08-26  Per Bothner  <bothner@cygnus.com>
20936
20937         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
20938         * parse.c (yyparse):  Check for abstract method, and missing code.
20939         * expr.c (expand_byte_code):  Change interface.
20940         * lang.c (put_decl_node):  Print promoted types prettier.
20941         * verify.c (verify_jvm_instruction):  Change interface.
20942         Partial support for scanning exception table.
20943         For load instructions, handle promoted integral types.
20944
20945 1997-08-21  Per Bothner  <bothner@cygnus.com>
20946
20947         * verify.c:  New file, with contents moved from expr.c.
20948         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
20949         * typeck.c (is_array_type_p):  Moved here from expr.c.
20950         * java-tree.h:  Add some now-needed function declarations.
20951         * Makefile.in (JAVA_OBJS): Added verify.o.
20952
20953 1997-08-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20954
20955         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
20956         METHOD_ABSTRACT flag.
20957
20958         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
20959         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
20960         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
20961
20962         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
20963         variables.
20964         (start_java_method): Hook for SYNCHRONIZED methods.
20965
20966         * expr.c (build_java_jsr, build_java_ret): New functions
20967         (JSR,PRE): New macros
20968         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
20969         (verify_jvm_instructions): tableswitch, lookupswitch,
20970         monitorenter, monitorexit, goto_w: verified.
20971         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
20972         (build_java_monitor): New function.
20973         (MONITOR_OPERATION): Modified to call build_java_monitor()
20974         (verify_jvm_instructions): Started a thorough verification of
20975         invoke* bytecodes.
20976
20977 1997-08-19  Per Bothner  <bothner@cygnus.com>
20978
20979         Support verification of jsr/ret subroutines (used for try/finally).
20980         * decl.c (return_address_type_node):  New type node.
20981         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
20982         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
20983         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
20984         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
20985         TYPE_USED):  New macros for special types in type_map.
20986
20987         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
20988         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
20989         BCODE_JUMP_TARGET.
20990         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
20991
20992         * expr.c (can_widen_reference_to):  New function.
20993         (pop_type):  Use it.
20994         (merge_type_state):  Support handling start of subroutine.
20995         (push_pending_block):  Return char* error message, instead of calling
20996         fatal on an error.  Also handle subroutines.
20997         (verify_jvm_instructions):  Handle errors from push_poending_block.
20998         Support jsr and ret instructions.
20999
21000 1997-08-19  Per Bothner  <bothner@cygnus.com>
21001
21002         * jcf-io.c (find_classfile):  Fix thinko.
21003         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
21004
21005 1997-08-12  Jason Merrill  <jason@yorick.cygnus.com>
21006
21007         * Makefile.in (BISON): Remove.
21008
21009 1997-08-07  Per Bothner  <bothner@cygnus.com>
21010
21011         * Makefile.in:  Convert to autoconf.
21012         * config-lang.in (outputs):  Added java/Makefile.
21013
21014         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
21015         Rename cc1java to jc1.
21016
21017         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
21018         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
21019
21020         * class.c (class_depth):  Do load_class if needed.
21021
21022         Mostly better verification.
21023         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
21024         (init_decl_processing):  Change return type of soft_checkcast.
21025         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
21026         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
21027         lang_print_error):  New functions.
21028         (lang_init):  Set global hook print_error_function to lang_print_error.
21029         * expr.c:  In the type_map ptr_type_node is only used for null now.
21030         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
21031         (merge_types):  Dererence pointer to record types before comparing.
21032         (decode_newarray_type, merge_types):  On error just return NULL.
21033         (build_java_binop):  Add preliminary implementation (with warning)
21034         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
21035         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
21036         (expand_compare, expand_java_goto, expand_java_call):  Don't
21037         push_pending_block, since that only makes sense when verifying.
21038         (merge_type_state):  Different return codes.
21039         (push_pending_block):  A block may need to be verified more than once.
21040         (expand_byte_code):  Warn about unused code at code generation time.
21041         (verify_jvm_instruction):  Changed logic, since code may need to be
21042         re-verified if type-state has changed.  Also, better error handling.
21043         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
21044         Improve newarray, anewarray, ?aload, athrow,
21045         * java-tree.h (LABEL_CHANGED):  New macro.
21046
21047 1997-08-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21048
21049         * decl.c (soft_athrow_node): New global variable initialized.
21050         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
21051         * typeck.c (convert): Added support for REAL_TYPE.
21052         (convert_to_char): New function.
21053         (convert): Handle CHAR_TYPE.
21054         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
21055         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
21056         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
21057         promoted type.
21058         (verify_jvm_instructions): Added break a the end of bogus unop: label.
21059         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
21060         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
21061         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
21062         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
21063         to Use The Right Things.
21064         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
21065         compatible with INT. BOOLEAN is made equivalent to BYTE.
21066         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
21067         OPCODE_ifnonnull): Now supported.
21068         (build_java_athrow): New function.
21069
21070 1997-08-04  Per Bothner  <bothner@cygnus.com>
21071
21072         Rename method name <init> to match G++ (and fix mangling).
21073         * class.c (layout_class):  Replace method name of <init> by class name.
21074         (make_method_value):  Do inverse renaming of constructor from <init>.
21075         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
21076         * typeck.c (lookup_java_constructor):  New function.
21077         * expr.c (expand_invoke):  If method_name is <init>, call
21078         lookup_java_constructor to find constructor.
21079
21080         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
21081
21082 1997-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21083
21084         * parse.c (get_class_constant): Modified to handle array "classes"
21085         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
21086         wide type.
21087         (convert): Modified to handle real type.
21088         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
21089         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
21090         variables declared.
21091         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
21092         soft_multianewarray, soft_newarray_node, soft_throw_node): New
21093         global variables initialized.
21094         (find_local_variable): Handles the case of a pointer
21095         (end_java_method): Restore the use of one more scope
21096         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
21097         build_java_array_length_access, expand_java_arrayload,
21098         expand_java_arraystore, expand_java_array_length,
21099         expand_java_multianewarray, expand_java_anewarray,
21100         build_java_check_indexed_type, is_array_type_p,
21101         build_java_throw_out_of_bound_exception): New functions.
21102         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
21103         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
21104         OPCODE_<t>aload): Implemented code for verification.
21105         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
21106         ARRAY_NEW_MULTI): Macro defined.
21107         (CONVERT): Modified to invoke convert().
21108         (case OPCODE_aload2): Fixed index typo from 2 to 1.
21109
21110 1997-07-31  Per Bothner  <bothner@cygnus.com>
21111
21112         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
21113         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
21114         (make_class_data):  Field name needs '/' as package prefix.
21115         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
21116
21117 1997-07-25  Per Bothner  <bothner@cygnus.com>
21118
21119         Implement debug information for local variables.
21120         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
21121         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
21122         DECL_LOCAL_SLOT_CHAIN):  New macros.
21123         (struct lang_decl_var):  New type.
21124         * parse.c (give_name_to_locals):  Move to decl.c.
21125         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
21126         (start_java_method):  Re-write parameter handling.
21127         (pending_local_decls):  New global variable.
21128         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
21129         (find_local_variable):  Accept pc so we can skips decls not in range.
21130         (struct binding_level):  Add end_pc field.
21131         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
21132         (various):  Change so current pc gets passed to find_local_variable.
21133
21134         * decl.c (init_decl_processing):  Re-arrange fields in
21135         class_type_node and and method_type_node to match kaffe 0.9.1.
21136         * class.c (make_method_value, make_class_data):  Update
21137         initializations to match.
21138
21139 1997-07-16  Per Bothner  <bothner@cygnus.com>
21140
21141         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
21142         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
21143         (push_super_field):  New function.
21144         (make_class_data):  Handle inheritance of class static initializer.
21145         (layout_class):  New name mangling.
21146         * constants.c (build_constant_data_ref):  Init type of data array
21147         to a one-element array.
21148         (build_constants_constructor):  Set DECL_SIZE from complete array type.
21149         * decl.c:  Rename class_type, object_type etc to class_type_node,
21150         object_type_node etc.  Make former inherit from latter.
21151         * expr.c (expand_invoke):  Add cast of function address.
21152         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
21153         * parse.c (yyparse):  Don't call layout_class here.
21154         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
21155
21156 1997-06-14  Per Bothner  <bothner@cygnus.com>
21157
21158         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
21159         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
21160         (alloc_class_constant):  New.
21161         * expr.c (expand_invoke):  Make sure method's class is initialized.
21162         * class.c (interits_from_p, emit_register_class):  New functions.
21163         * parse.c (yyparse):  Call emit_register_class.
21164
21165 1997-06-09  Per Bothner  <bothner@cygnus.com>
21166
21167         * constants.c:  New file, to handle constant pool.
21168         * Makefile.in (JAVA_OBJS):  Add constants.o.
21169         * decl.c (init_decl_processing):  Update, fix, finish various structs.
21170         (pushdecl_top_level):  New.
21171         * parse.c (layout_class):  Moved to class.c.
21172         * expr.c (java_push_constant_from_pool):  New function.
21173         * class.c (build_class_ref):  Make work fully
21174         (make_class_data):  Emit super-class, constant pool, interface vector.
21175
21176 1997-06-03  Per Bothner  <bothner@cygnus.com>
21177
21178         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
21179         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
21180         * class.c (class_depth):  New function.
21181         (lookup_named_class):  Replaced by new function lookup_class.
21182         * decl.c (object_type_node, string_type_node):  New.
21183         Remove various types that we no longer need.
21184         * expr.c (verify_jvm_instructions):  New separate verifier pass.
21185         (push_type, pop_type):  New functions for verifier.
21186         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
21187         (expand_byte_code):  Simplify, since we assume already verified.
21188         (expand_invoke):  Now mostly works.
21189         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
21190         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
21191         * parse.c:  Wait to allocate class object until we know its name.
21192         (layout_class):  Calculate DECL_VINDEX for each virtual method.
21193         * typeck.c (get_array_type):  Rename to ...
21194         (build_java_array_type):  ... and provide working implementation.
21195         (build_java_signature):  New function - build Java signature of type.
21196         (set_java_signature):  New function - cache signature with type.
21197         (lookup_java_method):  New function.
21198
21199 1997-05-06  Per Bothner  <bothner@deneb.cygnus.com>
21200
21201         * class.c (ident_subst):  Take extra SUFFIX parameter.
21202         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
21203         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
21204         (build_class_ref):  Actually implement.
21205         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
21206         * decl.c (builtin_function):  New.
21207         (init_decl_processing):  Update for current Kaffe.  Declare some
21208         builtin Kaffe functions.
21209         * expr.c (build_address_of):  New.
21210         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
21211         Renamed (from expand_java_new etc), and added working implementations.
21212         (build_field_ref):  Now also handle static fields.
21213         (expand_invoke):  Implement invokestatic, and start implement rest.
21214         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
21215         * javaop.def:  Rename invokevirt -> invokevirtual.
21216         * lang.c (use_handles):  Removed.
21217         * parse.c:  Add support for ConstantValue attribute.
21218         Handle nested loading of a class.  (JPOOL_UTF):  New.
21219
21220 1997-03-11  Per Bothner  <bothner@deneb.cygnus.com>
21221
21222         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
21223
21224 1997-02-27  Per Bothner  <bothner@deneb.cygnus.com>
21225
21226         * Make-lang.in (java.install-man):  New empty rule.
21227         * typeck.c (set_local_type):  New function.
21228         * expr.c (STORE_INTERNAL):  Call find_local_variable,
21229         not find_stack_slot.  Call set_local_type.
21230
21231 1997-02-12  Per Bothner  <bothner@kalessin.cygnus.com>
21232
21233         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
21234         and building RECORD_TYPE CONSTRUCTORs.
21235         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
21236
21237         * lang.c (use_handles):  Change the default to 0.
21238         * decl.c:  Define and build class_type, field_type, utf8const_type.
21239         * class.c (make_class_data, make_field_value,
21240         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
21241         hashUtf8String, strLengthUtf8, mangled_classname:
21242         Functions to build reflective data structures.
21243         * parse.c (yyparse):  Call make_class_data.
21244
21245         * jcf-io.c (open_class, find_classfile):  New functions.
21246         * jcf-dump.c:  Support reading classfile from explicitly-named
21247         class file (without CLASSPATH searching).
21248
21249 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
21250
21251         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
21252         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
21253         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
21254         (get_constant):  Now trivial for CONSTANT_Utf8.
21255
21256         * jcf.h:  Make NEW_CPOOL the default.
21257         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
21258
21259 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
21260
21261         New directory.