OSDN Git Service

contrib/
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2
3         * Make-lang.in (jvspec.o): Fix dependencies.
4
5 2008-07-06  Tom Tromey  <tromey@redhat.com>
6
7         * Make-lang.in (java/parse.o-warn): Remove.
8         (java/jcf-io.o-warn): Remove.
9
10 2008-07-05  Tom Tromey  <tromey@redhat.com>
11
12         * jcf-io.c: Don't include fnmatch.h.  Don't use JCF_USE_SCANDIR.
13         (compare_path): Remove.
14         (java_or_class_file): Likewise.
15         (memoized_dirlist_entry): Likewise.
16         (memoized_dirlist_hash): Likewise.
17         (memoized_dirlist_lookup_eq): Likewise.
18         (memoized_dirlists): Likewise.
19         (caching_stat): Likewise.
20         (find_class): Use stat.
21         * jcf.h (JCF_USE_SCANDIR): Remove.
22
23 2008-06-30  Joshua Sumali  <jsumali@redhat.com>
24
25         * Make-lang.in (JAVA_MANFILES): Add doc/aot-compile.1 and
26         doc/rebuild-gcj-db.1
27         (java.uninstall): Likewise.
28         (java.maintainer-clean): Likewise.
29         (aot-compile.pod): New rule.
30         (rebuild-gcj-db.pod): New rule.
31         (java.install-man): Install doc/aot-compile.1 and doc/rebuild-gcj-db.1
32         * gcj.texi: Add new sections for aot-compile and rebuild-gcj-db.
33
34 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
35
36         * Make-lang.in (java/jcf-io.o-warn): New.
37
38 2008-06-24  Tom Tromey  <tromey@redhat.com>
39
40         * jcf-path.c (jcf_path_init): Don't name variable 'try'.
41         * expr.c (add_type_assertion): Rename argument.
42         (build_java_arrayaccess): Don't name variable 'throw'.
43         (ARRAY_NEW_MULTI): Don't name variable 'class'.
44         * jcf-io.c (find_class): Don't name variable 'class'.
45         * mangle.c (compression_table_add): Don't name variable 'new'.
46         * constants.c (cpool_for_class): Rename argument.
47         (alloc_constant_fieldref): Likewise.
48         * jcf-parse.c (handle_innerclass_attribute): Don't name variable
49         'class'.
50         (read_class): Likewise.
51         (parse_zip_file_entries): Likewise.
52         (process_zip_dir): Likewise.
53         * decl.c (java_mark_class_local): Rename argument.
54         * class.c (GEN_TABLE): Use type_name, not typename.
55         (gen_indirect_dispatch_tables): Likewise.
56         (add_field): Rename argument.
57         (is_compiled_class): Likewise.
58         (safe_layout_class): Likewise.
59         (emit_assertion_table): Likewise.
60         * typeck.c (has_method): Rename argument.
61
62 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
63
64         * class.c (ident_subst, mangled_classname, unmangle_classname,
65         gen_indirect_dispatch_tables, add_method_1,
66         build_fieldref_cache_entry, make_local_function_alias,
67         layout_class, java_treetreehash_find, java_treetreehash_new,
68         split_qualified_name): Fix for -Wc++-compat.
69         * constants.c (set_constant_entry, cpool_for_class): Likewise.
70         * decl.c (make_binding_level, java_dup_lang_specific_decl,
71         start_java_method): Likewise.
72         * except.c (prepare_eh_table_type): Likewise.
73         * expr.c (type_assertion_hash, note_instructions): Likewise.
74         * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC,
75         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise.
76         * jcf-io.c (jcf_filbuf_from_stdio, opendir_in_zip, find_class):
77         Likewise.
78         * jcf-parse.c (reverse, java_read_sourcefilenames,
79         annotation_grow, rewrite_reflection_indexes, java_parse_file,
80         process_zip_dir): Likewise.
81         * jcf-path.c (add_entry, add_path, jcf_path_init,
82         jcf_path_extdirs_arg): Likewise.
83         * jcf-reader.c (jcf_parse_constant_pool): Likewise.
84         * jvgenmain.c (do_mangle_classname): Likewise.
85         * lang.c (put_decl_string): Likewise.
86         * verify-impl.c (make_state_copy, make_state, add_new_state):
87         Likewise.
88
89 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
90
91         * gcj.texi: Expand TABs, remove whitespace from blank lines.
92
93 2008-06-14  Tom Tromey  <tromey@redhat.com>
94
95         PR java/36247:
96         * class.c (build_class_ref): Initialize this_classdollar when
97         needed.
98
99 2008-05-23  Andrew Haley  <aph@redhat.com>
100
101         * jcf-parse.c (give_name_to_class): Call find_sourcefile to find full
102         pathname of source file.
103
104 2008-05-12  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
105
106         * jcf-dump.c (print_constant): Use
107         HOST_LONG_LONG_FORMAT.
108
109 2008-05-07  Kenneth Zadeck <zadeck@naturalbridge.com>
110
111         * decl.c (java_init_decl_processing): Change DECL_IS_PURE to
112         DECL_PURE_P.
113
114 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
115
116         * class.c (build_utf8_ref): Don't set TREE_INVARIANT.
117         (build_classdollar_field): Don't set TREE_INVARIANT.
118         (get_dispatch_table): Don't set TREE_INVARIANT.
119         (make_class_data): Don't set TREE_INVARIANT.
120         (build_symbol_entry): Don't set TREE_INVARIANT.
121         (emit_symbol_table): Don't set TREE_INVARIANT.
122         * constants.c (build_constant_data_ref): Don't set TREE_INVARIANT.
123         (build_ref_from_constant_pool): Don't set TREE_INVARIANT.
124         * resource.c (compile_resource_data): Don't set TREE_INVARIANT.
125         * expr.c (cache_cpool_data_ref): Don't set TREE_INVARIANT.
126
127 2008-04-03  Tom Tromey  <tromey@redhat.com>
128
129         * Make-lang.in (java_OBJS): New variable.
130
131 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
132
133         * java-tree.h (insert_block): Kill.
134         * decl.c (insert_block): Kill.
135                 
136 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
137
138         * gcj.texi: Include gpl_v3.texi instead of gpl.texi
139         * Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of
140         gpl.texi.
141
142 2008-03-27  Tom Tromey  <tromey@redhat.com>
143
144         * Make-lang.in: Revert automatic dependency patch.
145
146 2008-03-25  Tom Tromey  <tromey@redhat.com>
147
148         * Make-lang.in: Removed most explicit .o targets.
149         (java/jvspec.o): Reduce to variable setting.  Moved to java/.
150         ($(GCJ)$(exeext)): Update.
151         (JAVA_OBJS): New variable.
152         (JCFDUMP_OBJS): Reformat.
153         (java_OBJS): New variable.
154         (java/jvspec.o-warn): Update.
155         (java/parse.o-warn): Remove.
156         (JAVA_TREE_H): Remove.
157         (java/jcf-io.o): Reduce to variable setting.
158         (ALL_CPPFLAGS): Likewise.
159
160 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
161
162         * mangle.c (java_mangle_decl): Remove dead check.
163
164 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
165
166         * jcf-parse.c (java_parse_file): Assert binding levels are
167         left in order.
168         * lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack):
169         Delete.
170
171 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
172
173         * jcf-dump.c (version): Update copyright notice dates.
174
175 2008-02-29  Tom Tromey  <tromey@redhat.com>
176
177         * expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on
178         method.
179         * java-tree.h (struct lang_decl_func): Remove obsolete comment.
180
181 2008-02-26  Tom Tromey  <tromey@redhat.com>
182
183         * lang.c (java_post_options): Remove conditional.
184         * expr.c (expand_byte_code): Remove old location code.
185         * jcf-parse.c (set_source_filename): Remove old location code.
186         (give_name_to_class): Likewise.
187         (jcf_parse): Likewise.
188         (duplicate_class_warning): Likewise.
189         (parse_class_file): Likewise.
190         (java_parse_file): Likewise.
191         * decl.c (finish_method): Remove old location code.
192         * class.c (push_class): Remove old location code.
193
194 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
195
196         PR other/35107
197         * Make-lang.in (jc1): Add $(GMPLIBS).
198
199 2008-01-23  David Daney  <ddaney@avtrex.com>
200
201         * class.c (hide)  Rename to...
202         (java_hide_decl) ... this throughout, and make public.
203         * resource.c (Jr_count): Remove.
204         (compile_resource_data): Call java_mangle_resource_name to generate
205         decl name.  Make resource decl public and hidden.
206         * mangle.c (java_mangle_resource_name): New function.
207         * java-tree.h (java_hide_decl, java_mangle_resource_name): Declare
208         functions.
209
210 2008-01-04  Andrew Haley  <aph@redhat.com>
211
212         PR java/17779
213         * jcf-parse.c (parse_zip_file_entries): Move decl to compile on
214         C90.
215
216 2008-01-03  Andrew Haley  <aph@redhat.com>
217
218         PR java/17779
219         * jcf-parse.c (parse_zip_file_entries): Unset TYPE_ALIAS_SET if
220         we're about to re-layout the type.
221
222 2007-12-20  Alexandre Oliva  <aoliva@redhat.com>
223
224         * lang.c (java_classify_record): Don't return
225         RECORD_IS_INTERFACE for now.
226
227 2007-12-18  Andrew Haley  <aph@redhat.com>
228
229         PR java/27643
230         * jcf-parse.c (java_parse_file): Remove call to
231         java_mark_class_local.
232         (parse_class_file): Reinstate call to java_mark_class_local here.
233         * decl.c (java_mark_cni_decl_local): If the ASSEMBLER_NAME is
234         already set, call java_mangle_decl() and make_decl_rtl() to
235         rewrite its name as a hidden alias.
236
237 2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
238
239         PR debug/7081
240         * lang.c (java_classify_record): New.
241         (LANG_HOOKS_CLASSIFY_RECORD): Override.
242
243 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
244
245         PR 34081/C++
246         * decl.c (finish_method): Pass 'false' for the new
247         allocate_struct_function parameter.
248
249 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
250
251         * expr.c (build_jni_stub): Use the computed jni func type for
252         variable meth.
253
254 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
255
256         * class.c (JAVA_TREEHASHHASH_H): Use TYPE_UID.
257
258 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
259
260         * expr.c (type_assertion_hash): Hash type uids rather than
261         tree pointers.
262
263 2007-11-17  David Daney  <ddaney@avtrex.com>
264             Andrew Haley  <aph@redhat.com>
265
266         * constants.c (build_constants_constructor):  Use POINTER_SIZE
267         insead of BITS_PER_WORD in big-endian work around.
268
269 2007-11-07  Tom Tromey  <tromey@redhat.com>
270
271         PR java/34019:
272         * gcj.texi (Input Options): Add missing noun.
273
274 2007-11-02  Tom Tromey  <tromey@redhat.com>
275
276         PR java/33765:
277         * jcf-parse.c (java_parse_file): Ignore ZIPEMPTYMAGIC files.
278         * zipfile.h (ZIPEMPTYMAGIC): New define.
279
280 2007-11-01  Tom Tromey  <tromey@redhat.com>
281
282         * Make-lang.in (java/jcf-dump.o): Depend on zipfile.h.
283         (java/jcf-parse.o): Depend on jcf-reader.c, zipfile.h, and jcf.h.
284         (java/jcf-io.o): Depend on zipfile.h.
285
286 2007-10-17  Richard Guenther  <rguenther@suse.de>
287
288         * Make-lang.in (java/builtins.o): Add $(OPTABS_H) and $(EXPR_H)
289         dependencies.
290
291 2007-10-03  Andrew Haley  <aph@redhat.com>
292
293         PR java/33639
294         * class.c (mangled_classname): Detect and replace illegal
295         characters in assembly language symbols.
296         (gen_indirect_dispatch_tables): Call mangled_classname() on
297         the type.
298
299 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
300
301         * lang.c (java_print_error_function): Add third argument.
302
303 2007-09-15  Tom Tromey  <tromey@redhat.com>
304
305         * java-tree.h (struct lang_decl_func) <function_decl_body>:
306         Remove.
307         <init_final>: Likewise.
308         * lang.c (java_dump_tree): Update.
309         * java-tree.h (DECL_FUNCTION_BODY): Remove.
310
311 2007-09-11  Jan Hubicka <jh@suse.cz>
312
313         * decl.c (java_expand_body): Kill.
314         (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
315
316 2007-09-06  Tom Tromey  <tromey@redhat.com>
317
318         * jcf-parse.c (parse_class_file): Re-enter the current file.
319
320 2007-09-07  Roman Zippel  <zippel@linux-m68k.org>
321
322         * boehm.c (mark_reference_fields): Move misaligned pointer check
323         after JREFERENCE_TYPE_P test
324
325 2007-09-06  Roman Zippel  <zippel@linux-m68k.org>
326
327         * boehm.c (mark_reference_fields): Don't use bitmap as gc_descr
328         if pointer is misaligned.
329
330 2007-09-06  Tom Tromey  <tromey@redhat.com>
331
332         * lang.c (java_post_options): Update.
333         * jcf-parse.c (set_source_filename): Update.
334         (give_name_to_class): Update.
335         (jcf_parse): Update.
336         (duplicate_class_warning): Update.
337         (parse_class_file): Update.
338         (java_parse_file): Update.
339         * expr.c (expand_byte_code): Update.
340
341 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
342
343         * decl.c (finish_method): Use set_cfun.
344
345 2007-09-04  Andrew Haley  <aph@redhat.com>
346
347         * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup"
348         when using the ARM EABI.
349
350 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
351
352         * Make-lang.in (jvspec.o): Remove SHLIB_MULTILIB.
353
354 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
355
356         * jcf-parse.c (read_class, java_parse_file): Supply a TYPE for
357         CONST_CAST.
358         * jcf.h (JCF_FINISH): Likewise.
359
360 2007-08-28  Tom Tromey  <tromey@redhat.com>
361
362         * Make-lang.in (java.tags): Don't tag '*.y' files.
363
364 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
365
366         * lang.c (java_decl_ok_for_sibcall): Likewise.
367
368 2007-08-21  Paul Brook  <paul@codesourcery.com>
369             Nathan Sidwell  <nathan@codesourcery.com>
370             Mark Mitchell  <mark@codesourcery.com>
371             Joseph Myers  <joseph@codesourcery.com>
372
373         * jcf-dump.c (version): Use pkgversion_string.  Update copyright
374         date.
375
376 2007-08-20  Richard Guenther  <rguenther@suse.de>
377
378         * lang.c (java_tree_inlining_walk_subtrees): Remove.
379         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove.
380
381 2007-08-17  Tom Tromey  <tromey@redhat.com>
382
383         * typeck.c (find_method_in_interfaces): Update.
384         * jcf-parse.c (load_class): Update.
385         * java-gimplify.c (java_gimplify_component_ref): Removed.
386         (java_gimplify_modify_expr): Update.  Removed pre_p and post_p
387         arguments.
388         (java_gimplify_expr): Update.
389         * decl.c (java_init_decl_processing): Update.
390         * class.c (set_constant_value): Update.
391         (make_class_data): Update.
392         (finish_class): Update.
393         (build_static_field_ref): Update.
394         (is_compiled_class): Update.
395         (maybe_layout_super_class): Update.
396         (layout_class): Update.
397         (layout_class_method): Update.
398         * java-tree.h (CAN_COMPLETE_NORMALLY): Removed.
399         (lang_decl_var) <am, final_iud, cif>: Removed fields.
400         (lang_decl_func) <init_calls_this>: Removed field.
401         (lang_type) <dot_class, verify_method>: Removed fields.
402         (FIELD_NESTED_ACCESS): Removed.
403         (FIELD_NESTED_ACCESS_P): Removed.
404         (DECL_FIELD_FINAL_IUD): Removed.
405         (DECL_LOCAL_FINAL_IUD): Removed
406         (LOCAL_FINAL_P): Removed.
407         (FINAL_VARIABLE_P): Removed.
408         (CLASS_FINAL_VARIABLE_P): Removed.
409         (DECL_BIT_INDEX): Removed.
410         (DECL_INIT_CALLS_THIS): Removed.
411         (FIELD_LOCAL_ALIAS): Removed.
412         (FIELD_LOCAL_ALIAS_USED): Removed.
413         (FIELD_THISN): Removed.
414         (DECL_FUNCTION_INIT_TEST_CLASS): Removed.
415         (LOCAL_CLASS_INITIALIZATION_FLAG): Removed.
416         (LOCAL_CLASS_INITIALIZATION_FLAG_P): Removed.
417         (TYPE_DOT_CLASS): Removed.
418         (TYPE_VERIFY_METHOD): Removed.
419         (ID_CLASSDOLLAR_P): Removed.
420         (enum java_tree_index) <JTI_CLASSDOLLAR_IDENTIFIER_NODE>:
421         Removed.
422         (classdollar_identifier_node): Removed.
423         (TYPE_UNKNOWN): Removed.
424         (CLASS_FROM_SOURCE_P): Removed.
425         * expr.c (build_jni_stub): Update.
426         (force_evaluation_order): Update.
427         (build_java_empty_stmt): Update.
428         (build_class_init): Update.
429         (java_stack_swap): Update.
430         (build_jni_stub): Update.
431
432 2007-08-17  Tom Tromey  <tromey@redhat.com>
433
434         * java-tree.h (LABEL_TYPE_STATE): Removed.
435         (load_type_state): Removed.
436         (LABEL_PC): Removed.
437         (LABEL_VERIFIED): Removed.
438         (type_states): Declare.
439         * expr.c (type_states): New global.
440         (load_type_state): Now static.  Use type_states.  Changed
441         argument.
442         (lookup_label): Don't set LABEL_PC.
443         (expand_byte_code): Don't use LABEL_VERIFIED.
444         (note_instructions): Initialize type_states.
445         * verify-glue.c (vfy_note_stack_depth): Rewrote.
446         (vfy_note_stack_type): Use type_states.
447         (vfy_note_local_type): Likewise.
448
449 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
450
451         * jcf-parse.c (read_class, java_parse_file): Use CONST_CAST.
452         * jcf.h (JCF_FINISH): Likewise.
453
454 2007-07-31  Nick Clifton  <nickc@redhat.com>
455
456         * java-gimplify.c: Change copyright header to refer to version 3
457         of the GNU General Public License and to point readers at the
458         COPYING3 file and the FSF's license web page.
459         * typeck.c, lang-specs.h, mangle_name.c, jcf-dump.c, class.c,
460         decl.c, config-lang.in, jcf-parse.c, constants.c, Make-lang.in,
461         resource.c, except.c, builtins.c, jvspec.c, java-tree.def,
462         javaop.def, jcf-path.c, verify-glue.c, jcf-depend.c, lang.opt,
463         jcf-reader.c, mangle.c, zextract.c, jcf-io.c, jcf.h, zipfile.h,
464         verify.h, java-except.h, win32-host.c, expr.c, jvgenmain.c,
465         parse.h, lang.c, java-tree.h, javaop.h, boehm.c: Likewise.
466
467 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
468
469         * jcf-io.c (find_class): Fix -Wcast-qual warnings.
470
471 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
472
473         * lang.c (java_get_callee_fndecl): Constify.
474
475 2007-07-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
476
477         * mangle.c (set_type_package_list): Constify.
478         * verify-glue.c (vfy_make_string): Delete.
479         * verify.h (vfy_make_string): Likewise.
480
481 2007-07-26  Tom Tromey  <tromey@redhat.com>
482
483         * java-tree.h (push_labeled_block, pop_labeled_block): Remove.
484         (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY,
485         EXIT_BLOCK_LABELED_BLOCK): Likewise.
486         * lang.c (java_tree_inlining_walk_subtrees): Update.
487         (java_dump_tree): Likewise.
488         * java-tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRY_EXPR):
489         Remove.
490         * decl.c (push_labeled_block, pop_labeled_block): Remove.
491         * java-gimplify.c (java_gimplify_labeled_block_expr,
492         java_gimplify_exit_block_expr, java_gimplify_try_expr): Remove.
493         (java_gimplify_expr): Update.
494
495 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
496
497         * class.c (java_treetreehash_hash, java_treetreehash_compare):
498         Constify. 
499         * expr.c (type_assertion_eq): Likewise.
500         * jcf-io.c (compare_path): Likewise.
501         * jcf-parse.c (cmpstringp): Likewise.
502         * verify-impl.c (get_one_type, compute_argument_types,
503         compute_return_type): Likewise. 
504
505 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
506
507         PR target/32462
508         PR libgcj/32465
509         * class.c (hide): Wrap in HAVE_GAS_HIDDEN.
510
511 2007-07-12  Richard Guenther  <rguenther@suse.de>
512
513         * expr.c (expand_java_return): RETURN_EXPR has void type.
514         (build_jni_stub): Likewise.  Use a comparison against zero
515         for null-pointer test in COND_EXPR.
516         (build_field_ref): Build POINTER_PLUS_EXPR with correct
517         type.  Convert result instead.
518         (build_invokevirtual): Likewise.
519
520 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
521
522         PR 32617
523         * lang.c (java_init): Remove setting of force_align_functions_log.
524         * class.c (add_method_1): Set DECL_ALIGN of non-static method
525         to cope with ptrmemfunc_vbit_in_pfn.
526
527 2007-07-03  David Daney  <ddaney@avtrex.com>
528
529         * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to 
530         include path.
531         (doc/gcj.dvi): Same.
532         (doc/gcj.pdf): Same.
533         (java/index.html): Same.
534
535 2007-06-15 Andrew Pinski  <andrew_pinski@playstation.sony.com>
536
537         * class.c (make_class_data): Build the index in sizetype.
538         Use POINTER_PLUS_EXPR instead of PLUS_EXPR when
539         adding to a pointer type.
540         (build_symbol_entry): Likewise.
541         * expr.c (build_java_arrayaccess): Likewise.
542         (build_field_ref): Likewise.
543         (build_known_method_ref): Likewise.
544         (build_invokevirtual): Likewise.
545         * except.c (build_exception_object_ref): Do a
546         NEGATIVE and then a POINTER_PLUS_EXPR instead
547         of a MINUS_EXPR.
548
549 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
550
551         * typeck.c (java_signed_type): Remove.
552         * lang.c (LANG_HOOKS_SIGNED_TYPE): Remove.
553         * java-tree.h (java_signed_type): Remove.
554
555 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
556
557         * jcf-dump.c (HANDLE_MAGIC): Use 'unsigned long' for %lx.
558         (print_constant): Likewise.
559
560 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
561
562         * expr.c (build_java_binop): Use unsigned_type_for instead of
563         java_unsigned_type.
564         * java-tree.h (java_unsigned_type): Remove.
565         * lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
566         * typeck.c (java_unsigned_type): Remove.
567
568 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
569
570         * java-tree.h (lang_tree_node): Use GENERIC_NEXT
571         instead of checking GIMPLE_STMT_P in chain_next.
572
573 2007-04-06  Colin Walters  <walters@redhat.com>
574
575         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161701
576         * jcf-io.c (open_class): Copy 'filename'.
577
578 2007-04-03  Andrew Haley  <aph@redhat.com>
579
580         * jvgenmain.c (main): Change main to use class$, not class$$.
581         (do_mangle_classname): Likewise.
582         * class.c (hide): New function.
583         (add_field): Hide everything that shouldn't be visible outside a
584         DSO.
585         (build_static_class_ref): Likewise.
586         (build_classdollar_field): Likewise.
587         (make_class_data): Likewise.
588         (layout_class_method): Likewise.
589         * expr.c (special_method_p): New function.
590
591         * class.c (push_class): Don't bogusly guess the source filename.
592         * jcf-parse.c (give_name_to_class): Don't set input_location from
593         DECL_ARTIFICIAL decls.
594
595 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
596
597         * typeck.c (java_signed_or_unsigned_type): Removed.
598         (java_signed_type): use get_signed_or_unsigned_type instead of
599         java_signed_or_unsigned_type.
600         (java_unsigned_type): Ditto.
601         * lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Removed.
602         * java-tree.h (java_signed_or_unsigned_type): Removed.
603
604 2007-03-26  Tom Tromey  <tromey@redhat.com>
605
606         * Make-lang.in (JAVA_MANFILES): Removed grmiregistry.1.
607         (java.maintainer-clean): Likewise.
608         (java.install-man): Likewise.
609         (.INTERMEDIATE): Removed grmiregistry.pod.
610         (grmiregistry.pod): Removed.
611         * gcj.texi (Invoking gcjh): Removed.
612         (Invoking gjnih): Likewise.
613         (Invoking grmiregistry): Likewise.
614         (direntry): Updated.
615         (Top): Likewise.
616         (which-gcj): Removed.
617
618 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
619
620         * Make-lang.in: Add install-pdf target as copied from
621         automake v1.10 rules.
622
623 2007-02-27  Brooks Moses  <brooks.moses@codesourcery.com>
624
625         * gcj.texi: Standardize title page.
626
627 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
628
629         * class.c: Fix a comment typo.
630
631 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
632             Brooks Moses  <brooks.moses@codesourcery.com>
633             Lee Millward  <lee.millward@codesourcery.com>
634
635         * java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead
636         of build3.
637         (BUILD_MONITOR_EXIT): Likewise.
638
639         * java-gimplify.c (java_gimplify_component_ref): Use build_call_expr.
640         (java_gimplify_modify_expr): Likewise.
641
642         * class.c (cache_this_class_ref): Use build_call_expr.
643         (build_static_field_ref): Likewise.
644         (emit_indirect_register_classes): Likewise.
645         (emit_register_classes): Likewise.
646
647         * resource.c (write_resource_constructor): Use build_call_expr.
648
649         * builtins.c (builtin_creator_function): Change interpretation of
650         the second parameter to be the whole CALL_EXPR instead of the arglist.
651         (max_builtin): Tweak parameter list.  Use new CALL_EXPR accessors.
652         (min_builtin): Likewise.
653         (abs_builtin): Likewise.
654         (java_build_function_call_expr): Likewise.
655         (convert_real): Likewise.
656         (UNMARSHAL3): Likewise.
657         (UNMARSHAL4): Likewise.
658         (UNMARSHAL5): Likewise.
659         (build_arglist_for_builtin): Delete.  Fix callers to use
660         build_call_expr instead.
661         (putObject_builtin): Tweak parameter list.  Use new CALL_EXPR
662         accessors.
663         (compareAndSwapInt_builtin): Likewise.
664         (compareAndSwapLong_builtin): Likewise.
665         (compareAndSwapObject_builtin): Likewise.
666         (putVolatile_builtin): Likewise.
667         (getVolatile_builtin): Likewise.
668         (VMSupportsCS8_builtin): Likewise.
669         (check_for_builtin): Pass entire CALL_EXPR to builtin expander
670         instead of arglist.
671
672         * expr.c (build_java_athrow): Use build_call_nary instead of build3.
673         (build_java_throw_out_of_bounds_exception): Likewise.
674         (java_check_reference): Likewise.
675         (build_java_arraystore_check): Likewise.
676         (build_newarray): Likewise.
677         (build_anewarray): Likewise.
678         (expand_java_multinewarray): Use build_call_list instead of build3.
679         (build_java_monitor): Use build_call_nary instead of build3.
680         (java_create_object): Likewise.
681         (expand_java_NEW): Likewise.
682         (build_instanceof): Likewise.
683         (expand_java_CHECKCAST): Likewise.
684         (build_java_soft_divmod): Likewise.
685         (build_java_binop): Likewise.
686         (build_field_ref): Likewise.
687         (build_class_init): Likewise.
688         (rewrite_arglist_getcaller): Use build_call_expr.
689         (build_invokeinterface):  Use build_call_nary instead of build3.
690         (expand_invoke): Use build_call_list instead of build3.
691         (build_jni_stub): Use build_call_nary, build_call_list, or
692         build_call_expr instead of build3.
693         (expand_java_field_op): Use build_call_expr instead of build3.
694         (force_evaluation_order): Use new CALL_EXPR accessors.
695
696         * lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors.
697
698 2007-02-15  David Daney  <ddaney@avtrex.com>
699
700         * Make-lang.in (JAVA_MANFILES): Add doc/gc-analyze.1.
701         (java.maintainer-clean):Add gc-analyze.1.
702         (.INTERMEDIATE): Add gc-analyze.pod.
703         (gc-analyze.pod): New rule.
704         (java.install-man): Install gc-analyze.1
705         * gcj.texi: Add new section for the gc-analyze program.
706
707 2007-02-07  Andrew Haley  <aph@redhat.com>
708
709         * class.c (uncache_this_class_ref): New.
710         * expr.c (build_jni_stub): Initialize the class.
711         (expand_byte_code): Call uncache_this_class_ref after generating
712         code.
713
714 2007-02-06  Tom Tromey  <tromey@redhat.com>
715
716         PR java/30714:
717         * jvspec.c (lang_specific_driver): Check for the '-' in '-I'.
718
719 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
720
721         * java-tree.h, javaop.def, jcf-parse.c: Fix comment typos.
722
723 2007-02-02  Andrew Haley  <aph@redhat.com>
724
725         * expr.c (expand_byte_code): Call cache_this_class_ref() and
726         cache_cpool_data_ref().
727         Set TYPE_CPOOL_DATA_REF.
728         (cache_cpool_data_ref): New function.
729         * constants.c (build_ref_from_constant_pool): Remove special-case
730         code for flag_indirect_classes.
731         (build_constant_data_ref): Move special-case code for
732         flag_indirect_classes here from build_ref_from_constant_pool.
733         * decl.c (finish_method): Move class initialization from here to
734         cache_this_class_ref.
735         * class.c (cache_this_class_ref): New function.
736         (build_class_ref): Use this_classdollar for the ouput class.
737
738 2007-02-02  David Daney  <ddaney@avtrex.com>
739
740         * class.c (is_compiled_class): Move check to avoid reloading
741         current class.
742         (layout_class_method): Don't calculate DECL_EXTERNAL if it is
743         already set.
744
745 2007-02-01  Andrew Haley  <aph@redhat.com>
746
747         PR java/30641
748         * jcf-parse.c (jcf_parse): Clear the field_offsets bitmap.
749
750 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
751
752         * class.c, jcf-parse.c: Fix comment typos.
753
754 2007-01-30  Tom Tromey  <tromey@redhat.com>
755
756         * gcj.texi (Strings): Fix documentation for JvNewString.
757
758 2007-01-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
759
760         * gcj.texi (Invoking gcjh, Invoking gjnih, Arrays): Fix some
761         typos.
762
763 2007-01-30  Ben Elliston  <bje@au.ibm.com>
764
765         * jvspec.c (lang_specific_driver): Remove unused classpath_args.
766
767 2007-01-29  Tom Tromey  <tromey@redhat.com>
768
769         PR java/30607:
770         * jvspec.c (lang_specific_driver): Handle separate -I argument.
771         * lang.opt (-I): Add 'Separate'.
772
773 2007-01-29  Andrew Haley  <aph@redhat.com>
774
775         * class.c (add_method_1): Mark fndecl as external unless we are
776         compiling it into this object file.
777
778 2007-01-24  Andrew Haley  <aph@redhat.com>
779
780         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a
781         type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC.
782
783 2007-01-22  Andrew Haley  <aph@redhat.com>
784
785         * builtins.c (VMSupportsCS8_builtin): New function.
786
787 2007-01-23  Andrew Pinski  <pinskia@gmail.com>
788
789         PR java/30454
790         * jcf-io.c (opendir_in_zip): Close the file
791         and free zipf before returning after an error.
792
793 2007-01-16  Tom Tromey  <tromey@redhat.com>
794
795         * java-tree.def: Added copyright header.
796
797 2007-01-15  Tom Tromey  <tromey@redhat.com>
798
799         * lang.c (dump_compound_expr) <EXPR_WITH_FILE_LOCATION>: Removed
800         case.
801         * java-gimplify.c (java_gimplify_expr) <EXPR_WITH_FILE_LOCATION>:
802         Removed case.
803         * java-tree.h (EXPR_WFL_EMIT_LINE_NOTE): Removed.
804         (EXPR_WFL_NODE): Likewise.
805         (EXPR_WFL_LINECOL): Likewise.
806         (EXPR_WFL_FILENAME): Likewise.
807         (EXPR_WFL_LINENO): Likewise.
808         (build_expr_wfl, expr_add_location): Don't declare.
809         (build_unknown_wfl): Removed.
810         (EXPR_WFL_FILENAME_NODE): Removed.
811         (EXPR_WFL_COLNO): Removed.
812         (EXPR_WFL_SET_LINECOL): Removed.
813         (DECL_FUNCTION_WFL): Removed.
814         (DECL_FIELD_FINAL_WFL): Removed.
815         (struct lang_decl_func) <wfl>: Removed field.
816         <called_constructor>: Likewise.
817         <inner_access>: Likewise.
818         (struct lang_decl_var) <wfl>: Removed field.
819         (DECL_CONSTRUCTOR_CALLS): Removed.
820         (DECL_FUNCTION_ACCESS_DECL): Likewise.
821         (DECL_FUNCTION_INNER_ACCESS): Likewise.
822         (DECL_SPECIFIC_COUNT): Likewise.
823         * java-tree.def (EXPR_WITH_FILE_LOCATION): Removed.
824         * expr.c (build_expr_wfl): Removed.
825         (expr_add_location): Likewise.
826
827 2007-01-12  Tom Tromey  <tromey@redhat.com>
828
829         * jcf-dump.c (main): Updated call to find_class.
830         * lang.c (java_init): Removed dead code.
831         * jcf-parse.c (read_class): Don't use java_source field.  Removed
832         dead code.
833         (parse_zip_file_entries): Don't use java_source field.
834         (process_zip_dir): Likewise.
835         (jcf_parse): Removed dead code.
836         (java_parse_file): Likewise.
837         (read_class): Updated call to find_class.
838         * jcf-io.c (find_class): Don't use java_source field.  Removed
839         'source_ok' argument, .java logic.
840         * jcf.h (JCF) <java_source>: Removed field.
841         (JCF_ZERO): Updated.    (find_class): Updated.
842         * decl.c: Removed dead code.
843         * class.c: Removed dead code.
844
845 2007-01-11  Tom Tromey  <tromey@redhat.com>
846
847         * typeck.c (convert): Don't use flag_emit_class_files.
848         * lang.c (java_post_options): Don't use flag_emit_class_files.
849         (java_handle_option): Don't use flag_extraneous_semicolon or
850         flag_redundant.
851         * jcf-parse.c (HANDLE_CONSTANTVALUE): Don't use
852         flag_emit_class_files.
853         (load_class): Likewise.
854         * java-tree.h (flag_emit_class_files): Don't declare.
855         (STATIC_CLASS_INIT_OPT_P): Don't use flag_emit_class_files.
856         (flag_extraneous_semicolon): Don't declare.
857         (flag_not_overriding): Likewise.
858         (flag_static_local_jdk1_1): Likewise.
859         (flag_redundant): Likewise.
860         * expr.c (build_newarray): Don't use flag_emit_class_files.
861         * class.c (DEFAULT_ENABLE_ASSERT): Don't use
862         flag_emit_class_files.
863         (build_class_ref): Likewise.
864         * builtins.c (check_for_builtin): Don't use
865         flag_emit_class_files.
866
867 2007-01-10  Tom Tromey  <tromey@redhat.com>
868
869         * lang.c (java_can_use_bit_fields_p): Removed.
870         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
871
872 2007-01-09  Andrew Haley  <aph@redhat.com>
873
874         * expr.c (build_java_arrayaccess): Rewrite to generate array
875         access in canonical form.
876         (expand_java_arraystore): Use build_fold_addr_expr() on address of
877         array access.
878
879 2007-01-03  Andrew Haley  <aph@redhat.com>
880
881         PR java/28754
882         * expr.c (expand_java_field_op): If we're initializing a field's
883         declaring interface we should not also initialize the class
884         context in which it was referenced.
885
886 2007-01-02  Tom Tromey  <tromey@redhat.com>
887
888         * java-tree.h (compiling_from_source, current_encoding,
889         JTI_FINIT_IDENTIFIER_NODE, JTI_INSTINIT_IDENTIFIER_NODE,
890         JTI_LENGTH_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE,
891         JTI_CONTINUE_IDENTIFIER_NODE, JTI_ACCESS0_IDENTIFIER_NODE,
892         JTI_WFL_OPERATOR): Removed
893         (finit_identifier_node, instinit_identifier_node,
894         length_identifier_node, super_identifier_node,
895         continue_identifier_node, access0_identifier_node, wfl_operator):
896         Removed.
897         (cyclic_inheritance_report,
898         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND,
899         DECL_FUNCTION_NAP, DECL_FUNCTION_SYNTHETIC_CTOR,
900         DECL_FIXED_CONSTRUCTOR_P): Removed.
901         (struct lang_decl_func) <smic, nap, synthetic_ctor, fixed_ctor>:
902         Removed.
903         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST, TYPE_II_STMT_LIST,
904         TYPE_IMPORT_LIST, TYPE_IMPORT_DEMAND_LIST): Removed.
905         (struct lang_type) <finit_stmt_list, clinit_stmt_list, ii_block,
906         import_list, import_demand_list>: Removed.
907         (java_layout_seen_class_methods, init_jcf_parse, init_src_parse,
908         cxx_keyword_p): Removed.
909         (DECL_FINIT_P, DECL_INSTINIT_P, ID_FINIT_P, ID_INSTINIT_P,
910         TYPE_UNUSED, TYPE_UNDERFLOW, TYPE_UNEXPECTED,
911         CLASS_ACCESS0_GENERATED_P, CLASS_HAS_FINIT_P,
912         IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
913         IS_AN_IMPORT_ON_DEMAND_P, COMPOUND_ASSIGN_P, SWITCH_HAS_DEFAULT,
914         PRIMARY_P, MODIFY_EXPR_FROM_INITIALIZATION_P,
915         CLASS_METHOD_CHECKED_P, FOR_LOOP_P, ANONYMOUS_CLASS_P,
916         LOCAL_CLASS_P, ARG_FINAL_P, SUPPRESS_UNREACHABLE_ERROR,
917         RESOLVE_PACKAGE_NAME_P, RESOLVE_TYPE_NAME_P, IS_BREAK_STMT_P,
918         IS_CRAFTED_STRING_BUFFER_P, IS_INIT_CHECKED, CALL_USING_SUPER,
919         NESTED_FIELD_ACCESS_IDENTIFIER_P, TOPLEVEL_CLASS_DECL_P,
920         PURE_INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
921         CALL_CONSTRUCTOR_P, CALL_EXPLICIT_CONSTRUCTOR_P,
922         CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P,
923         FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, BLOCK_IS_IMPLICIT,
924         BLOCK_EMPTY_P, IS_UNCHECKED_EXCEPTION_P, java_error_count,
925         java_parse_abort_on_error, extract_field_decl): Removed.
926         (finput): Declare.
927         * lang.c: (compiling_from_source, current_encoding): Removed.
928         (java_handle_option): Ignore -fencoding.
929         * parse.h: Don't include lex.h.
930         (java_error_count, int_fits_type_p, stabilize_reference, RULE,
931         RECOVERED, DRECOVERED, RECOVER, DRECOVER, YYERROR_NOW,
932         YYNOT_TWICE, CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
933         INTERFACE_MODIFIERS, INTERFACE_INNER_MODIFIERS,
934         INTERFACE_METHOD_MODIFIERS, INTERFACE_FIELD_MODIFIERS,
935         MODIFIER_WFL, THIS_MODIFIER_ONLY, parse_error_context,
936         ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, exit_java_complete_class,
937         CLASS_OR_INTERFACE, GET_REAL_TYPE, GET_TYPE_NAME,
938         OBSOLETE_MODIFIER_WARNING, OBSOLETE_MODIFIER_WARNING2,
939         BUILD_PTR_FROM_NAME, INCOMPLETE_TYPE_P,
940         JAVA_MAYBE_GENERATE_DEBUG_INFO, JBSC_TYPE_P, JSTRING_P,
941         JNULLP_TYPE_P, JDECL_P, TYPE_INTERFACE_P, TYPE_CLASS_P,
942         IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS,
943         MANGLE_OUTER_LOCAL_VARIABLE_NAME,
944         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID,
945         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING,
946         SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
947         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP,
948         AIPL_FUNCTION_CREATION, AIPL_FUNCTION_DECLARATION,
949         AIPL_FUNCTION_CTOR_INVOCATION, AIPL_FUNCTION_FINIT_INVOCATION,
950         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
951         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED,
952         LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
953         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
954         LOOP_EXPR_BODY_BODY_EXPR, PUSH_LABELED_BLOCK, POP_LABELED_BLOCK,
955         PUSH_LOOP, POP_LOOP, PUSH_EXCEPTIONS, POP_EXCEPTIONS,
956         IN_TRY_BLOCK_P, EXCEPTIONS_P, ANONYMOUS_ARRAY_BASE_TYPE,
957         ANONYMOUS_ARRAY_DIMS_SIG, ANONYMOUS_ARRAY_INITIALIZER,
958         INVOKE_STATIC, INVOKE_NONVIRTUAL, INVOKE_SUPER, INVOKE_INTERFACE,
959         INVOKE_VIRTUAL, jdep_code, struct _jdep, JDEP_DECL, JDEP_DECL_WFL,
960         JDEP_KIND, JDEP_WFL, JDEP_MISC, JDEP_ENCLOSING, JDEP_CLASS,
961         JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, JDEP_TO_RESOLVE,
962         JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P, struct
963         jdeplist_s, jdeplists, CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN,
964         JDEP_INSERT, SET_TYPE_FOR_RESOLUTION, WFL_STRIP_BRACKET,
965         STRING_STRIP_BRACKETS, PROMOTE_RECORD_IF_COMPLETE,
966         BLOCK_CHAIN_DECL, GET_CURRENT_BLOCK, EXPR_WFL_GET_LINECOL,
967         EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION, QUAL_DECL_TYPE,
968         GET_SKIP_TYPE, COMPLETE_CHECK_OP, COMPLETE_CHECK_OP_0,
969         COMPLETE_CHECK_OP_1, COMPLETE_CHECK_OP_2, BUILD_APPEND,
970         BUILD_STRING_BUFFER, BUILD_THROW, SET_WFL_OPERATOR,
971         PATCH_METHOD_RETURN_ERROR, CHECK_METHODS, CLEAR_DEPRECATED,
972         CHECK_DEPRECATED_NO_RESET, CHECK_DEPRECATED, REGISTER_IMPORT,
973         CURRENT_OSB, struct parser_ctxt, GET_CPC_LIST, CPC_INNER_P,
974         GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, GET_CPC_DECL_NODE,
975         GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
976         GET_ENCLOSING_CPC_CONTEXT, INNER_ENCLOSING_SCOPE_CHECK, PUSH_CPC,
977         PUSH_ERROR, POP_CPC, DEBUG_CPC, CPC_INITIALIZER_LIST,
978         CPC_STATIC_INITIALIZER_LIST, CPC_INSTANCE_INITIALIZER_LIST,
979         CPC_INITIALIZER_STMT, CPC_STATIC_INITIALIZER_STMT,
980         CPC_INSTANCE_INITIALIZER_STMT, SET_CPC_INITIALIZER_STMT,
981         SET_CPC_STATIC_INITIALIZER_STMT,
982         SET_CPC_INSTANCE_INITIALIZER_STMT, JAVA_NOT_RADIX10_FLAG,
983         java_complete_class, java_check_circular_reference,
984         java_fix_constructors, java_layout_classes, java_reorder_fields,
985         java_method_add_stmt, java_get_line_col, reset_report,
986         java_init_lex, yyparse, java_parse, yyerror, java_expand_classes,
987         java_finish_classes, ctxp, ctxp_for_generation,
988         ctxp_for_generation_last): Removed.
989         * expr.c (force_evaluation_order): Don't mention NEW_CLASS_EXPR.
990         * mangle.c (utf8_cmp): New function.
991         (cxx_keywords): New global.
992         (cxx_keyword_p): New function.
993         * jvspec.c (JAVA_START_CHAR): Removed obsolete comment.
994         * java-tree.def (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR,
995         NEW_ANONYMOUS_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
996         CASE_EXPR, DEFAULT_EXPR, JAVA_CATCH_EXPR, SYNCHRONIZED_EXPR,
997         THROW_EXPR, CONDITIONAL_EXPR, INSTANCEOF_EXPR, NEW_ARRAY_INIT,
998         CLASS_LITERAL, JAVA_EXC_OBJ_EXPR): Removed.
999         * Make-lang.in (java.srcextra): Do nothing.
1000         (parse.c, keyword.h, gt-java-parse.h): Removed targets.
1001         (JAVA_OBJS): Don't mention deleted files.
1002         (java.mostlyclean): Likewise.
1003         (java.clean): Likewise.
1004         (JAVA_LEX_C): Removed.
1005         (buffer.o, check-init.o, parse.o): Remove unused targets.
1006         (typeck.o): Updated.
1007         * jcf-parse.c (read_class): Comment out unused code.
1008         (java_layout_seen_class_methods): New function.
1009         (parse_source_file_1, parse_source_file_2, parse_source_file_3):
1010         Removed.
1011         (java_parse_file): Comment out unused code.  Don't use 'ctxp'.
1012         (init_jcf_parse): Removed.
1013         * config-lang.in (gtfiles): Remove deleted files.
1014         * decl.c (java_init_decl_processing): Don't initialize
1015         finit_identifier_node, instinit_identifier_node,
1016         length_identifier_node, super_identifier_node,
1017         continue_identifier_node, access0_identifier_node.  Don't call
1018         init_jcf_parse.
1019         * class.c (cyclic_inheritance_report): New global.
1020         (add_method_1): Don't use
1021         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND.
1022         (maybe_layout_super_class): Comment out code.
1023         (safe_layout_class): New function.
1024         * java-gimplify.c (java_gimplify_expr): Removed CASE_EXPR,
1025         DEFAULT_EXPR, NEW_ARRAY_INIT, JAVA_CATCH_EXPR, JAVA_EXC_OBJ_EXPR,
1026         UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_ANONYMOUS_ARRAY_EXPR,
1027         NEW_CLASS_EXPR, SYNCHRONIZED_EXPR, CONDITIONAL_EXPR,
1028         INSTANCEOF_EXPR, CLASS_LITERAL, THIS_EXPR.
1029         (java_gimplify_case_expr): Removed.
1030         (java_gimplify_default_expr): Likewise.
1031         (java_gimplify_new_array_init): Likewise.
1032         * parse.y: Removed.
1033         * keyword.gperf, keyword.h: Removed.
1034         * chartables.h: Removed.
1035         * check-init.c: Removed.
1036         * buffer.c, buffer.h: Removed.
1037         * convert.h: Removed.
1038         * gen-table.pl: Removed.
1039         * lex.c, lex.h: Removed.
1040
1041 2007-01-02  Andrew Haley  <aph@redhat.com>
1042
1043         * expr.c (expand_java_arraystore): Make sure we perform a bounds
1044         check at runtime before we perform a type check.
1045
1046 2006-12-19  Andrew Haley  <aph@redhat.com>
1047
1048         * decl.c: Bump minor BC ABI version.
1049
1050 2006-12-13  Gary Benson  <gbenson@redhat.com>
1051
1052         * jcf-depend.c (jcf_dependency_add_file): Mark filename unused.
1053
1054 2006-12-12  Tom Tromey  <tromey@redhat.com>
1055
1056         * lang-specs.h: Pass -M options to jc1.
1057         * jcf-depend.c (jcf_dependency_add_file): Don't emit
1058         dependencies.
1059
1060 2006-12-07  Mohan Embar  <gnustuff@thisiscool.com>
1061
1062         * jcf-path.c (jcf_path_compute): Use platform PATH_SEPARATOR.
1063
1064 2006-12-06  Mohan Embar  <gnustuff@thisiscool.com>
1065
1066         * lang-specs.h: Pass '%U'-based options as separate arguments.
1067
1068 2006-12-05  Tom Tromey  <tromey@redhat.com>
1069
1070         PR java/29495:
1071         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Mark fields and
1072         classes as well.
1073         * class.c (add_field): Handle ACC_SYNTHETIC.
1074         (add_method_1): Likewise.  Handle bridge and varargs.
1075         (get_access_flags_from_decl): Handle synthetic, bridge, varargs,
1076         annotation.
1077         (set_class_decl_access_flags): Handle synthetic and annotation.
1078         * java-tree.h (METHOD_BRIDGE): New macro.
1079         (METHOD_VARARGS): Likewise.
1080         (TYPE_SYNTHETIC): Likewise.
1081         (TYPE_ANNOTATION): Likewise.
1082         (lang_type): New fields 'synthetic' and 'annotation'.
1083         (lang_decl_func): New fields 'varargs' and 'bridge'.
1084
1085 2006-12-04  Andrew Haley  <aph@redhat.com>
1086
1087         * jcf-parse.c (rewrite_reflection_indexes): Don't do anything if
1088         there's no map.
1089
1090 2006-11-29  Gary Benson  <gbenson@redhat.com>
1091
1092         * expr.c (rewrite_arglist_getcaller): Reorder.
1093
1094 2006-11-29  Andrew Haley  <aph@redhat.com>
1095
1096         * expr.c (rewrite_arglist_getcaller): Remove DECL_INLINE.
1097         * lang.c (java_decl_ok_for_sibcall): Check for DECL_INLINE.
1098
1099 2006-11-23  Andrew Haley  <aph@redhat.com>
1100
1101         * expr.c (rewrite_arglist_getcaller): New.
1102         (rewrite_arglist_getclass): Fix indentation.
1103         (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and 
1104         gnu.classpath.VMStackWalker.getCallingClassLoader().
1105         * builtins.c (initialize_builtins): Remove duplicate def'n of
1106         __sync_synchronize.
1107         Add __builtin_return_address.
1108
1109 2006-11-22  Andrew Haley  <aph@redhat.com>
1110
1111         * jcf-reader.c (get_attribute): Mark attr_type unused.
1112
1113         * builtins.c (compareAndSwapObject_builtin): Fix declaration.
1114
1115 2007-01-08  Richard Guenther  <rguenther@suse.de>
1116
1117         * lex.c (do_java_lex): Use build_int_cst_wide_type.
1118         * jcf-parse.c (get_constant): Likewise.
1119
1120 2006-11-12  Jan Hubicka  <jh@suse.cz>
1121
1122         * resource.c (compile_resource_data): Update for new varpool names.
1123         * java/class.c (build_utf8_ref): Likewise.
1124
1125 2006-11-12  David Daney  <ddaney@avtrex.com>
1126
1127         PR java/29805
1128         * typeck.c (build_java_array_type): Increase buffer sizes.
1129
1130 2006-11-11  Richard Guenther  <rguenther@suse.de>
1131
1132         * check-init.c (check_init): Remove handling of FIX_CEIL_EXPR,
1133         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
1134
1135 2006-11-06  Andrew Haley  <aph@redhat.com>
1136
1137         * java-tree.h (CONSTANT_LazyFlag): New.
1138         * constants.c (build_constants_constructor): Mask CONSTANT_LazyFlag.
1139         * jcf-parse.c (handle_innerclass_attribute): Write attribute to
1140         reflection_data.
1141         (handle_constant): Return 0 for dummy cpool entries.
1142         Handle constants of kind Class.
1143         Handle constants of kind NameAndType.
1144         (handle_enclosingmethod_attribute): New.
1145         (handle_signature_attribute): New.
1146         (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New.
1147         (HANDLE_SIGNATURE_ATTRIBUTE): New.
1148         (handle_constant): Use unmangle_classname()rather than calling
1149         identifier_subst() directly.
1150
1151 2006-11-02  Andrew Haley  <aph@redhat.com>
1152
1153         * java-tree.h (FIELD_ENUM): New.
1154         (lang_decl_var.field_enum): New.
1155         (lang_type.enum_class): New.
1156         (CLASS_ENUM): New.
1157         * class.c (set_class_decl_access_flags): Handle enum types.
1158         (add_field): Handle enum fields.
1159         (get_access_flags_from_decl): Likewise.
1160
1161         * class.c (make_class_data): Put reflection_data into rodata.
1162
1163 2006-11-01  Andrew Haley  <aph@redhat.com>
1164
1165         * jcf-parse.c (field_offsets, bit_obstack): New variables.
1166         (jcf_parse): Write end marker to annotation_data.
1167         (java_parse_file): Create field_offsets bitmap.  Destroy it.
1168         (annotation_grow, annotation_rewrite_byte) 
1169         (annotation_rewrite_short, annotation_rewrite_int) 
1170         (annotation_read_short, annotation_write_byte) 
1171         (annotation_write_short, annotation_write_int) 
1172         (handle_long_constant, handle_constant, handle_element_value) 
1173         (handle_annotation, handle_annotations) 
1174         (handle_annotation_attribute, rewrite_reflection_indexes) 
1175         (handle_member_annotations, handle_parameter_annotations) 
1176         (handle_default_annotation): New functions.
1177         (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE) 
1178         (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE) 
1179         (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) 
1180         (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) 
1181         (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions.
1182         * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New. 
1183         (TYPE_REFLECTION_DATA): New.
1184         (TYPE_REFLECTION_DATASIZE): New.
1185         * jcf.h (enum cpool_tag): Convert a bunch of #define constants to
1186         an enum.
1187         * jcf-reader.c (get_attribute): Pass field/method index and
1188         attribute type to get_attribute().
1189         * constants.c (find_class_or_string_constant): Make nonstatic.
1190         (cpool_for_class): Likewise.
1191         (build_constants_constructor): Separate string and scalar types.
1192         * class.c (make_class_data): Generate field_indexes permutation.
1193         Pass it to rewrite_reflection_indexes().
1194         (make_class_data): Generate constructor for reflection_data field.
1195
1196 2006-10-20  Tom Tromey  <tromey@redhat.com>
1197
1198         * gcj.texi (Top): Don't mention jv-scan.
1199         (Invoking gcj): Likewise.
1200         (Invoking gcjh): Likewise.
1201         (Invoking gjnih): Likewise.
1202         (Invoking gij): Likewise.
1203         (Invoking gcj-dbtool): Likewise.
1204         (Invoking jv-scan): Removed.
1205         * parse-scan.y: Removed.
1206         * jv-scan.c: Removed.
1207         * config-lang.in (stagestuff): Don't mention jv-scan.
1208         * Make-lang.in (java): Removed jv-scan.
1209         (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
1210         (JVSCAN_OBJS): Removed.
1211         (jv-scan$(exeext)): Likewise.
1212         (JAVA_MANFILES): Removed jv-scan.1.
1213         (java.uninstall): Don't mention jv-scan.
1214         (java.mostlyclean): Likewise.
1215         (java.maintainer-clean): Likewise.
1216         (.INTERMEDIATE): Likewise.
1217         (java/jv-scan.o): Removed.
1218         (jv-scan.pod): Likewise.
1219         (java.srcextra): Don't mention parse-scan.c.
1220         (java.mostlyclean): Likewise.
1221         (java/parse-scan.c): Removed.
1222         (java/parse-scan.o-warn): Removed.
1223         (java/parse-scan.o): Removed.
1224
1225 2006-10-20  Tom Tromey  <tromey@redhat.com>
1226
1227         * lang.c (java_handle_option): Don't use
1228         jcf_write_base_directory.
1229         * jcf.h (jcf_write_base_directory): Removed.
1230         * parse.y (java_expand_classes): Don't call write_classfile.
1231         * config-lang.in (gtfiles): Removed jcf-write.c.
1232         * Make-lang.in (JAVA_OBJS): Removed jcf-write.o.
1233         (java/jcf-write.o): Removed.
1234         * jcf-parse.c (parse_class_file): Don't call write_classfile.
1235         * java-tree.h (write_classfile): Removed declaration.
1236         * jcf-write.c: Removed.
1237
1238 2006-10-20  Tom Tromey  <tromey@redhat.com>
1239
1240         * Make-lang.in (java): Removed gjnih, gcjh.
1241         (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
1242         (GCJH_OBJS): Removed.
1243         (GJNIH_OBJS): Likewise.
1244         (gjnih$(exeext)): Likewise.
1245         (gcjh$(exeext)): Likewise.
1246         (JAVA_MANFILES): Removed gcjh.1, gjnih.1.
1247         (java.install-common): Don't special case gcjh.
1248         (java.uninstall): Don't mention gcjh, gjnih.
1249         (java.mostlyclean): Likewise.
1250         (java.maintainer-clean): Likewise.
1251         (.INTERMEDIATE): Likewise.
1252         (gcjh.pod): Removed.
1253         (gjnih.pod): Likewise.
1254         (GCJH_TARGET_INSTALL_NAME): Removed.
1255         (java/gjavah-jni.o): Removed.
1256         (java/gjavah.o): Likewise.
1257         * config-lang.in (stagestuff): Removed gjnih, gcjh.
1258         * gjavah.c: Removed.
1259
1260 2006-10-17  Tom Tromey  <tromey@redhat.com>
1261
1262         * jcf-dump.c (print_element_value): Expect a utf8 constant in the
1263         "string" case.
1264
1265 2006-10-17  Tom Tromey  <tromey@redhat.com>
1266
1267         * jvgenmain.c (main): Handle -findirect-dispatch.
1268         * jvspec.c (jvgenmain_spec): Pass -findirect-dispatch to
1269         jvgenmain.
1270
1271 2006-10-06  Andrew Haley  <aph@redhat.com>
1272
1273         * builtins.c (compareAndSwapInt_builtin): Check that we really do
1274         have a compare_and_swap builtin.
1275         (compareAndSwapLong_builtin): Likewise.
1276         (compareAndSwapObject_builtin): Likewise.
1277
1278 2006-10-04  Andrew Haley  <aph@redhat.com>
1279
1280         * builtins.c (java_builtins): Add compareAndSwapInt,
1281         compareAndSwapLong, compareAndSwapObject, putOrderedInt,
1282         putOrderedLong, putOrderedObject, putIntVolatile, putLongVolatile,
1283         putObjectVolatile, getObjectVolatile, getIntVolatile,
1284         getLongVolatile, getLong.
1285         (UNMARSHAL3): New macro.
1286         (UNMARSHAL4): Likewise.
1287         (UNMARSHAL5): Likewise.
1288         (build_arglist_for_builtin): New function.
1289         (build_addr_sum, build_check_this): New functions.
1290         (putObject_builtin. compareAndSwapInt_builtin,
1291         compareAndSwapLong_builtin, compareAndSwapObject_builtin,
1292         putVolatile_builtin, getVolatile_builtin): New builtins.
1293
1294 2006-06-08  Andrew Haley  <aph@redhat.com>
1295  
1296         * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to
1297         get_symbol_table_index().
1298         (maybe_rewrite_invocation): Set SPECIAL if we need to access a
1299         private method.
1300         (build_known_method_ref): New arg: special.  Pass it to
1301         get_symbol_table_index.
1302         (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of
1303         the method list.
1304         (build_invokevirtual): New arg: special.  Pass it to
1305         get_symbol_table_index.
1306         (expand_invoke): New variable: special.
1307         Pass it to maybe_rewrite_invocation().
1308         Pass it to build_known_method_ref().
1309         * class.c (build_symbol_entry): Add new arg: special.  Use it to
1310         build the symbol table conbstructor.
1311         (emit_symbol_table): Extract SPECIAL from the method list and pass
1312         it to build_symbol_entry().
1313         * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set
1314         special accordingly.
1315  
1316 2006-09-08  Andrew Haley  <aph@redhat.com>
1317
1318         * class.c (layout_class_method): Use build_java_signature, not
1319         build_java_argument_signature.  Use lookup_java_method, not
1320         lookup_argument_method.
1321
1322 2006-08-16  Jakub Jelinek  <jakub@redhat.com>
1323             Bryce McKinlay  <bryce@mckinlay.net.nz>
1324
1325         * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.
1326
1327 2006-07-18  Tom Tromey  <tromey@redhat.com>
1328
1329         * lang.opt: Added missing -W options.
1330
1331 2006-07-12  Tom Tromey  <tromey@redhat.com>
1332
1333         PR java/28329:
1334         * lang-specs.h: Pass '%U'-based options as separate arguments.
1335         Use -faux-classpath.
1336         * lang.c (java_handle_option): Handle OPT_faux_classpath.
1337         * lang.opt (faux-classpath): New option.
1338
1339 2006-07-07  Tom Tromey  <tromey@redhat.com>
1340
1341         * class.c (make_class_data): Set value for reflection_data field.
1342         * decl.c (java_init_decl_processing): Add reflection_data field.
1343
1344 2006-07-07  Tom Tromey  <tromey@redhat.com>
1345
1346         * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): Declare locals
1347         earlier.
1348         (HANDLE_SIGNATURE_ATTRIBUTE): Likewise.
1349
1350 2006-07-07  Andrew Haley  <aph@redhat.com>
1351
1352         * jcf-parse.c (set_source_filename): Don't check for
1353         CLASS_FROM_CURRENTLY_COMPILED_P.
1354         Remove // comments.
1355
1356 2006-07-07  Andrew Haley  <aph@redhat.com>
1357
1358         * java-tree.h (java_read_sourcefilenames): Declare.
1359         * lang.c (java_handle_option): Call java_read_sourcefilenames().
1360         * lang.opt (fsource-filename): New opt.
1361         * lang-specs.h: Add -fsource-filename.
1362         * jcf-parse.c (num_files, filenames): New variables.
1363         (reverse, cmpstringp, java_read_sourcefilenames,
1364         find_sourcefile): New.
1365         (set_source_filename): Call find_sourcefile to find the real name
1366         of a source file.
1367
1368 2006-06-27  Tom Tromey  <tromey@redhat.com>
1369
1370         * jcf-reader.c (get_attribute): Handle EnclosingMethod,
1371         Signature, LocalVariableTypeTable, annotation attributes.
1372         * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New macro.
1373         (HANDLE_SIGNATURE_ATTRIBUTE): Likewise.
1374         (HANDLE_START_FIELD): Mention 'descriptor', not 'signature'.
1375         (HANDLE_METHOD): Likewise.
1376         (HANDLE_LOCALVARIABLETYPETABLE_ATTRIBUTE): New macro.
1377         (print_annotation): New function.
1378         (print_element_value): Likewise.
1379         (indent): Likewise.
1380         (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE): New macro.
1381         (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE): Likewise.
1382         (print_parameter_annotations): New function.
1383         (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): New macro.
1384         (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE):
1385         Likewise.
1386         (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): Likewise.
1387         (print_annotations): New function.
1388
1389 2006-06-23  Tom Tromey  <tromey@redhat.com>
1390
1391         * lang-specs.h: Default -fsource and -ftarget to 1.5.  If
1392         emitting class files, always use 1.5.
1393         * gcj.texi (Input Options): Document -fsource.
1394         (Code Generation): Document -ftarget.
1395
1396 2006-06-21  Tom Tromey  <tromey@redhat.com>
1397
1398         PR java/28089:
1399         * expr.c (expand_java_field_op): Initialize field's declaring
1400         class.
1401
1402 2006-06-20  Tom Tromey  <tromey@redhat.com>
1403
1404         * expr.c (push_value): Always flush quick stack.
1405
1406 2006-06-19  Tom Tromey  <tromey@redhat.com>
1407
1408         * expr.c (push_value): Also flush quick stack if value is a
1409         component_ref.
1410
1411 2006-06-19  Tom Tromey  <tromey@redhat.com>
1412
1413         * expr.c (push_value): Flush quick stack if value has side
1414         effects.
1415
1416 2006-06-13  Tom Tromey  <tromey@redhat.com>
1417
1418         * class.c (is_compiled_class): Explicitly check for current
1419         class.
1420
1421 2006-06-09  Tom Tromey  <tromey@redhat.com>
1422
1423         * gjavah.c (decompile_method): Don't decompile a static field
1424         accessor method.
1425
1426 2006-06-06  Tom Tromey  <tromey@redhat.com>
1427
1428         * lang-specs.h <jc1>: Add .jar file to command line if
1429         -fsaw-java-file.  Also, remove -ffilelist-file in this case.
1430
1431 2006-06-05  Tom Tromey  <tromey@redhat.com>
1432
1433         * jcf-dump.c (print_access_flags): Handle varargs, bridge,
1434         synthetic, enum, annotation.
1435         * jcf.h (ACC_BRIDGE): New macro.
1436         (ACC_VARARGS): Likewise.
1437         (ACC_SYNTHETIC): Likewise.
1438         (ACC_ENUM): Likewise.
1439         (ACC_ANNOTATION): Likewise.
1440
1441 2006-06-04  Tom Tromey  <tromey@redhat.com>
1442
1443         * lang.opt (-fsaw-java-file, -fsource, -ftarget): New options.
1444         * jvspec.c (jvgenmain_spec): Remove -fsaw-java-file, -fsource,
1445         and -ftarget.
1446         (lang_specific_driver): Removed dead code.  Add -fsaw-java-file
1447         when needed.  Handle classpath-setting.
1448         * Make-lang.in ($(GCJ)$(exeext)): Link in jcf-path.o.
1449         * lang-specs.h: Rewrote.
1450
1451 2006-06-04  Tom Tromey  <tromey@redhat.com>
1452
1453         * jcf-io.c (find_class): Set source_ok to 0.
1454         * jcf-parse.c (jcf_parse): Disable gnu.gcj.gcj-compiled warning.
1455         (parse_class_file): Don't call java_mark_class_local.
1456         (java_parse_file): Skip .java files.  Call java_mark_class_local
1457         before lowering any code.
1458         (parse_zip_file_entries): Don't call duplicate_class_warning
1459         here.
1460         (process_zip_dir): ... call it here.
1461         * class.c (add_field): Don't mark field external if it is being
1462         compiled into this object.
1463         (make_class_data): Handle situation where class_dtable_decl is
1464         created before Class is compiled.
1465         (is_compiled_class): Don't assume files in zip are compiled into
1466         this object.
1467         (layout_class_method): Don't mark method external if it is being
1468         compiled into this object.
1469
1470 2006-06-04  Tom Tromey  <tromey@redhat.com>
1471
1472         * jcf-path.c (jcf_path_compute): New function.
1473         * jcf.h (jcf_path_compute): Declare.
1474
1475 2006-10-23 Rafael Avila de Espindola  <rafael.espindola@gmail.com>
1476
1477         * decl.c: Include langhooks.h.
1478         (builtin_function): Remove.
1479         (java_init_decl_processing): Replace calls to builtin_function
1480         with add_builtin_function.
1481         * Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o.
1482         (java/decl.o): Depend on langhooks.h.
1483         * java-tree.h (builtin_function): Remove.
1484
1485 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
1486
1487         * Make-lang.in: Added "java.pdf", "gcj.pdf" target support.
1488
1489 2006-09-12  Tom Tromey  <tromey@redhat.com>
1490
1491         * expr.c (push_value): Always flush quick stack.
1492
1493 2006-09-12  Tom Tromey  <tromey@redhat.com>
1494
1495         PR java/29013:
1496         * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Always note
1497         the push of the called method's return result.
1498
1499 2006-09-12  Tom Tromey  <tromey@redhat.com>
1500
1501         * jvspec.c (lang_specific_driver): Read spec file even if
1502         -fsyntax-only.
1503
1504 2006-09-12  Tom Tromey  <tromey@redhat.com>
1505
1506         PR java/28754:
1507         * expr.c (expand_java_field_op): Initialize field's declaring
1508         interface if necessary.
1509
1510 2006-09-12  Tom Tromey  <tromey@redhat.com>
1511
1512         PR java/28892:
1513         * expr.c (expand_java_field_op): No error for assignments not in
1514         class initializer or constructor.
1515
1516 2006-08-22  Andrew Haley  <aph@redhat.com>
1517
1518         * decl.c (java_add_stmt): Give the statement list a type.
1519
1520 2006-08-16  Jakub Jelinek  <jakub@redhat.com>
1521             Bryce McKinlay  <bryce@mckinlay.net.nz>
1522
1523         * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.
1524
1525 2006-08-10  Simon Martin  <simartin@users.sourceforge.net>
1526
1527         PR java/8923
1528         * parse.y (build_incdec): Emit an error instead of an ICE if '++'
1529         or '--' is used with a constant operand.
1530         (java_complete_lhs): When processing a '++' or '--' expression,
1531         don't call java_complete_tree but java_complete_lhs, so that a
1532         static final variable operand is never replaced by its value. This
1533         avoids an ICE later on.
1534         (patch_unaryop): Fixed typo in comment.
1535
1536 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1537
1538         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1539
1540 2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>
1541
1542         * builtins.c (check_for_builtin): If a builtin could result in a
1543         direct call being generated, don't use it if flag_indirect_dispatch
1544         is set.
1545
1546 2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>
1547
1548         * gcj.texi (Invocation): Corrections for Invocation API example.
1549
1550 2006-07-04  Andrew Haley  <aph@redhat.com>
1551
1552         * class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the
1553         entry.
1554
1555 2006-06-21  Andrew Haley  <aph@redhat.com>
1556
1557         * java-tree.h (update_aliases): Remove
1558         * expr.c (expand_iinc): Remove call to update_aliases().
1559         (STORE_INTERNAL): Likewise.
1560         * decl.c (update_aliases, initialize_local_variable) 
1561         (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls.
1562
1563 2006-06-19  Andrew Haley  <aph@redhat.com>
1564
1565         PR java/1305
1566         PR java/27908
1567         * expr.c (java_modify_addr_for_volatile): New function.
1568         (expand_java_field_op): Handle volatile fields.
1569         * java-gimplify.c (java_gimplify_component_ref): Call
1570         java_modify_addr_for_volatile to give the field_ref the correct
1571         volatile type.
1572         (java_gimplify_modify_expr): Likewise.
1573         * java-tree.h (java_modify_addr_for_volatile): New decl.
1574
1575 2006-06-17  Karl Berry  <karl@gnu.org>
1576
1577         * gcj.texi (@dircategory): Use "Software development" instead
1578         of "Programming", following the Free Software Directory.
1579
1580 2006-06-16  Andrew Haley  <aph@redhat.com>
1581
1582         * class.c (make_class_data): When using flag_indirect_classes,
1583         don't initialize the vtable of Class instances.
1584
1585 2006-06-09  Andrew Haley  <aph@redhat.com>
1586
1587         PR java/1305
1588         PR java/27908
1589         * builtins.c (initialize_builtins): Add __sync_synchronize().
1590         * class.c (add_field): Mark volatile fields.
1591         * java-gimplify.c (java_gimplify_expr): Call new functions to
1592         handle self-modifying exprs and COMPONENT_REFs.
1593         (java_gimplify_component_ref): New.
1594         (java_gimplify_modify_expr): Add handling for volatiles.
1595
1596 2006-06-08  Tom Tromey  <tromey@redhat.com>
1597
1598         * gcj.texi (libgcj Runtime Properties): Document
1599         gnu.gcj.user.realname.
1600
1601 2006-06-08  Andrew Haley  <aph@redhat.com>
1602
1603         * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to
1604         get_symbol_table_index().
1605         (maybe_rewrite_invocation): Set SPECIAL if we need to access a
1606         private method.
1607         (build_known_method_ref): New arg: special.  Pass it to
1608         get_symbol_table_index.
1609         (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of
1610         the method list.
1611         (build_invokevirtual): New arg: special.  Pass it to
1612         get_symbol_table_index.
1613         (expand_invoke): New variable: special.
1614         Pass it to maybe_rewrite_invocation().
1615         Pass it to build_known_method_ref().
1616         * class.c (build_symbol_entry): Add new arg: special.  Use it to
1617         build the symbol table conbstructor.
1618         (emit_symbol_table): Extract SPECIAL from the method list and pass
1619         it to build_symbol_entry().
1620         * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set
1621         special accordingly.
1622
1623 2006-06-06  David Daney  <ddaney@avtrex.com>
1624
1625         * gcj.texi (libgcj Runtime Properties): Document
1626         gnu.gcj.runtime.NameFinder.show_raw and
1627         gnu.gcj.runtime.NameFinder.remove_unknown.
1628
1629 2006-06-06  Tom Tromey  <tromey@redhat.com>
1630
1631         * jcf-dump.c (print_access_flags): Handle varargs, bridge,
1632         synthetic, enum, annotation.
1633         * jcf.h (ACC_BRIDGE): New macro.
1634         (ACC_VARARGS): Likewise.
1635         (ACC_SYNTHETIC): Likewise.
1636         (ACC_ENUM): Likewise.
1637         (ACC_ANNOTATION): Likewise.
1638
1639 2006-06-06  Mike Stump  <mrs@apple.com>
1640
1641         * Make-lang.in: Rename to htmldir to build_htmldir to avoid
1642         installing during build.
1643
1644 2006-05-31  Thomas Fitzsimmons  <fitzsim@redhat.com>
1645
1646         * gcj.texi (Extensions): Document the new gcj-dbtool-based
1647         classname-to-library resolution mechanism.
1648         Declare the old gnu.gcj.runtime.VMClassLoader.library_control
1649         mechanism deprecated.
1650         (libgcj Runtime Properties): Document
1651         gnu.gcj.runtime.VMClassLoader.library_control's new default.
1652
1653 2006-05-29  Jakub Jelinek  <jakub@redhat.com>
1654
1655         * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64)
1656         bit wide type.
1657         (jword): Define to uint64 on 64-bit arches.
1658         * jcf-dump.c (print_constant): Cast JPOOL_UINT to long.
1659
1660 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
1661
1662         * class.c, except.c, expr.c, java-gimplify.c: Fix comment
1663         typos.
1664
1665 2006-05-26  Tom Tromey  <tromey@redhat.com>
1666
1667         * expr.c (java_push_constant_from_pool): Handle 'ldc class'.
1668         * verify-glue.c (vfy_class_type): New function.
1669         * verify-impl.c (check_constant): Allow 'ldc class'.
1670         * verify.h (vfy_class_type): Declare.
1671
1672 2006-05-25  Andrew Haley  <aph@redhat.com>
1673
1674         PR java/27756
1675         * decl.c (maybe_pushlevels): When variable ranges are non-nested
1676         update all lifetimes, not just the first one.
1677
1678 2006-05-24  Tom Tromey  <tromey@redhat.com>
1679
1680         * java-tree.h: Fixed flag documentation.
1681
1682 2006-05-24  Tom Tromey  <tromey@redhat.com>
1683
1684         PR libgcj/27729:
1685         * jcf.h (ACC_INVISIBLE): Changed value.
1686
1687 2006-05-24  Andrew Haley  <aph@redhat.com>
1688
1689         PR java/27754
1690         * decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a
1691         COMPOUND_EXPR.
1692
1693 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1694
1695         * lang.opt (femit-class-file): Remove VarExists.
1696
1697 2006-05-16  Tom Tromey  <tromey@redhat.com>
1698
1699         * verify-impl.c (verify_instructions_0) <op_return>: Special case
1700         for Object.<init>.
1701
1702 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1703
1704         PR driver/26885
1705         * Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with
1706         $(GCC_OBJS).
1707
1708 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
1709
1710         * Make-lang.in (java/decl.o): Add dependency on $(TARGET_H).
1711         (java/expr.o): Replace target.h with $(TARGET_H).
1712         (java/parse.o): Likewise.
1713
1714 2006-05-10  Andrew Haley  <aph@redhat.com>
1715
1716         * class.c (emit_indirect_register_classes): Fix comment.
1717
1718 2006-05-04  Tom Tromey  <tromey@redhat.com>
1719
1720         * java-tree.h (uses_jv_markobj_p): Declare.
1721         * class.c (uses_jv_markobj_p): Removed.
1722         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define.
1723         (get_boehm_type_descriptor): Use it.
1724         (uses_jv_markobj_p): Moved from class.c.  Return bool.
1725
1726 2006-05-04  Tom Tromey  <tromey@redhat.com>
1727
1728         * java-tree.def (THIS_EXPR): Now a tcc_expression.
1729
1730 2006-05-04  Andrew Haley  <aph@redhat.com>
1731
1732         * class.c (make_field_value): Always build_address_of fdecl if
1733         there is an initializer.
1734
1735 2006-05-03  Andrew Haley  <aph@redhat.com>
1736
1737         PR libgcj/27352
1738         * expr.c (maybe_rewrite_invocation): New function.
1739         (rewrite_arglist_getclass): Likewise.
1740         (rules): New.
1741         (expand_invoke): Call maybe_rewrite_invocation.
1742         * parse.y (patch_invoke): Likewise.
1743         * java-tree.h: (maybe_rewrite_invocation): New function.
1744
1745 2006-04-21  Andrew Haley  <aph@redhat.com>
1746
1747         * lang.c (java_init): Handle flag_indirect_classes.
1748         * jvgenmain.c: Use "class$$" instead of "class$".
1749         * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as
1750         DECLs.
1751         (mangle_class_field): Special case "class$$" as well as "class$".
1752         * constants.c (build_ref_from_constant_pool): If
1753         flag_indirect_classes, generate a ref into the heap.
1754         * decl.c (constants_field_decl_node,
1755         constants_data_field_decl_node): New.
1756         * class.c (build_static_class_ref): New.
1757         (build_classdollar_field): Factor out from build_class_ref().
1758         (make_field_value): Handle static fields in heap.
1759         (make_class_data): Make sure we get a static ref to class.
1760         Make class initializer const if flag_indirect_classes.
1761         (register_class): Build a class_ref for initialization if
1762         flag_indirect_classes.
1763         (emit_indirect_register_classes): New.
1764
1765 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
1766
1767         * expr.c, gjavah.c: Fix comment typos.
1768
1769 2006-04-03  Andrew Haley  <aph@redhat.com>
1770
1771         PR java/26858
1772         * expr.c (build_field_ref): Don't check the field offset if
1773         flag_syntax_only.
1774
1775 2006-03-30  Andrew Haley  <aph@redhat.com>
1776
1777         PR java/26858
1778         * lang.c (java_attribute_table): New.
1779         (LANG_HOOKS_ATTRIBUTE_TABLE): Define.
1780         * expr.c (build_field_ref): Add a null pointer check for all
1781         fields of offset > 4k.  Don't do so for accesses via the this
1782         pointer, which we know can never be null.
1783         * class.c (build_java_method_type): Mark arg 1 of all nonstatic
1784         methods nonnull.
1785
1786 2006-03-30  Carlos O'Donell  <carlos@codesourcery.com>
1787
1788         * Make-lang.in: Rename docdir to gcc_docdir.
1789
1790 2006-03-30  Tom Tromey  <tromey@redhat.com>
1791
1792         PR java/26042:
1793         * parse.y (java_reorder_fields): Reset superclass field's size as
1794         well.
1795
1796 2006-03-28  Tom Tromey  <tromey@redhat.com>
1797
1798         PR java/26390:
1799         * parse.y (find_most_specific_methods_list): Added 'class'
1800         argument.
1801         (lookup_method_invoke): Updated.
1802
1803 2006-03-15  Tom Tromey  <tromey@redhat.com>
1804
1805         * jcf-write.c (generate_bytecode_insns): Use qualifying type for
1806         non-static method calls.
1807
1808 2006-03-15  David Daney  <ddaney@avtrex.com>
1809
1810         * java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its
1811         declaration.
1812
1813 2006-03-15  David Daney  <ddaney@avtrex.com>
1814
1815         * lang.opt (-freduced-reflection): New option.
1816         * lang.c (java_post_options): Generate an error if
1817         -freduced-reflection used with -fjni or -findirect-dispatch.
1818         * java-tree.h (flag_reduced_reflection): Declare new variable.
1819         * boehm.c (get_boehm_type_descriptor): Indicate all pointers
1820         if bitmap overflows and flag_reduced_reflection set.
1821         * class.c (uses_jv_markobj_p): New function.
1822         (make_class_data): Moved generation of vtable to before
1823         reflection data, generate less reflection data if
1824         flag_reduced_reflection set.
1825         * gcj.texi: Document -freduced-reflection.
1826
1827 2006-03-15  Tom Tromey  <tromey@redhat.com>
1828
1829         PR java/26638:
1830         * class.c (get_interface_method_index): Don't put <clinit> into
1831         interface table.
1832
1833 2006-03-15  Tom Tromey  <tromey@redhat.com>
1834
1835         * parse.y (analyze_clinit_body): Ignore empty statements.
1836
1837 2006-03-08  David Daney  <ddaney@avtrex.com>
1838
1839         * gcj.texi: Document -static-libgcj option.
1840
1841 2006-02-20  Andrew Haley  <aph@redhat.com>
1842
1843         * jcf-parse.c (parse_class_file): Set input_location from
1844         current_class.
1845
1846 2006-02-15  Andrew Haley  <aph@redhat.com>
1847
1848         * class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here.
1849         (make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL,
1850         TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here.
1851
1852 2006-02-09  Andrew Haley  <aph@redhat.com>
1853
1854         PR java/26192
1855         * expr.c (expand_invoke): Allow methods in arrays to be resolved
1856         in their superclass.
1857
1858         * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for
1859         array types.
1860         
1861 2006-02-08  Tom Tromey  <tromey@redhat.com>
1862
1863         PR java/22578:
1864         * check-init.c (check_init): Handle VIEW_CONVERT_EXPR.
1865         * builtins.c (convert_real): New function.
1866         (java_builtins): Handle Float.intBitsToFloat,
1867         Float.floatToRawIntBits, Double.longBitsToDouble,
1868         Double.doubleToRawLongBits.
1869
1870 2006-02-07  Andrew Haley  <aph@redhat.com>
1871
1872         * expr.c (expand_invoke): (BC mode.)  If we find a method in a
1873         class other than the one in which we expected to find it, ignore
1874         the result.
1875
1876         PR java/25535
1877         * constants.c (build_constants_constructor): move initializer into
1878         first halfword on a 64-bit big-endian machine.
1879
1880 2006-02-04  Tom Tromey  <tromey@redhat.com>
1881
1882         PR java/25676:
1883         * builtins.c (max_builtin): Skip floating point 'max'.
1884         (min_builtin): Skip floating point 'min'.
1885         (check_for_builtin): Never return NULL_TREE.
1886
1887 2006-02-04  Tom Tromey  <tromey@redhat.com>
1888
1889         PR java/26097:
1890         * expr.c (push_type): Avoid side effect in gcc_assert.
1891
1892 2006-02-04  Roger Sayle  <roger@eyesopen.com>
1893
1894         * decl.c (java_init_decl_processing): Create char_type_node as a
1895         regular INTEGER_TYPE node.
1896         (push_promoted_type): Preserve TYPE_STRING_FLAG on types.
1897         * typeck.c (convert): No longer check for CHAR_TYPEs but instead
1898         test for char_type_node and promoted_char_type_node as special
1899         instances of INTEGER_TYPE tree codes.
1900         (promote_type,build_java_signature): Likewise.
1901         * jcf-write.c (adjust_typed_op): Likewise.
1902         * mangle.c (mangle_type): Likewise.
1903         * parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE.
1904         * parse.h (JINTEGRAL_TYPE_P): Likewise.
1905
1906 2006-02-04  Andreas Tobler  <a.tobler@schweiz.ch>
1907
1908         * expr.c (java_stack_swap): Revert gcc_assert patch.
1909
1910 2006-02-03  Ben Elliston  <bje@au.ibm.com>
1911
1912         * java-gimplify.c: Use gcc_assert and gcc_unreachable throughout.
1913         * typeck.c: Likewise.
1914         * verify-impl.c: Likewise.
1915         * class.c: Likewise.
1916         * decl.c: Likewise.
1917         * jcf-parse.c: Likewise.
1918         * constants.c: Likewise.
1919         * check-init.c: Likewise.
1920         * jcf-write.c: Likewise.
1921         * verify-glue.c: Likewise.
1922         * mangle.c: Likewise.
1923         * expr.c: Likewise.
1924         * lang.c: Likewise.
1925         * boehm.c: Likewise.
1926
1927 2006-02-01  Jan Hubicka  <jh@suse.cz>
1928
1929         * decl.c (end_java_method): Kill hack disabling unit-at-a-time.
1930         * lang.c (java_init_options): Set no_unit_at_a_time_default.
1931
1932 2006-01-30  Andrew Haley  <aph@redhat.com>
1933
1934         PR java/21428
1935         * parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this").
1936
1937 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
1938
1939         * jv-scan.c (version), jcf-dump.c (version), gjavah.c (version):
1940         Update copyright notice dates.
1941
1942 2006-01-16  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
1943
1944         * jvspec.c (lang_specific_spec_functions): Remove.
1945
1946 2006-01-06  Tom Tromey  <tromey@redhat.com>
1947
1948         * gcj.texi (Arrays): Added more documentation for
1949         JvNewObjectArray.
1950         (Primitive types): Correct information about primitive classes.
1951         (Reference types): New node.
1952         (Index): New node.
1953
1954 2005-12-16  Alexandre Oliva  <aoliva@redhat.com>
1955
1956         * jcf-parse.c (set_source_filename): Set the decl source location
1957         even when returning early.
1958
1959 2005-12-15  Tom Tromey  <tromey@redhat.com>
1960             Andrew Haley  <aph@redhat.com>
1961
1962         PR java/25429
1963         * parse.y (resolve_expression_name): Don't generate accessor
1964         methods for constant fields.
1965
1966 2005-12-13  Andrew Haley  <aph@redhat.com>
1967
1968         PR java/25366
1969         PR java/25368
1970         * class.c (maybe_layout_super_class): Update current_class before
1971         calling do_resolve_class.
1972
1973 2005-12-12  H.J. Lu  <hongjiu.lu@intel.com>
1974
1975         PR java/25330
1976         * jcf-write.c (write_classfile): Use PID in temporary class
1977         file. Save/restore errno when reporting error.
1978
1979 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
1980
1981         PR java/9861
1982         * mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J'
1983         to bare_function_type and including the return type
1984         * builtins.c (initialize_builtins) : Change builtin mangled name
1985         constants to conform to new mangling scheme
1986
1987 2005-12-08  Andrew Haley  <aph@redhat.com>
1988
1989         PR libgcj/25265
1990         * java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE.
1991         (soft_abstractmethod_node): New.
1992         * expr.c (build_field_ref): Add in-line check for missing field.
1993         * decl.c (java_init_decl_processing): Add soft_nosuchfield_node.
1994
1995 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
1996
1997         * Make-lang.in (java.all.build, java.install-normal): Remove.
1998
1999 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2000
2001         * Make-lang.in: Remove all dependencies on s-gtype, except for
2002         gt-java-parse.h.
2003
2004 2005-12-07  Richard Sandiford  <richard@codesourcery.com>
2005
2006         * class.c (build_utf8_ref, emit_register_classes): Use
2007         switch_to_section and get_section.
2008
2009 2005-12-06  Tom Tromey  <tromey@redhat.com>
2010
2011         PR java/25283:
2012         * parse.y (patch_new_array_init): Revert previous patch.
2013         (lookup_method_invoke): Use size-less array type when creating an
2014         anonymous constructor.
2015
2016 2005-12-05  Tom Tromey  <tromey@redhat.com>
2017
2018         * parse.y (patch_new_array_init): Don't set length on array.
2019
2020 2005-12-02  Richard Guenther  <rguenther@suse.de>
2021
2022         * java-gimplify.c (java_gimplify_labeled_block_expr): Use
2023         buildN instead of build.
2024         * class.c (finish_class): Likewise.
2025         * expr.c (java_create_object): Likewise.
2026
2027 2005-11-28  Tom Tromey  <tromey@redhat.com>
2028
2029         PR java/18278:
2030         * expr.c (build_jni_stub): Unwrap the return value.
2031         * java-tree.h (soft_unwrapjni_node): New define.
2032         (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE.
2033         * decl.c (java_init_decl_processing): Initialize
2034         soft_unwrapjni_node.
2035
2036 2005-11-24  Bryce McKinlay  <mckinlay@redhat.com>
2037
2038         * gcj.texi (gij options): Add -Xss documentation.
2039
2040 2005-11-08  Wil Mahan  <wmahan@gmail.com>
2041
2042         PR java/23617
2043         * zextract.c (read_zip_archive): Fix out of memory error when
2044         reading jar files with zip-style comments.
2045
2046 2005-11-07   Terry Laurenzo   <tlaurenzo@gmail.com>
2047
2048         * gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object
2049         formats.
2050         * gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED
2051
2052 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
2053             Wil Mahan <wmahan@gmail.com>
2054
2055         PR java/23620
2056         * class.c (make_class): Create empty binfo here.
2057         (set_super_info): Only create binfo if we have superclasses.
2058
2059 2005-10-03  Ranjit Mathew  <rmathew@gcc.gnu.org>
2060
2061         PR java/24127
2062         * parse.y (method_header): Make the result of the rule a NULL_TREE
2063         when a parsing error occurs.
2064
2065 2005-09-29  Tom Tromey  <tromey@redhat.com>
2066
2067         PR java/24120:
2068         * jcf-io.c (memoized_dirlist_hash): New function.
2069         (caching_stat): Use it.
2070
2071 2005-09-21  Ranjit Mathew  <rmathew@gcc.gnu.org>
2072
2073         PR java/21418
2074         * class.c (inherits_from_p): Try to lay out super class
2075         if it is not already laid out.
2076         (maybe_layout_super_class): Handle the case where SUPER_CLASS
2077         is a NULL_TREE.
2078
2079 2005-09-18  James A. Morrison  <phython@gcc.gnu.org>
2080
2081         * builtins.c (max_builtin, min_builtin, abs_builtin,
2082         java_build_function_call_expr): Use fold_buildN.
2083         * class.c (layout_class_method): Likewise.
2084         * expr.c (java_truthvalue_conversion, build_java_jsr,
2085         build_java_arrayaccess, expand_java_arrayload, expand_iinc,
2086         build_java_binop, build_field_ref, expand_compare,
2087         build_known_method_ref, build_invokevirtual,
2088         process_jvm_instruction): Likewise.
2089         * parse.y (patch_binop, patch_exit_expr): Likewise.
2090         * typeck.c (convert_ieee_real_to_integer): Likewise.
2091         (convert): Don't call fold after convert_ieee_real_to_integer.
2092
2093 2005-09-14  Bryce McKinlay  <mckinlay@redhat.com>
2094
2095         PR java/23891
2096         * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for
2097         the newly created type. Set import lists here, not in create_class.
2098         (jdep_resolve_class): Set current_class.
2099         (do_resolve_class): Use current_class's TYPE_PACKAGE to determine 
2100         the current package context, not ctxp->package.
2101         (cicp_cache): Removed.
2102         (class_in_current_package): Simplify implementation using TYPE_PACKAGE.
2103         * jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE.
2104         * java-tree.h (TYPE_PACKAGE): New macro.
2105         (struct lang_type): New member 'package'.
2106
2107 2005-09-09  Andrew Haley  <aph@redhat.com>
2108
2109         PR libgcj/23182 
2110         * expr.c (pop_type_0): If the expected type is object or ptr
2111         (i.e. void*), return the type of the object we just popped from
2112         the stack.
2113
2114 2005-09-06  Andrew Pinski  <pinskia@physics.uc.edu>
2115
2116         * java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's
2117         BLOCK_EXPR_BODY before returning the new BIND_EXPR.
2118
2119 2005-09-06  Kazu Hirata  <kazu@codesourcery.com>
2120
2121         * check-init.c, decl.c, expr.c, gcj.texi, java-tree.h,
2122         jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment
2123         typos.  Follow spelling conventions.
2124
2125 2005-09-05  Ranjit Mathew  <rmathew@hotmail.com>
2126
2127         PR java/23431
2128         * typeck.c (lookup_do): Look up interfaces for the original class,
2129         not the base class.
2130         * parse.y (java_check_regular_methods): Fix diagnostic message for
2131         more restrictive overriding of a method from an interface.
2132
2133 2005-08-16  Tom Tromey  <tromey@redhat.com>
2134
2135         * class.c (make_class_data): Always emit JV_STATE_PRELOADING for
2136         class' initial state.
2137
2138 2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>
2139
2140         PR java/22113
2141         * lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing
2142         `literal_token' for large numeric input tokens.
2143
2144 2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>
2145
2146         PR java/19870
2147         * parse.y (nested_field_access_p): Rename to nested_member_access_p
2148         and expand to handle method accesses across nested classes.
2149         (build_outer_method_access_method): Rename to
2150         build_nested_method_access_method.  Minor adjustments to comments.
2151         (resolve_expression_name): Use the newly-renamed
2152         nested_member_access_p method.
2153         (resolve_qualified_expression_name): Likewise.
2154         (patch_method_invocation): Also consider static methods for access
2155         method generation.  Minor adjustments to comments.
2156         (maybe_use_access_method): Use the more general
2157         nested_memeber_access_p to determine access across nested class
2158         boundaries.  Allow THIS_ARG to be NULL (for static methods).
2159
2160 2005-08-15  Tom Tromey  <tromey@redhat.com>
2161
2162         PR java/23300.
2163         * expr.c (build_field_ref): Don't generate otable reference when
2164         DECL_FIELD_OFFSET is 0.
2165         * class.c (maybe_layout_super_class): Pass outer class to
2166         do_resolve_class.
2167
2168 2005-08-15  Tom Tromey  <tromey@redhat.com>
2169
2170         * java-tree.h (LABEL_IN_SUBR): Removed.
2171         (LABEL_IN_SUBR): Likewise.
2172         (LABEL_IS_SUBR_START): Likewise.
2173         (LABEL_SUBR_START): Likewise.
2174         (LABEL_SUBR_CONTEXT): Likewise.
2175         (LABEL_CHANGED): Likewise.
2176         (LABEL_RETURN_LABEL): Likewise.
2177         (LABEL_RETURN_TYPE_STATE): Likewise.
2178         (LABEL_RETURN_LABELS): Likewise.
2179         (RETURN_MAP_ADJUSTED): Likewise.
2180         (LABEL_PENDING_CHAIN): Likewise.
2181
2182 2005-08-15  Tom Tromey  <tromey@redhat.com>
2183
2184         * Make-lang.in (JAVA_OBJS): Removed verify.o
2185         (java/verify.o): Removed.
2186         * verify.c: Removed.
2187         * lang.c (flag_new_verifier): Removed.
2188         (java_post_options): Updated.
2189         * java-tree.h (flag_new_verifier): Removed.
2190         (verify_jvm_instructions): Removed.
2191         * expr.c (pop_type_0): Assume flag_new_verifier is true.
2192         (build_java_check_indexed_type): Likewise.
2193         (expand_java_arraystore): Likewise.
2194         (expand_java_arrayload): Likewise.
2195         (pop_arguments): Likewise.
2196         (expand_byte_code): Likewise.
2197         (process_jvm_instruction): Likewise.
2198
2199 2005-08-10  Andrew Haley  <aph@redhat.com>
2200
2201         * java-gimplify.c (java_gimplify_modify_expr): Fix any pointer
2202         type mismatches to make legal GIMPLE.
2203
2204 2005-08-10  Robin Green <greenrd@greenrd.org>
2205
2206         PR java/23230:
2207         * parse.y (maybe_use_access_method): Generalize check from
2208         java.lang.Object to any superclass of current_class
2209
2210 2005-08-08  Nathan Sidwell  <nathan@codesourcery.com>
2211
2212         * class.c (build_class_ref): Wrap the primary class type in a
2213         NOP_EXPR.
2214         * parse.y (java_complete_lhs) <COMPONENT_REF case>: Extract the
2215         primary class type from the NOP_EXPR in which it was placed.
2216
2217 2005-07-28  Diego Novillo  <dnovillo@redhat.com>
2218
2219         * expr.c (expand_load_internal): Fix missing parens in
2220         predicate.
2221
2222 2005-07-28  Andrew Haley  <aph@redhat.com>
2223
2224         * expr.c (expand_load_internal): Convert to destination type.
2225
2226 2005-07-22  Manfred Hollstein  <mh@suse.com>
2227
2228         * verify-impl.c (check_class_constant): Fix uninitialised warnings.
2229         (check_constant): Likewise.
2230         (check_wide_constant): Likewise.
2231
2232 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
2233
2234         Make CONSTRUCTOR use VEC to store initializers.
2235         * check-init.c (check_init): Update to cope with VEC in
2236         CONSTRUCTOR_ELTS.
2237         * class.c (make_field_value, make_method_value, get_dispatch_table,
2238         make_class_data, emit_symbol_table, emit_catch_table,
2239         emit_assertion_table): Use build_constructor_from_list instead of
2240         build_constructor.
2241         * constants.c (build_constants_constructor): Likewise.
2242         * java-gimplify.c (java_gimplify_new_array_init): Update to cope with
2243         VEC in CONSTRUCTOR_ELTS.
2244         * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE,
2245         PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead
2246         of a TREE_LIST.
2247         * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in
2248         CONSTRUCTOR_ELTS.
2249         * parse.y (build_new_array_init): Use build_constructor_from_list
2250         instead of build_constructor.
2251         (patch_new_array_init): Update to cope with VEC in
2252         CONSTRUCTOR_ELTS.
2253         (array_constructor_check_entry): Likewise.
2254
2255 2005-07-12  Tom Tromey  <tromey@redhat.com>
2256
2257         * jvspec.c (lang_specific_driver): Put filelist_filename first on
2258         command line.
2259
2260 2005-07-12  Tom Tromey  <tromey@redhat.com>
2261
2262         PR java/19674:
2263         * parse-scan.y (interface_member_declaration): Added
2264         empty_statement.
2265
2266 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
2267         
2268         * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common.
2269         (LABEL_PENDING_CHAIN): Ditto.
2270         (LABEL_PC): Ditto.
2271         (DECL_BIT_INDEX): Ditto.        
2272
2273 2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>
2274
2275         PR java/18119
2276         * parse.y (inner_class_accessible): New function. Logic moved from
2277         check_inner_class_access.
2278         (check_inner_class_access): Use inner_class_accessible.
2279         (resolve_inner_class): Simplify arguments. Create circularity hash
2280         here. Keep looking for classes if we found one that was inaccessible. 
2281         Return the inaccessible class only if there is no other match.
2282         (do_resolve_class): Update for new resolve_inner_class arguments.
2283         Don't create circularity_hash here.
2284
2285 2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>
2286
2287         PR java/21045
2288         * parse.y (add_exception_to_throws): New function.
2289         (purge_unchecked_exceptions): Removed.
2290         (get_constructor_super): Renamed from verify_constructor_super. Now
2291         returns the super constructor after verification.
2292         (java_complete_expand_method): Don't use purge_unchecked_exceptions
2293         or save/restore the exception list.
2294         (check_thrown_exceptions): Add uncaught exceptions in anonymous
2295         class initializers and constructors to the throws clause of the method. 
2296
2297 2005-07-05  Bryce McKinlay  <mckinlay@redhat.com>
2298
2299         PR java/19674
2300         * parse.y (interface_member_declaration): Allow empty statements in
2301         interface declarations.
2302
2303 2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
2304
2305         * Makefile.in (parse.o): Adjust dependencies.
2306         * parse.y: Include tree-dump.h.
2307
2308 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2309
2310         * class.c, decl.c, expr.c: Use '+' flag instead of %J.  Use 'q'
2311         flag for quoting.
2312
2313 2005-07-01  Andrew Pinski  <pinskia@physics.uc.edu>
2314
2315         * parse.y (issue_warning_error_from_context): Call
2316         pp_output_formatted_text to be able to get the buffer.
2317
2318 2005-06-30  Andrew Pinski  <pinskia@physics.uc.edu>
2319
2320         * parse.y (issue_warning_error_from_context): Update for the
2321         renaming of pp_format_text to pp_format.
2322
2323 2005-06-28  Paul Brook  <paul@codesourcery.com>
2324
2325         * decl.c (java_init_decl_processing): Call
2326         default_init_unwind_resume_libfunc.
2327
2328 2005-06-27  Tom Tromey  <tromey@redhat.com>
2329
2330         PR java/21540, PR java/13788:
2331         * parse.y (java_complete_lhs) <CASE_EXPR>: Use
2332         fold_constant_for_init.
2333         (patch_binop): Added 'folding' argument.  Updated all callers.
2334         (patch_unaryop) <NOP_EXPR>: New case.
2335         (fold_constant_for_init) <NOP_EXPR>: Likewise.
2336         (fold_constant_for_init) <COND_EXPR>: Fix sense of test.
2337
2338 2005-06-25  Jan Hubicka  <jh@suse.cz>
2339
2340         * builtins.c (define_builtin): Accept new flags parameter.
2341         (initialize_builtins): Mark the builtins const and nothrow accordingly.
2342
2343 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
2344
2345         * all files: Update FSF address in copyright headers.
2346
2347 2005-06-24  Tom Tromey  <tromey@redhat.com>
2348
2349         * verify-impl.c (verify_instructions_0): Correctly handle
2350         situation where PC falls off end.
2351
2352 2005-06-23  Bryce McKinlay  <mckinlay@redhat.com>
2353
2354         PR java/20697
2355         * parse.y (find_most_specific_methods_list): Remove special case for
2356         inner classes.
2357
2358 2005-06-15  Tom Tromey  <tromey@redhat.com>
2359
2360         PR libgcj/21906:
2361         * class.c (make_method_value): Use soft_abstractmethod_node for
2362         abstract method.
2363         * java-tree.h (soft_abstractmethod_node): New define.
2364         (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant.
2365         * decl.c (java_init_decl_processing): Initialize
2366         soft_abstractmethod_node.
2367
2368 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
2369
2370         * Make-lang.in (rule for installing gcj.1): Depends on installdirs.
2371
2372 2005-06-13  Per Bothner  <per@bothner.com>
2373
2374         * expr.c (int highest_label_pc_this_method,
2375         start_label_pc_this_method): New globals.
2376         (lookup_label): Add start_label_pc_this_method to pc for label, and
2377         update highest_label_pc_this_method.  This prevents conflicts between
2378         labels from different methods.
2379         * java-tree.h: Declare new globals.
2380         * jcf-parse.c (parse_class_file): If needed bump
2381         start_label_pc_this_method and reset highest_label_pc_this_method.
2382
2383 2005-06-13  Tom Tromey  <tromey@redhat.com>
2384
2385         PR java/21844:
2386         * parse.y (nested_field_access_p): Handle case where outer field
2387         is inherited by enclosing class.
2388
2389 2005-06-12  Per Bothner  <per@bothner.com>
2390
2391         * class.c (inherits_from_p): Do load_class if needed.
2392
2393 2005-06-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2394
2395         * gjavah.c (error): Add ATTRIBUTE_PRINTF_1.
2396         * java-tree.h (parse_error_context): Move...
2397         * parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG.
2398         * parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG.
2399         * verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1.
2400
2401 2005-06-08  Roger Sayle  <roger@eyesopen.com>
2402
2403         * typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes.
2404
2405 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
2406
2407         * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of
2408         msgid for argument name.
2409         * gjavah.c (error): Likewise.
2410         * java-tree.h (parse_error_context): Likewise.
2411         * parse.y (parse_error_context, parse_warning_context,
2412         issue_warning_error_from_context): Likewise.
2413
2414 2005-06-01  Tom Tromey  <tromey@redhat.com>
2415
2416         PR java/21722:
2417         * class.c (build_static_field_ref): Don't fold constant fields if
2418         current class is from a .class file and we're using indirect
2419         dispatch.
2420
2421 2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2422
2423         * java/verify-glue.c: Don't include errors.h and include toplev.h.
2424         * java/Make-lang.in: Updates dependencies.
2425
2426 2005-05-26  Ranjit Mathew  <rmathew@hotmail.com>
2427
2428         PR java/19870.
2429         * java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to
2430         NESTED_FIELD_ACCESS_IDENTIFIER_P.
2431         (FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS.
2432         (FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P.
2433         * jcf-write.c (generate_classfile): Use
2434         NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
2435         OUTER_FIELD_ACCESS_IDENTIFIER_P.
2436         * parse.y (build_outer_field_access): Rename to
2437         build_nested_field_access. Support static fields and outer-to-inner
2438         class accesses.
2439         (outer_field_access_p): Rename to nested_field_access_p. Support
2440         static fields and generalise to outer-to-inner class and sibling
2441         inner class accesses.
2442         (outer_field_expanded_access_p): Rename to
2443         nested_field_expanded_access_p and support static fields.
2444         (outer_field_access_fix): Rename to nested_field_access_fix and
2445         support static fields.
2446         (build_outer_field_access_expr): Rename to
2447         build_nested_field_access_expr and support static fields.
2448         (build_outer_field_access_methods): Rename to
2449         build_nested_field_access_methods and support static fields. For
2450         static fields, generate accessors without class instance parameters.
2451         (build_outer_field_access_method): Rename to
2452         build_nested_field_access_method and support static fields.
2453         (build_outer_method_access_method): Use
2454         NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
2455         OUTER_FIELD_ACCESS_IDENTIFIER_P.
2456         (resolve_expression_name): Consider static field accesses across
2457         nested classes.
2458         (resolve_qualified_expression_name): Likewise.
2459         (java_complete_lhs): Use nested_field_access_fix instead of
2460         outer_field_access_fix.
2461         (patch_unary_op): Rename outer_field_flag to nested_field_flag.
2462         Use nested_field_expanded_access_p instead of
2463         outer_field_expanded_access_p. Use nested_field_access_fix instead
2464         of outer_field_access_fix.
2465         (check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P
2466         instead of OUTER_FIELD_ACCESS_IDENTIFIER_P.
2467
2468 2005-05-26  Bryce McKinlay  <mckinlay@redhat.com>
2469
2470         * decl.c (GCJ_BINARYCOMPAT_ADDITION, 
2471         GCJ_BOOTSTRAP_LOADER_ADDITION): Removed.
2472         (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER,
2473         MINOR_BINARYCOMPAT_ABI_VERSION): New.
2474         (GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID.
2475         (parse_version): Calculate version ID using new method. Use bit-flags
2476         for flag_indirect_dispatch and flag_bootstrap_classes.
2477
2478 2005-05-25  Richard Henderson  <rth@redhat.com>
2479
2480         PR libgcj/21692
2481         * Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H.
2482         * class.c (build_class_ref): Set DECL_CLASS_FIELD_P and
2483         DECL_CONTEXT; avoid pushdecl_top_level.
2484         (build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT.
2485         (layout_class): Don't SET_DECL_ASSEMBLER_NAME.
2486         (layout_class_method): Likewise.
2487         * decl.c (java_mark_cni_decl_local): New.
2488         (java_mark_class_local): Use it.
2489         * java-tree.h (DECL_LOCAL_CNI_METHOD_P): New.
2490         (DECL_CLASS_FIELD_P, DECL_VTABLE_P): New.
2491         (struct lang_decl_func): Add local_cni;
2492         (struct lang_decl_var): Add class_field, vtable.
2493         (java_mangle_decl): Declare.
2494         * lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New.
2495         * mangle.c: Remove dup obstack.h; include langhooks-def.h.
2496         (mangle_obstack_1): New.
2497         (java_mangle_decl): Remove obstack argument.  Call mangle_class_field,
2498         mangle_vtable, and mangle_local_cni_method_decl.  Fall back to
2499         lhd_set_decl_assembler_name for things that don't need mangling.
2500         (mangle_class_field): Rename from java_mangle_class_field, make
2501         static, don't call init_mangling or finish_mangling.
2502         (mangle_vtable): Similarly.
2503         (mangle_local_cni_method_decl): New.
2504         (init_mangling): Remove obstack argument.  Use &mangle_obstack_1,
2505         gcc_assert, and MANGLE_RAW_STRING.
2506         (finish_mangling): Use gcc_assert, remove if 0 debugging code.
2507
2508 2005-05-25  DJ Delorie  <dj@redhat.com>
2509
2510         * class.c (set_constant_value): Move warning control from if() to
2511         warning(OPT_*).
2512
2513 2005-05-24  Richard Henderson  <rth@redhat.com>
2514
2515         * builtins.c (define_builtin): Don't call make_decl_rtl.
2516         * constants.c (build_constant_data_ref): Likewise.
2517         * class.c (build_utf8_ref): Likewise.
2518         (build_fieldref_cache_entry, build_static_field_ref): Likewise.
2519         (get_dispatch_table, layout_class_method): Likewise.
2520         (build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT
2521         by hand.
2522         (make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME.
2523         (make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P
2524         to determine if we need a non-zero address.
2525         * decl.c (builtin_function): Don't call make_decl_rtl.
2526         (give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME.
2527         * expr.c (build_known_method_ref): Don't call make_decl_rtl.
2528         * resource.c (compile_resource_data): Likewise.
2529         * parse.y (resolve_field_access): Re-word comment to avoid
2530         building DECL_RTL.
2531
2532 2005-05-24  Richard Henderson  <rth@redhat.com>
2533
2534         * class.c (registered_class): Take it out of class_roots; turn into
2535         a vec of trees.
2536         (register_class): Make static.  Don't duplicate decl node.  Use
2537         VEC_safe_push.
2538         (emit_register_classes): Use VEC_iterate.  Use output_constant
2539         instead of assemble_integer.  Don't call mark_decl_referenced
2540         directly.
2541         * java-tree.h (register_class): Remove decl.
2542
2543 2005-05-19  Paolo Bonzini  <bonzini@gnu.org>
2544
2545         PR java/17845
2546
2547         * parse.y (register_package, package_list): Remove.
2548         (package_declaration): Do not call register_package.
2549         (do_resolve_class): Do not use package_list.
2550
2551 2005-05-15  Gerald Pfeifer  <gerald@pfeifer.com>
2552
2553         * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Remove
2554         unused variable.
2555
2556 2005-05-15  Tom Tromey  <tromey@redhat.com>
2557
2558         PR java/21519:
2559         * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Don't call
2560         NOTE_PUSH.
2561
2562 2005-05-12  Aaron Luchko <aluchko@redhat.com>
2563
2564         * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'.
2565
2566 2005-05-11  Tom Tromey  <tromey@redhat.com>
2567
2568         * gcj.texi (Code Generation): Document -fbootstrap-classes.
2569         * decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro.
2570         (parse_version): Use it.
2571         * lang.opt (-fbootstrap-classes): New option.
2572
2573 2005-05-10  Paolo Bonzini  <bonzini@gnu.org>
2574
2575         PR java/21436
2576         * class.c (maybe_layout_super_class): Look for imports in this_class.
2577         * parse.h (ctxp_for_generation_last): New.
2578         (do_resolve_class): Add a parameter.
2579         * parse.y (ctxp_for_generation_last): New.
2580         (java_pop_parser_context): Add at end of list.
2581         (find_in_imports, find_in_imports_on_demand): Look in ctxp
2582         if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of
2583         the given type are NULL.
2584         (do_resolve_class): Look into the imports of the new second parameter.
2585         Adjust recursive calls.
2586         (resolve_class, resolve_inner_class, find_as_inner_class): Adjust
2587         calls to do_resolve_class.
2588         (create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST.
2589         (java_complete_class): Do not do that here.
2590
2591 2005-05-03  Thomas Fitzsimmons  <fitzsim@redhat.com>
2592
2593         PR java/20309
2594         * Make-lang.in (java): Add gjnih.
2595         (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
2596         (GJNIH_OBJS): New variable.
2597         (gjnih$(exeext)): New target.
2598         (JAVA_MANFILES): Add gjnih.1.
2599         (java.uninstall): Add gjnih.1.
2600         (java.mostlyclean): Add gjnih.
2601         (java.maintainer-clean): Add gjnih.1.
2602         (java/gjavah-jni.o): New target.
2603         (.INTERMEDIATE): Add gjnih.pod.
2604         (gjnih.pod): New target.
2605         * config-lang.in (stagestuff): Add gjnih.
2606         * gcj.texi (Top): Add gjnih node.
2607         (Invoking gcjh): Add descriptions of -force, -old, -trace, -J and
2608         -bootclasspath options.
2609         (Invoking gjnih): New node.
2610         * gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined.
2611         (TOOLNAME): New macro.
2612         (error): Replace hard-coded gcjh with TOOLNAME.
2613         (process_file): Likewise.
2614         (usage): Likewise.
2615         (version): Likewise.
2616         (help): Likewise.  Add help output for -force, -old, -trace and -J
2617         options.
2618         (OPT_FORCE, OPT_OLD, OPT_TRACE): New macros.
2619         (options): Add force, old, trace and J fields.
2620         (main): Handle -force, -old, -trace and -J options.
2621
2622 2005-05-03  Tom Tromey  <tromey@redhat.com>
2623
2624         PR java/21245:
2625         * gjavah.c (main): Unlink output file on error.
2626
2627 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
2628
2629         * constants.c, jvgenmain.c, lang.opt, resource.c: Update
2630         copyright.
2631
2632 2005-04-29  Tom Tromey  <tromey@redhat.com>
2633
2634         * expr.c (build_jni_stub): Updated for change to build_block.
2635
2636 2005-04-29  Andrew Pinski  <pinskia@gcc.gnu.org>
2637
2638         * expr.c (force_evaluation_order): Declare 'saved' earlier.
2639
2640 2005-04-28  Andrew Haley  <aph@redhat.com>
2641
2642         PR java/19285
2643         * java-tree.h (soft_resolvepoolentry_node): New.
2644         (alloc_constant_fieldref): Declare.
2645         * expr.c (expand_java_field_op): Don't call class_init for
2646         accesses to static fields with indirect dispatch.
2647         * builtins.c (initialize_builtins): Add "__builtin_expect".
2648         * decl.c (soft_resolvepoolentry_node): New variable.
2649         (java_init_decl_processing): Create a decl for
2650         "_Jv_ResolvePoolEntry".
2651         * class.c (build_fieldref_cache_entry): New function.
2652         (build_static_field_ref): Rewrite for indirect dispatch.
2653         * constants.c (find_name_and_type_constant_tree): New function.
2654         (alloc_constant_fieldref): Likewise.
2655         (build_constants_constructor): Handle CONSTANT_Fieldref and
2656         CONSTANT_NameAndType.
2657
2658         PR java/21115
2659         * expr.c (force_evaluation_order): Convert outgoing args smaller
2660         than integer.
2661
2662 2005-04-27  Bryce McKinlay  <mckinlay@redhat.com>
2663
2664         * gcj.texi (libgcj Runtime Properties): Remove obsolete
2665         gnu.gcj.runtime.NameFinder.* system properties. Update documentation 
2666         for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname.
2667
2668 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2669
2670         * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls
2671         to `unlock_stream' with `unlock_std_streams'.
2672
2673 2005-04-25  Jakub Jelinek  <jakub@redhat.com>
2674
2675         * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H)
2676         instead of just expr.h.
2677
2678 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2679
2680         * gjavah.c (main): Unlock the stdio streams.
2681         * jcf-dump.c (main): Likewise.
2682         * jv-scan.c (main): Likewise.
2683         * jvgenmain.c (main): Likewise.
2684
2685 2005-04-23  DJ Delorie  <dj@redhat.com>
2686
2687         * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c,
2688         parse.y: Adjust warning() callers.
2689
2690 2005-04-21  Bryce McKinlay  <mckinlay@redhat.com>
2691
2692         * gcj.texi (Object fields): Change "Integer" to "Int" in example
2693         contructor.
2694
2695 2005-04-20  Bryce McKinlay  <mckinlay@redhat.com>
2696
2697         * gcj.texi: Fix typos and bogus example.
2698
2699 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
2700
2701         * except.c: Fix a comment typo.
2702
2703 2005-04-19  Julian Brown  <julian@codesourcery.com>
2704
2705         * decl.c (finish_method): Revert patch from 2005-04-13 for breaking
2706         indirect dispatch with PIC.
2707
2708 2005-04-18  Andrew Haley  <aph@redhat.com>
2709
2710         * java-except.h (struct eh_range.handler): Remove unused field.
2711         (handle_nested_ranges): Remove function declaration.
2712         (sanity_check_exception_range): Add function declaration.       
2713         * verify.c (verify_jvm_instructions): Remove call to
2714         handle_nested_ranges.
2715         * verify-glue.c (verify_jvm_instructions_new): Call
2716         sanity_check_exception_range.
2717         * except.c (link_handler, eh_range_freelist, link_handler,
2718         handle_nested_ranges): Remove.
2719         (add_handler): Rewrite.
2720         (sanity_check_exception_range): New function.
2721         (print_ranges): New function.
2722
2723 2005-04-13  Julian Brown  <julian@codesourcery.com>
2724
2725         * decl.c (finish_method): Give methods once-only linkage.
2726
2727 2005-04-11  Richard Sandiford  <rsandifo@redhat.com>
2728
2729         * lang.opt: Refer to the GCC internals documentation instead of c.opt.
2730
2731 2005-04-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2732
2733         * java-tree.h: Don't use PARAMS().
2734
2735 2005-04-07  Per Bothner  <per@bothner.com>
2736
2737         * class.c (push_class): By default, suppress debug output.
2738         (finish_class): Enable debug output for classes we're emitting.
2739
2740 2005-04-07  Andrew Haley  <aph@redhat.com>
2741
2742         * gcj.texi: Correct gcj-dbtool instructions.
2743
2744 2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>
2745
2746         * gcj.texi: Fix a typo.
2747         * lang.c: Fix a comment typo.
2748
2749 2005-04-01  Thomas Fitzsimmons  <fitzsim@redhat.com>
2750
2751         * gcj.texi (Invoking gij): Add descriptions of new -X options.
2752         Mention recognized-and-ignored compatibility options.
2753         (Memory allocation): Add descriptions of JvMalloc, JvRealloc and
2754         JvFree.
2755         (About CNI): Add Memory allocation section.
2756
2757 2005-04-01  Tom Tromey  <tromey@redhat.com>
2758
2759         * decl.c (java_init_decl_processing): Fix types of
2760         _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject,
2761         _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray,
2762         _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ.
2763
2764 2005-03-31  Jan Hubicka  <jh@suse.cz>
2765
2766         * Make-lang.in (class.o, decl.o): Depend on cgraph.h.
2767         * class.c: Include cgraph.h
2768         (make_local_functoin_alias): Mark aslias as needed.
2769         * resource.c: Include cgraph.h
2770         (compile_resource_data): Go via cgraph interface.
2771
2772 2005-03-30  Ian Lance Taylor  <ian@airs.com>
2773
2774         * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL.
2775
2776 2005-03-30  Tom Tromey  <tromey@redhat.com>
2777
2778         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where
2779         inner_class_info_index==0 or outer_class_info_index==0.
2780
2781 2005-03-29  Tom Tromey  <tromey@redhat.com>
2782
2783         * gcj.texi (libgcj Runtime Properties): Document
2784         gnu.gcj.runtime.endorsed.dirs.
2785
2786 2005-03-24  Anthony Green  <green@redhat.com>
2787
2788         * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to
2789         'gcj-dbtool -p'.
2790
2791 2005-03-23  Tom Tromey  <tromey@redhat.com>
2792
2793         * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define.
2794         (parse_version): Use it.
2795
2796 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
2797
2798         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
2799
2800 2005-03-18  Andrew Haley  <aph@redhat.com>
2801
2802         PR java/20522
2803         * decl.c (update_aliases): Don't update variables that are about
2804         to die.
2805         (maybe_poplevels): Add comment.
2806
2807 2005-03-17  Bryce McKinlay  <mckinlay@redhat.com>
2808
2809         PR java/20502
2810         * jcf-parse.c (duplicate_class_warning): New function.
2811         (java_parse_file): Call duplicate_class_warning if 
2812         CLASS_FROM_CURRENTLY_COMPILED_P is already set.
2813         (parse_zip_file_entries): Likewise. Also set
2814         CLASS_FROM_CURRENTLY_COMPILED_P.
2815
2816 2005-03-16  Andrew Haley  <aph@redhat.com>
2817
2818         * expr.c (expand_java_arrayload): Don't generate a
2819         NullPointerException based on the type of the node.
2820         (build_java_array_length_access): Likewise.
2821
2822 2005-03-15  Zack Weinberg  <zack@codesourcery.com>
2823
2824         * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi.
2825
2826 2005-03-11  Tom Tromey  <tromey@redhat.com>
2827
2828         * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'.
2829         (libgcj Runtime Properties): Document the default .db.
2830
2831 2005-03-10  Ranjit Mathew  <rmathew@hotmail.com>
2832
2833         PR java/20312
2834         * parse.y (checks_throws_clauses): Check exceptions list even when
2835         the base class does not come from a source file being compiled.
2836         (java_complete_lhs): Remove unused variable 'wfl'.
2837
2838 2005-03-09  Ranjit Mathew  <rmathew@hotmail.com>
2839
2840         PR java/20338
2841         * decl.c (finish_method): Emit _Jv_InitClass for private static
2842         methods inside inner classes as well.
2843
2844 2005-03-08  Julian Brown  <julian@codesourcery.com>
2845         * Revert patch from 2005-03-08 for causing bootstrap failure on
2846         ppc-darwin.
2847
2848 2005-03-08  Julian Brown  <julian@codesourcery.com>
2849
2850         * decl.c (finish_method): Give methods once-only linkage.
2851
2852 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
2853
2854         * lang.c (flag_new_verifier): Enable by default, regardless of ABI.
2855
2856 2005-03-07  Bryce McKinlay  <mckinlay@redhat.com>
2857
2858         * verify-glue.c (vfy_is_assignable_from): Perform static check using
2859         can_widen_reference_to if the C++ ABI is in use.
2860         (vfy_get_interface_count, vfy_get_interface): Remove unused functions.
2861         * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type,
2862         type_isresolved, init_state, set_pc, state_get_pc,
2863         _Jv_BytecodeVerifier): Clean up unused and disabled functions.
2864         (verify_fail): Report the current PC from the verifier context.
2865         (free_state): Remove #if 0 block to enable this function.
2866         (free_verifier_context): Call free_state on state_list iterator
2867         values before freeing them.
2868         * expr.c (pop_type_0): Pop correct type for error message when stack
2869         contains a multi-word type.
2870
2871 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
2872
2873         * expr.c (build_java_array_length_access): Remove !flag_new_verifier
2874         for known NULL array length access.
2875
2876 2005-03-07  Tom Tromey  <tromey@redhat.com>
2877
2878         * gcj.texi (Invoking gcj-dbtool): Document '-f'.
2879
2880 2005-03-06  Kazu Hirata  <kazu@cs.umass.edu>
2881
2882         * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h,
2883         typeck.c: Update copyright.
2884
2885 2005-03-06  Ranjit Mathew  <rmathew@hotmail.com>
2886
2887         Remove xref code.
2888         * xref.c, xref.h: Remove file.
2889         * Make-lang.in (java/xref.o): Remove.
2890         * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration.
2891         * lang.c (flag_emit_xref): Remove definition.
2892         * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove.
2893         * typeck.c (convert): Remove use of do_not_fold.
2894         * parse.y (do_not_fold): Remove definition.
2895         (parser grammar): Remove xref code.
2896         (maybe_create_class_interface_decl, create_class): Likewise.
2897         (register_fields, method_header, finish_method_declaration): Likewise.
2898         (declare_local_variables, source_end_java_method): Likewise.
2899         (java_complete_expand_classes): Do not set do_not_fold.
2900         (java_complete_expand_method): Remove xref code.
2901         (java_expand_classes, resolve_field_access, patch_invoke): Likewise.
2902         (java_complete_tree, java_complete_lhs, patch_assignment): Likewise.
2903         (patch_binop, build_string_concatenation, patch_array_ref): Likewise.
2904         (patch_synchronized_statement, patch_throw_statement): Likewise.
2905         (maybe_build_class_init_for_field): Likewise.
2906
2907 2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>
2908
2909         * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P
2910         instead of IS_NON_TYPE_CODE_CLASS.
2911
2912 2005-03-04  Andrew Haley  <aph@redhat.com>
2913
2914         PR java/18362
2915         * class.c (set_method_index): Don't set method_index if it is
2916         NULL_TREE.
2917         (layout_class_method): Don't complain about "non-static method foo
2918         overrides static method" in the case of indirect dispatch.
2919
2920 2005-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2921
2922         * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic
2923         warning.
2924         * Make-lang.in: Don't elide warnings in jcf-io.c.
2925
2926 2005-03-01  Per Bothner  <per@bothner.com>
2927
2928         PR java/8608
2929         * check-init.c (wfl): Remove static.
2930         (final_assign_error, check_init): Replace calls to parse_error_context
2931         by plain error.
2932         (check_init): Save, set, and restore input_location for each exp.
2933
2934 2005-03-01  Per Bothner  <per@bothner.com>
2935
2936         * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45)
2937         if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined.
2938         * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents.
2939
2940 2005-03-01  Per Bothner  <per@bothner.com>
2941
2942         * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro.
2943
2944 2005-02-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
2945
2946         PR libgcj/16923
2947         * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and
2948         JvVMOption.
2949
2950 2005-02-22  Tom Tromey  <tromey@redhat.com>
2951
2952         PR java/20056:
2953         * verify-impl.c (EITHER): New define.
2954         (types_compatible): Handle it.
2955         (check_field_constant): Use it.
2956
2957 2005-02-18  Tom Tromey  <tromey@redhat.com>
2958
2959         PR java/20056:
2960         * verify-impl.c (types_equal): Fixed test.
2961
2962         PR java/20056:
2963         * verify-glue.c (vfy_class_has_field): New function.
2964         * verify.h (vfy_class_has_field): Declare.
2965         * verify-impl.c (check_field_constant): Added 'putfield'
2966         argument.
2967         (verify_instructions_0): Updated.
2968         (types_equal): New function.
2969
2970 2005-02-14  Tom Tromey  <tromey@redhat.com>
2971
2972         PR java/19921:
2973         * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Note the
2974         stack effect of multianewarray.
2975
2976 2005-02-14  Andrew Haley  <aph@redhat.com>
2977
2978         PR java/19907
2979         * expr.c (expand_byte_code): Call promote_arguments().
2980         (promote_arguments): New function.
2981         * decl.c (check_local_unnamed_variable): Remove special case for
2982         new verifier.
2983         (find_local_variable): Promote all boolean types to int
2984         when searching for local variable decls.
2985
2986 2005-02-12  Kazu Hirata  <kazu@cs.umass.edu>
2987
2988         * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c,
2989         parse-scan.y: Update copyright.
2990
2991 2005-02-11  Per Bothner  <per@bothner.com>
2992
2993         PR java/15543
2994         * parse-scan.y (input_location): Remove variable.
2995         (main_input_filename): New - replaces input_filename, which isn't
2996         settable if USE_MAPPED_LOCATION.
2997         * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE,
2998         so we don't reference input_location or wfl_operator in that case.
2999         * jv-scan.c (expand_location): Remove - no longer used.
3000         (main): Set main_input_filename rather than input_filename.
3001
3002 2005-02-09  Richard Henderson  <rth@redhat.com>
3003
3004         * builtins.c (initialize_builtins): Call build_common_builtin_nodes.
3005         * decl.c (java_init_decl_processing): Initialize const_ptr_type_node.
3006
3007 2005-02-08  Marcin Dalecki  <martin@dalecki.de>
3008
3009         * expr.c (add_type_assertion): Use the proper enumeration type,
3010         since this is what htab_find_slot() is expecting.
3011
3012 2005-02-06  Joseph S. Myers  <joseph@codesourcery.com>
3013
3014         * gcj.texi: Update copyright dates.
3015
3016 2005-02-02  Tom Tromey  <tromey@redhat.com>
3017
3018         * gcj.texi (libgcj Runtime Properties): Default library_control
3019         to 'cache'.
3020
3021 2005-02-02  Ranjit Mathew  <rmathew@hotmail.com>
3022
3023         PR java/15543
3024         * parse-scan.y (formal_parameter): Use $2 (type) instead of $$
3025         (modifiers) when square brackets are present in a declaration for
3026         a final paramter.
3027         * jv-scan.c (main): Set input_filename and input_line.
3028
3029 2005-02-01  Tom Tromey  <tromey@redhat.com>
3030
3031         PR java/19742:
3032         * gjavah.c (get_field_name): Don't override name for JNI header.
3033
3034 2005-02-01  Roger Sayle  <roger@eyesopen.com>
3035
3036         * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR
3037         of unsigned types using iushr and lushr JVM bytecodes.
3038
3039 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
3040
3041         PR java/19738
3042         * gjavah.c (jni_print_float): Do not emit floating-point
3043         initialiser for a static final field.
3044         (jni_print_double): Likewise.
3045
3046 2005-02-01  Mark Mitchell  <mark@codesourcery.com>
3047
3048         Revert:
3049         2005-01-31  Mark Mitchell  <mark@codesourcery.com>
3050         * gjavah.c (print_field_info): Mark static data members of
3051         floating-point type with "__extension__".
3052
3053 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
3054
3055         * gjavah.c (print_field_info): Mark static data members of
3056         floating-point type with "__extension__".
3057
3058 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
3059
3060         PR java/9157
3061         * parse.y (build_string_concatenation): Remove redundant if.
3062         (patch_conditional_expr): Attempt to patch_string() the condition
3063         of a ?: as well, in addition to its other operands.
3064
3065 2005-01-25  Tom Tromey  <tromey@redhat.com>
3066
3067         * Make-lang.in (java/java-tree-inline.o): Removed.
3068
3069 2005-01-25  Ranjit Mathew  <rmathew@hotmail.com>
3070
3071         PR java/19070
3072         * parse.y (patch_binop): Allow comparisons against NULL only
3073         if the other operand is of a reference type.
3074
3075 2005-01-24  Tom Tromey  <tromey@redhat.com>
3076
3077         * java-tree.h (gcj_abi_version): Declare.
3078         * class.c (make_class_data): Push gcj_abi_version into "next"
3079         field.  Renamed field.
3080         * decl.c (gcj_abi_version): New global.
3081         (parse_version): New function.
3082         (java_init_decl_processing): Call it.  Renamed 'next' field.
3083         Include version.h.
3084         (GCJ_BINARYCOMPAT_ADDITION): New define.
3085
3086 2005-01-24  Roger Sayle  <roger@eyesopen.com>
3087
3088         PR java/19295
3089         * jcf-write.c (generate_bytecode_insns): Conversions between
3090         integer types of the same precision shouldn't generate widening
3091         or narrowing conversion bytecodes.
3092
3093 2005-01-22  Kazu Hirata  <kazu@cs.umass.edu>
3094
3095         * java-except.h, java-tree.h: Remove unused prototypes.
3096
3097 2005-01-20  Andrew Pinski  <pinskia@gcc.gnu.org>
3098
3099         PR java/18091:
3100         * jcf-write.c (perform_relocations): Don't call memcpy if source
3101         and destination are the same.
3102
3103 2005-01-17  Tom Tromey  <tromey@redhat.com>
3104
3105         * verify-impl.c (get_short): Sign extend.
3106         (get_int): Likewise.
3107
3108 2005-01-12  Ranjit Mathew  <rmathew@hotmail.com>
3109
3110         * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT
3111         with TYPE_SIZE.
3112
3113 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
3114
3115         * verify.c: Revert to the version before the BC-ABI merge.
3116
3117 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
3118
3119         PR java/19277
3120         * check-init.c (check_init): Take care of references that do not
3121         have an explicit final variable declaration (e.g. array length
3122         access) for pre/post in/de-crement operators.
3123
3124 2005-01-08  Mark Wielaard  <mark@klomp.org>
3125
3126         * parse.y (process_imports): Allocate (and free) original_name only
3127         when not already defined.
3128         * jcf-parse.c (read_class): Free results of find_class() and
3129         lrealpath().
3130         (java_parse_file): Keep pointer to head of file_list and free when
3131         done. Free result of lrealpath().
3132
3133 2005-01-05  Tom Tromey  <tromey@redhat.com>
3134
3135         * gcj.texi (Standard Properties): java.ext.dirs is now used.
3136
3137 2004-12-20  Andrew Haley  <aph@redhat.com>
3138
3139         * typeck.c: Use fold_convert for ints and booleans.
3140
3141 2004-12-17  Andrew Haley  <aph@redhat.com>
3142
3143         PR java/18931
3144         * typeck.c (convert): Use a CONVERT_EXPR when converting to
3145         BOOLEAN_TYPE or CHAR_TYPE.
3146         (convert_to_boolean, convert_to_char) : Remove.
3147         * convert.h (convert_to_boolean, convert_to_char) : Remove.
3148         * expr.c (expand_load_internal): Do type conversion if type is not
3149         as required.
3150
3151 2004-12-13  Danny Smith  <dannysmith@users.sourceforge.net>
3152
3153         PR target/18459
3154         * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION.
3155         Update comment.
3156
3157 2004-12-07  Andrew Haley  <aph@redhat.com>
3158
3159         PR java/18811:
3160         * jcf-parse.c (load_class): Remove sanity test for missing inner
3161         class file.
3162
3163 2004-12-06  Tom Tromey  <tromey@redhat.com>
3164
3165         * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
3166         (java.uninstall): Likewise.
3167         (java.maintainer-clean): Likewise.
3168         (.INTERMEDIATE): Likewise.
3169         (java.install-man): Likewise.
3170         (gcj-dbtool.pod): New target.
3171         * gcj.texi (Code Generation): Document -findirect-dispatch.
3172         (libgcj Runtime Properties): Document
3173         gnu.gcj.precompiled.db.path.
3174         (Top): Link to "Invoking gcj-dbtool".
3175
3176 2004-12-06  Tom Tromey  <tromey@redhat.com>
3177
3178         PR java/14853:
3179         * java-tree.h (extract_field_decl): Declare.
3180         * parse.y (extract_field_decl): Renamed from
3181         strip_out_static_field_access_decl.  No longer static.
3182         * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs.
3183
3184 2004-12-03  Tom Tromey  <tromey@redhat.com>
3185
3186         * lang.c (flag_new_verifier): Define.
3187         (java_post_options): Set flag_new_verifier if indirect dispatch
3188         is being used.
3189         * lang.opt (fnew-verifier): Removed.
3190
3191 2004-12-03  Tom Tromey  <tromey@redhat.com>
3192
3193         PR bootstrap/14614:
3194         * Make-lang.in (java.install-common): Only install transformed
3195         gcjh if gcj-cross exists.
3196
3197 2004-12-03  Andrew Haley  <aph@redhat.com>
3198
3199         PR java/18812
3200         * except.c (link_handler): Patch 'outer' field of siblings of the
3201         range we're demoting.
3202
3203 2004-12-03  Andrew Haley  <aph@redhat.com>
3204
3205         PR java/18697
3206         * class.c (layout_class_method): Don't fail to override a method
3207         simply because it has DECL_ARTIFICIAL set.
3208
3209 2004-12-02  Tom Tromey  <tromey@redhat.com>
3210
3211         PR java/16675:
3212         * parse.y (craft_constructor): Special case null_pointer_node.
3213
3214 2004-12-02  Tom Tromey  <tromey@redhat.com>
3215
3216         PR java/18741:
3217         * java-gimplify.c (java_gimplify_expr): Don't call
3218         SET_EXPR_LOCATION unless wrapped tree is an expression.
3219
3220 2004-11-27  Per Bothner  <per@bothner.com>
3221
3222         * jcf-parse.c (set_source_filename):  Improvement to Andrew's fix:
3223         Fix fencepost error in 'i', which got executed one too many times.
3224         Also, fold memcpy into explicit loop, as originally intended.
3225         Also, free temporary 'buf' which otherwise leaks.
3226
3227 2004-11-27  Per Bothner  <per@bothner.com>
3228
3229         * expr.c (build_expr_wfl): Only declare last_file and last_filenode
3230         local static variables if not USE_MAPPED_LOCATION.
3231
3232 2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>
3233
3234         * class.c, decl.c, expr.c: Fix comment typos.
3235
3236 2004-11-26  Andrew Pinski  <pinskia@physics.uc.edu>
3237
3238         PR java/18305
3239         * decl.c (end_java_method): Call
3240         attach_init_test_initialization_flags on all the init_decls.
3241         * parse.y (attach_init_test_initialization_flags): Move to ...
3242         * expr.c (attach_init_test_initialization_flags): here and
3243         support BIND_EXPR also.
3244         * java-tree.h (attach_init_test_initialization_flags): Prototype.
3245         * jcf-parse.c (parse_class_file): Don't disable class init
3246         optimization.
3247
3248 2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>
3249
3250         * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote
3251         in diagnostics.
3252
3253 2004-11-24  Richard Henderson  <rth@redhat.com>
3254
3255         * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type,
3256         vfy_string_type, vfy_throwable_type): Use ANSI declaration form.
3257
3258 2004-11-24  Tom Tromey  <tromey@redhat.com>
3259
3260         * verify.c (defer_merging): Don't use C++-style comment.
3261         * verify.h (java_opcode): Added java_opcode_end.
3262         * class.c (build_class_ref): Remove C++ comment and old FIXME.
3263
3264         * verify-impl.c (vfy_push_type): Removed bogus "return".
3265         (initialize_stack): Use vfy_alloc and vfy_free.
3266         (verify_instructions_0): Likewise.
3267
3268         * Merged gcj-abi-2-dev-branch to trunk.
3269
3270 2004-11-24  Andrew Haley  <aph@redhat.com>
3271
3272         * jcf-parse.c (parse_class_file): Set file_start_location.
3273
3274 2004-11-10  Tom Tromey  <tromey@redhat.com>
3275
3276         * class.c (make_field_value): Don't call build_static_field_ref.
3277         (build_static_field_ref): Don't emit direct references when using
3278         indirect dispatch.
3279
3280         * gcj.texi (Invoking gij): Document -verbose.  Put -verbose and
3281         -verbose:class into man page synopsis.
3282
3283 2004-11-09  Tom Tromey  <tromey@redhat.com>
3284
3285         * expr.c (build_java_arraystore_check): Still generate check if
3286         element type is itself an array.
3287
3288 2004-11-08  Tom Tromey  <tromey@redhat.com>
3289
3290         * java-tree.h (soft_check_assignment_node): Removed.
3291         (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE.
3292         * decl.c (java_init_decl_processing): Don't initialize
3293         soft_check_assignment_node.
3294
3295 2004-11-05  Tom Tromey  <tromey@redhat.com>
3296
3297         * class.c (layout_class_methods): Don't add Miranda methods when
3298         using indirect dispatch.
3299
3300 2004-11-05  Bryce McKinlay  <mckinlay@redhat.com>
3301
3302         * class.c (make_class_data): Call emit_assertion_table to set the
3303         'assertion_table' field.
3304         (build_signature_for_libgcj): Move here from expr.c.
3305         (add_assertion_table_entry): New function. Callback for assertion
3306         hashtable traversal.
3307         (emit_assertion_table): New. Take class argument, and generate
3308         assertion table DECL based on the TYPE_ASSERTIONS hashtable.
3309         * decl.c (init_decl_processing): Define assertion_entry_type record.
3310         Push 'assertion_table' class field instead of 'verify'.
3311         * expr.c (type_assertion_eq): Compare 'assertion_code' field.
3312         (type_assertion_hash): Include 'assertion_code' in hash.
3313         (add_type_assertion): Rewritten. Take class and assertion_code
3314         arguments. Add assertions to the TYPE_ASSERTIONS hashtable.
3315         (can_widen_reference_to): Use new add_type_assertion() arguments.
3316         * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE,
3317         JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE.
3318         (verify_identifier_node): Removed.
3319         (assertion_entry_type, assertion_table_type): New.
3320         (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type
3321         assertion code definitions.
3322         (struct type_assertion): Add assertion_code. Rename 'source_type' and
3323         'target_type' to 'op1' and 'op2'.
3324         (add_type_assertion): Declare.
3325         (lang_printable_name_wls): Remove unused definition.
3326         * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion
3327         to emit runtime assertion.
3328         (vfy_note_stack_type): Clean up non-C90 declarations.
3329         (vfy_note_local_type): Likewise.
3330         * verify.h (vfy_is_assignable_from): Declare.
3331         * verify-impl.c (is_assignable_from_slow): Remove unused function.
3332         (ref_compatible): Rename arguments. Call vfy_is_assignable_from()
3333         instead of is_assignable_from_slow().
3334         (types_compatible): Reinstate ref_compatible() call.
3335
3336 2004-11-04  Tom Tromey  <tromey@redhat.com>
3337
3338         * class.c (build_static_field_ref): Reverted previous patch.
3339
3340         * class.c (build_static_field_ref): Don't emit direct references
3341         when using indirect dispatch.
3342
3343 2004-11-03  Tom Tromey  <tromey@redhat.com>
3344
3345         * expr.c (expand_java_arrayload): Set lhs_type_node.
3346         (expand_java_arraystore): Set rhs_type_node.
3347
3348 2004-11-02  Tom Tromey  <tromey@redhat.com>
3349
3350         * jcf-parse.c (compute_class_name): Use filename length from zip
3351         directory, not strlen.
3352
3353         * expr.c (expand_invoke): Mark new interface methods as abstract.
3354
3355 2004-11-01  Tom Tromey  <tromey@redhat.com>
3356
3357         * verify-impl.c (push_jump): Removed check for uninitialized
3358         objects.
3359         (push_exception_jump): Likewise.
3360         (handle_ret_insn): Likewise.
3361         (handle_jsr_insn): Likewise.
3362         (state_check_no_uninitialized_objects): Removed.
3363
3364         * decl.c (check_local_unnamed_variable): Recognize
3365         promoted-to-int parameters when using the new verifier.
3366         * expr.c (expand_java_arraystore): Explicitly request array type
3367         when using new verifier.
3368         (expand_java_arrayload): Likewise.
3369         (invoke_build_dtable): Don't pass object_type_node as
3370         expression argument to build_java_indirect_ref.
3371         (build_java_check_indexed_type): Do nothing.
3372         (build_java_arraystore_check): Handle case where array doesn't
3373         have array type.
3374         (build_java_array_length_access): Likewise.
3375         (expand_invoke): Handle case where interface overrides a method
3376         from Object.
3377         (pop_type_0): Always succeed for reference types.
3378         (process_jvm_instruction): Don't pop a value in a dead
3379         exception handler.
3380         (pop_arguments): Convert arguments to correct types.
3381
3382 2004-10-29  Andrew Haley  <aph@redhat.com>
3383
3384         * jcf-parse.c (give_name_to_class): Remove line that was
3385         incorrectly merged.
3386
3387 2004-10-29  Andrew Haley  <aph@redhat.com>
3388
3389         * jcf-parse.c (set_source_filename): Add code to build new sfname.
3390
3391 2004-10-20  Andrew Haley  <aph@redhat.com>
3392
3393         * decl.c (end_java_method): Don't expand if flag_syntax_only.
3394
3395 2004-10-26  Tom Tromey  <tromey@redhat.com>
3396
3397         * verify.h (vfy_notify_verified): Removed.
3398         * verify-glue.c (vfy_notify_verified): Removed.
3399
3400 2004-10-26  Tom Tromey  <tromey@redhat.com>
3401
3402         * verify-impl.c (debug_print_state): Declare `i' before code.
3403         (merge_types): Modify `t' when it is null_type.
3404
3405 2004-10-26  Tom Tromey  <tromey@redhat.com>
3406
3407         * verify-impl.c (type_print): Renamed from print.  Now static and
3408         takes an argument.
3409         (debug_print_state): Use type_print.
3410
3411 2004-10-25  Tom Tromey  <tromey@redhat.com>
3412
3413         * expr.c (build_invokeinterface): Compute correct offset for
3414         index into interface methods.
3415
3416 2004-10-20  Tom Tromey  <tromey@redhat.com>
3417
3418         * java-tree.h (verify_jvm_instructions_new): Declare.
3419
3420         * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1
3421         command line.
3422
3423         * verify-impl.c (verify_instructions): Correctly handle wide
3424         types on the stack.
3425         * verify-glue.c (vfy_get_class_name): Use DECL_NAME.
3426         (vfy_get_component_type): Strip pointer types.
3427         (vfy_find_class): Use get_type_from_signature.  Strip pointer
3428         types.
3429         Include java-except.h.
3430
3431 2004-10-20  Bryce McKinlay  <mckinlay@redhat.com>
3432
3433         * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t,
3434         vfy_push_type_t, set_variable, add_new_state, merge_into,
3435         handle_jsr_insn, branch_prepass, check_class_constant,
3436         check_wide_constant, get_one_type, compute_static_types,
3437         verify_instructions_0): Clean up C99 declarations after statements.
3438
3439 2004-10-20  Tom Tromey  <tromey@redhat.com>
3440
3441         * verify-impl.c (merge_refs): Compare reference against iterator,
3442         not ref2.
3443
3444         * verify-glue.c (vfy_tag): Mask off resolved flag.
3445
3446 2004-10-19  Tom Tromey  <tromey@redhat.com>
3447
3448         * verify-impl.c (verify_instructions): Call vfy_note_local_type.
3449         (init_state_with_stack): Initialize `this_type' in state.
3450         (verify_method): Use debug_print.
3451         * verify-glue.c (vfy_is_primitive): Removed debugging print.
3452         (vfy_note_stack_depth): Reverted last patch.
3453         (vfy_note_stack_type): Note pointer to Object, not Object.
3454         (vfy_note_local_type): Likewise.
3455
3456         * verify.h (vfy_note_instruction_seen): Declare.
3457         * verify-glue.c (verify_jvm_instructions_new): Set
3458         BCODE_EXCEPTION_TARGET on target instruction.
3459         (vfy_note_instruction_seen): New function.
3460         * verify-impl.c (FLAG_INSN_SEEN): New define.
3461         (verify_instructions_0): Set flag on instruction.  Save state for
3462         PC=0 later.
3463         (verify_instructions): Call vfy_note_instruction_seen.
3464
3465         * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error.
3466         (verify_jvm_instructions_new): Call method_init_exceptions,
3467         add_handler, and handle_nested_ranges.
3468         * verify-impl.c (verify_method): Return 1 on success.
3469         (verify_instructions_0): Save the state at PC=0.
3470
3471         * verify-impl.c (init_type_from_class): Set is_resolved and
3472         ref_next on new ref_intersection.
3473         (init_type_from_string): Likewise.
3474
3475 2004-10-15  Bryce McKinlay  <mckinlay@redhat.com>
3476
3477         * expr.c (expand_bytecode): Use verify_jvm_instructions_new
3478         if flag_new_verifier is set.
3479         * java-tree.h (flag_new_verifier): Declare.
3480         * lang.opt (fnew-verifier): New option.
3481         * verify-impl.c: Work around namespace pollution by undef'ing
3482         'current_class'.
3483         (struct verifier_context): Make 'bytecode' const.
3484         (verify_fail_pc): Pass -1 PC argument to vfy_fail.
3485         (types_compatible): For the BC-ABI, always consider reference types
3486         compatible.
3487         (check_class_constant): Use vfr->current_class.
3488         (check_constant): Likewise.
3489         (check_wide_constant): Likewise.
3490         (check_field_constant): Check for 'L' at start of type name.
3491         (get_one_type): Return pointer instead of type. Set type result in
3492         caller via passed type pointer.
3493         (compute_argument_types): Update to use new get_one_type arguments.
3494         (compute_return_type): Likewise.
3495         (make_verifier_context): New. Allocate and initialize 'vfr'.
3496         (free_verifier_context): New. Free 'vfr' and its contents.
3497         (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context
3498         and free_verifier_context.
3499
3500 2004-10-15  Tom Tromey  <tromey@redhat.com>
3501
3502         * verify-glue.c (vfy_note_local_type): Mark argument as unused.
3503         * verify.h (vfy_fail): Fixed formatting.
3504
3505         * verify-impl.c (vfr): Fixed comment formatting.
3506         (collapse_type): New function.
3507         (verify_instructions): Notify compiler about type map.
3508         * verify.h (vfy_note_stack_depth): Updated.
3509         (vfy_note_stack_type): Likewise.
3510         (vfy_note_local_type): Likewise.
3511         (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type):
3512         Declare.
3513         * verify-glue.c (vfy_note_stack_depth): Correctly size type
3514         state.  Added `method' argument.
3515         (vfy_note_stack_type): Renamed from vfy_note_type.  Added `method'
3516         argument.
3517         (vfy_note_local_type): New function.
3518         (vfy_unsuitable_type): Likewise.
3519         (vfy_return_address_type): Likewise.
3520         (vfy_null_type): Likewise.
3521
3522         * verify.h (VFY_IN_GCC): Removed.
3523         (VFY_WANT_TYPEMAP): Removed.
3524         * verify-impl.c (verify_instructions_0): Removed useless "\".
3525         (struct state) <next>: Uncomment.
3526
3527 2004-10-13  Bryce McKinlay  <mckinlay@redhat.com>
3528
3529         * verify-impl.c: Formatting fixes. Reformat C++-style comments to
3530         C-style.
3531
3532 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
3533
3534         * Make-lang.in (verify.o): Re-enabled this target.
3535         * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED.
3536         (vfy_get_interface): Likewise.
3537         (verify_jvm_instructions_new): Renamed from verify_jvm_instructions.
3538         * verify.h (verify_jvm_instructions_new): Declare.
3539         * verify-impl.c (free_state): Temporarily comment out unused
3540         function.
3541
3542 2004-10-06  Tom Tromey  <tromey@redhat.com>
3543
3544         * java-tree.h (JV_STATE_READ): New enum value.
3545
3546 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
3547
3548         * verify.h: New file.
3549
3550 2004-10-05  Bryce McKinlay  <mckinlay@redhat.com>
3551
3552         * verify-impl.c, verify-glue.c, verify.h: New files.
3553         * Make-lang.in: Add rules for verify-impl.o and verify-glue.o.
3554
3555 2004-09-24  Andrew Haley  <aph@redhat.com>
3556
3557         * decl.c (check_local_unnamed_variable): Always use the PARM_DECL
3558         for a slot if it's of pointer type.
3559
3560 2004-09-14  Tom Tromey  <tromey@redhat.com>
3561
3562         * class.c (make_class_data): Correctly initialize "state" field.
3563         Initialize "engine" field.
3564         * decl.c (java_init_decl_processing): Add "engine" field.
3565
3566 2004-09-10  Andrew Haley  <aph@redhat.com>
3567
3568         PR java/12760
3569         * expr.c (build_invokeinterface): Use fast method for interface
3570         dispatch.
3571         * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE,
3572         JTI_ITABLE_PTR_TYPE.
3573         (struct lang_type): Add  itable_methods, itable_decl, itable_syms_decl.
3574         (emit_symbol_table): Add new arg, element_size.
3575         * decl.c (java_init_decl_processing): Initialize Class.itable.
3576         * class.c (GEN_TABLE): New macro.
3577         (gen_indirect_dispatch_tables): Use it.  Add itable.
3578         (make_class_data): Add new arg for emit_symbol_table().
3579         Emit itable.
3580         (add_miranda_methods): Make sure search_class has been parsed.
3581         (emit_symbol_table): Add new arg, element_size.
3582
3583 2004-09-06  Andrew Haley  <aph@redhat.com>
3584
3585         * verify.c (merge_types): Return Object for all merges of
3586         interfaces.
3587         * expr.c (add_type_assertion): Don't generate assertions when
3588         source type is array of Object.
3589
3590 2004-09-03  Andrew Haley  <aph@redhat.com>
3591
3592         * class.c (finish_class): Nullify TYPE_VERIFY_METHOD.
3593
3594         * lang.c (java_post_options): Force flag_verify_invocations if
3595         we're not using indirect dispatch.
3596
3597         * expr.c (pop_type_0): Move test for interfaces before call to
3598         can_widen_reference_to().
3599         (build_signature_for_libgcj): Remove generation of canonical array
3600         type.
3601         (add_type_assertion): Canonicalize both arrays.
3602         Don't assert that type X can be assigned to Object.
3603         Don't assert that type X an be assigned to type X.
3604         Don't assert that Object can be assigned to type X.
3605         (can_widen_reference_to): Warn whenever we generate an assertion.
3606         (process_jvm_instruction): Use throwable_type_node for the type of
3607         an exception class.
3608
3609 2004-09-01  Andrew Haley  <aph@redhat.com>
3610
3611         * decl.c (java_init_decl_processing): Change
3612         verify_identifier_node to "__verify".
3613         * expr.c (add_type_assertion): Use verify_identifier_node for name.
3614         * java-tree.h (verify_identifier_node): Change to "__verify".
3615
3616         * expr.c (build_signature_for_libgcj): New function.
3617         (add_type_assertion): Use it to construct signatures for
3618         source_type and target_type.
3619
3620 2004-08-27  Andrew Haley  <aph@redhat.com>
3621
3622         * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE.
3623         (verify_identifier_node): New.
3624         (TYPE_VERIFY_METHOD): New.
3625         (struct type_assertion): New type.
3626         * expr.c (type_assertion_eq): New function.
3627         (type_assertion_hash): New function.
3628         (add_type_assertion): New function.
3629         (can_widen_reference_to): Call add_type_assertion().
3630         * decl.c (java_init_decl_processing): Add verify_identifier_node.
3631         * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type).
3632         (finish_class): Output TYPE_VERIFY_METHOD (type).
3633
3634         * decl.c (end_java_method): Nullify unused fields.
3635
3636 2004-08-17  Andrew Haley  <aph@redhat.com>
3637
3638         * verify.c (defer_merging): Quieten.
3639         * jcf-parse.c (load_class): Only try to open a class file if it's
3640         java.lang.Object or if it's part of the current compilation.
3641         Check that the class we just tried to load is the class we just
3642         loaded.  Quieten.
3643         (java_parse_file): Set flag_verify_invocations off if we're
3644         compiling from .class.
3645         (parse_zip_file_entries): Abort if we try to read a dummy class.
3646         * expr.c (can_widen_reference_to): Quieten.
3647         (build_invokevirtual): Abort if we try to invokevirtual an
3648         interface.
3649         (expand_invoke): Don't build a non-interface call to an interface.
3650         (build_instanceof): Don't do premature optimization if
3651         flag_verify_invocations is not set.
3652         * class.c (set_super_info): Disable code that inherits TYPE_DUMMY
3653         from superclass.
3654         (build_static_field_ref): Add correct type conversion for
3655         field_address.
3656         (add_miranda_methods): Disable generation of Miranda methods for
3657         dummy classes.
3658         (layout_class_method): Don't complain about non-static method
3659         overrides static method with dummy classes.
3660
3661 2004-08-13  Tom Tromey  <tromey@redhat.com>
3662
3663         * class.c (build_static_field_ref): Re-enable atable lookups for
3664         static fields.
3665
3666         * parse.y (strip_out_static_field_access_decl): Indentation fix.
3667
3668 2004-08-11  Tom Tromey  <tromey@redhat.com>
3669
3670         * gcj.texi (libgcj Runtime Properties): Document new properties.
3671
3672 2004-08-06  Andrew Haley  <aph@redhat.com>
3673
3674         * jcf-parse.c (load_class): Check that we really have loaded the
3675         class we're looking for.
3676
3677 2004-07-19  Andrew Haley  <aph@redhat.com>
3678
3679         * verify.c (verify_jvm_instructions): Comment change only.
3680
3681         * typeck.c (build_java_array_type): Add size field to array name.
3682
3683         * java-tree.h (LOCAL_SLOT_P): New.
3684         (update_aliases): Add PC argument.
3685         (pushdecl_function_level): New function.
3686
3687         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
3688         MODIFY_EXPR, and SAVE_EXPR.
3689         (java_gimplify_modify_expr): New function.
3690
3691         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
3692         (expand_iinc): Pass PC to update_aliases().
3693         (STORE_INTERNAL): Likewise.
3694         (process_jvm_instruction): Likewise.
3695
3696         * decl.c (base_decl_map): New variable.
3697         (uniq): New variable.
3698         (update_aliases): Rewrite with more thorough checking.
3699         (debug_variable_p): New function.
3700         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
3701         (check_local_named_variable): Delete whole function.
3702         (initialize_local_variable): New function.
3703         (check_local_unnamed_variable): Add checks and comments.
3704         (find_local_variable): Rewrite.
3705         (java_replace_reference): New function.
3706         (function_binding_level): New variable.
3707         (pushdecl_function_level): New function.
3708         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
3709         (maybe_pushlevels): Call pushdecl() on each of the new decls.
3710         (start_java_method): Reset uniq.  Create base_decl_map.  Set
3711         function_binding_level.
3712         (end_java_method): Null unused fields to save memory.
3713
3714 2004-06-29  Andrew Haley  <aph@redhat.com>
3715
3716         * except.c (expand_start_java_handler): Push a new binding level.
3717         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
3718         register_exception_range() to register where we'll do it.
3719         (expand_end_java_handler): Remove old bogus code.  Replace with
3720         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
3721         the top of the expression we're curently building.
3722         (maybe_end_try): Delete.
3723         * decl.c (binding_level.exception_range): New field.
3724         (clear_binding_level): Add field exception_range.  Reformat.
3725         (poplevel): Call expand_end_java_handler().
3726         (poplevel): Call java_add_stmt only if functionbody is false.
3727         (maybe_poplevels): Don't call maybe_end_try() from here.
3728         (end_java_method): Clear no longer used trees in function decl.
3729         (register_exception_range): New function.
3730         * java-tree.h (register_exception_range, struct eh_range): Declare.
3731
3732 2004-06-22  Andrew Haley  <aph@redhat.com>
3733
3734         * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of
3735         the otable.
3736         * check-init.c (get_variable_decl): Teach check-init about
3737         FIELD_DECLs addressed via the otable.
3738         * jcf-parse.c (load_class): Check CLASS_LOADED_P, not
3739         CLASS_PARSED_P.
3740
3741 2004-05-28  Andrew Haley  <aph@redhat.com>
3742
3743         * jcf-parse.c (load_class): Don't try to read a class that we've
3744         already read.
3745
3746         * expr.c (build_invokeinterface): Use the old-fashioned way of
3747         doing indirect dispatch: look up interfaces by name.
3748         * java-tree.h (enum java_tree_index): Add
3749         JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE
3750         * decl.c (java_init_decl_processing): Add
3751         soft_lookupinterfacemethodbyname_node.
3752
3753         * gjavah.c (print_method_info): Final methods have vtable entries,
3754         so gjavah needs to output them.
3755         * class.c (layout_class_method): Generate vtable entries for final
3756         methods.
3757         * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect
3758         dispatch, even if a method is final.
3759
3760 2004-05-25  Andrew Haley  <aph@redhat.com>
3761
3762         * class.c (build_symbol_entry): Convert the names of constructors
3763         to init_identifier_node when generating an entry for the indirect
3764         dispatch table.
3765
3766         * expr.c (build_known_method_ref): Generate indirect calls for
3767         all methods marked DECL_EXTERNAL or TREE_PUBLIC.
3768
3769 2004-05-24  Andrew Haley  <aph@redhat.com>
3770
3771         * expr.c (build_known_method_ref): Make sure ARRAY_REF access to
3772         atable element is of the right type.
3773
3774         * class.c (build_static_field_ref): Cast pointer to correct type
3775         for field.
3776
3777 2004-04-20  Bryce McKinlay  <mckinlay@redhat.com>
3778
3779         * Merged with HEAD as of 20040514. Diff against
3780         gcj-abi-2-merge-20040514.
3781
3782 2004-04-16  Andrew Haley  <aph@redhat.com>
3783
3784         * verify.c (check_pending_block): Disable subroutine checks.
3785         (defer_merging): New function.
3786         (merge_types): If types are dummy, use defer_merging to combine them.
3787         (verify_jvm_instructions): If invocation is invokeinterface and
3788         target is dummy, assume target really is an interface.
3789
3790         * parse.y (patch_invoke): Break out call to java_create_object.
3791
3792         * lang.c (flag_verify_invocations): New.
3793
3794         * jcf-parse.c (load_class): If we've already failed to load a
3795         class, don't try again.
3796         (load_class): If we can't find a .class file, don't fail, but emit
3797         a warning.
3798         (parse_class_file): Don't act on dummy methods.
3799
3800         * java-tree.h (flag_verify_invocations): New.
3801         (TYPE_DUMMY): New.
3802         (lang_type.dummy_class): New field.
3803         (java_create_object): New function.
3804         (METHOD_DUMMY): New.
3805
3806         * expr.c (build_field_ref): Widen field offset.
3807         (pop_type_0): If the type in stack_type_map is a TREE_LIST, check
3808         that each of its elements is compatible with the one we're
3809         popping.
3810         (pop_type_0): Issue a warning to say that we need to generate a
3811         runtime check.
3812         (java_create_object): New function.
3813         (build_field_ref): Only generate hard refs if we're not using
3814         indirect dispatch.
3815         (expand_java_field_op): If we're using !verify_invocations and we
3816         see a missing field, generate a decl for it.
3817
3818         (expand_invoke): If a class doesn't have the method we seek and
3819         we're using !flag_verify_invocations, generate a decl for the
3820         method now.
3821
3822         (build_known_method_ref): Always use indirect dispatch via the
3823         atable for static methods.
3824
3825         (expand_java_NEW): Break out object creation into new function,
3826         java_create_object.
3827
3828         (can_widen_reference_to): Issue a warning to say that we need to
3829         generate a runtime check.
3830
3831         * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass.
3832         (make_method_value): Also use index for interfaces.
3833         (make_class_data): Skip dummy field for inherited data.
3834         Don't build method array for dummy methods.
3835         Set size_in_byte to -1 when using inirect dispatch
3836         Don't build a hard class ref if we don't have a hard ref to our
3837         superclass, or if we're using inirect dispatch.
3838         Null out dispatch tables.
3839
3840         (layout_class_method): Don't complain about non-static method
3841         overrides static method is method is artificial.
3842
3843         (build_static_field_ref): Disable atable references to static
3844         fields for the time being.
3845
3846         (layout_class_methods): Check for CLASS_INTERFACE as
3847         well as CLASS_ABSTRACT.
3848
3849 2004-11-24  Steven Bosscher  <stevenb@suse.de>
3850
3851         * class.c (make_class_data): Don't check flag_inline_functions.
3852         * lang.c (flag_really_inline): Remove unused flag.
3853         (java_handle_option): Don't set it here.  Remove special handling
3854         of flag_inline_functions for Java.
3855         (java_init): Don't set flag_inline_trees here.  Already done...
3856         (java_post_options): ...here.  Don't clear flag_inline_functions.
3857
3858 2004-11-24  Steven Bosscher  <stevenb@suse.de>
3859
3860         * java-gimplify.c (java_gimplify_labeled_block_expr): New function.
3861         (java_gimplify_exit_block_expr): New function.
3862         (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and
3863         LABELED_BLOCK_EXPR.
3864         * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def.
3865         (EXIT_BLOCK_EXPR): Likewise.
3866         * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h.
3867         (LABELED_BLOCK_BODY): Likewise.
3868         (EXIT_BLOCK_LABELED_BLOCK): Likewise.
3869         * jcf-write.c (generate_bytecode_insns): Don't handle the unused
3870         EXIT_BLOCK_RETURN operand.  Use EXIT_BLOCK_LABELED_BLOCK instead of
3871         TREE_OPERAND.
3872         * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR.
3873         (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and
3874         EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND.  Don't handle the
3875         second operand of EXIT_BLOCK_EXPR.
3876         * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of
3877         TREE_OPERAND.
3878         (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes.
3879
3880 2004-11-23  Ben Elliston  <bje@au.ibm.com>
3881
3882         * xref.h (xref_flag_value): Remove.
3883         (xref_set_data, xref_get_data): Likewise.
3884         (xref_set_current_fp): Likewise.
3885         (XREF_NONE): Likewise.
3886         (XREF_GET_DATA): Likewise.
3887         * xref.c (xref_flag_value): Remove.
3888         (xref_set_data, xref_get_data): Likewise.
3889         (xref_set_current_fp): Likewise.
3890
3891 2004-11-23  Ben Elliston  <bje@au.ibm.com>
3892
3893         * gjavah.c (output_directory): Make static.
3894         (temp_directory): Likewise.
3895
3896 2004-11-15  Tom Tromey  <tromey@redhat.com>
3897
3898         * decl.c (instn_ptr_type_node): Removed.
3899         (lineNumbers_ptr_type_node): Removed.
3900         (jint_type): Removed.
3901         (jint_ptr_type): Removed.
3902
3903 2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>
3904
3905         PR java/15576
3906         * check-init.c (check_init): Ignore DECL_EXPR.
3907         * expr.c (always_initialize_class_p): Reenable.
3908         (build_class_init): Use a variable to store the decl.  Also use
3909         boolean_false_node instead of integer_zero_node.
3910         * parse.y (attach_init_test_initialization_flags): Add a decl_expr
3911         to the block.
3912
3913 2004-11-08  Tom Tromey  <tromey@redhat.com>
3914
3915         PR java/16843:
3916         * gjavah.c (HANDLE_END_FIELD): Call print_field_info when
3917         generating a JNI header.
3918         (print_field_info): Handle JNI headers.
3919         (jni_print_float): Likewise.
3920         (jni_print_double): Likewise.
3921
3922 2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
3923
3924         * decl.c (end_java_method): Remove duplicated code.
3925
3926 2004-11-06  Zack Weinberg  <zack@codesourcery.com>
3927             Gerald Pfeifer  <gerald@pfeifer.com>
3928
3929         * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H
3930         as well.
3931
3932 2004-11-02  Bryce McKinlay  <mckinlay@redhat.com>
3933
3934         PR java/17265
3935         * class.c: Reinstate 2004-08-18 patch.
3936         (make_local_function_alias): Don't create an alias for extern (native)
3937         functions.
3938
3939 2004-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
3940
3941         PR java/17265
3942         * class.c (make_local_function_alias): Revert 2004-08-18 change.
3943         (make_method_value): Likewise.
3944
3945 2004-10-21  Andrew Haley  <aph@redhat.com>
3946
3947         PR java/18091:
3948         * jcf-parse.c (set_source_filename): Add code to build new sfname.
3949
3950 2004-10-20  Andrew Haley  <aph@redhat.com>
3951
3952         * decl.c (end_java_method): Don't expand if flag_syntax_only.
3953         Remove duplicated code block.
3954
3955 2004-10-18  Steven Bosscher  <stevenb@suse.de>
3956
3957         * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn):
3958         New rules to work around old Bison warnings.
3959
3960 2004-10-17  Steven Bosscher  <stevenb@suse.de>
3961
3962         * class.c (ident_subst): Always alloca buffer.
3963         * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy
3964         opcode after including javaop.def.
3965         * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the
3966         conditional expression that exits, to avoid warnings.
3967         * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as
3968         a user of an extension.
3969         * win32-host.c: Move check down to have non-empty file when
3970         WIN32 is not defined.
3971
3972         * Make-lang.in (java-warn): Add STRICT_WARN.
3973         (java/jcf-io.o-warn): Don't have Werror for this file.
3974         * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use.
3975
3976 2004-10-16  Hans-Peter Nilsson  <hp@bitrange.com>
3977
3978         * expr.c (expr_add_location): Move declaration to before all
3979         statements.
3980         * parse.y (java_expand_classes): Ditto.
3981         * lex.c (java_peek_unicode): Ditto.
3982
3983 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
3984
3985         * check-init.c: Use %<, %> and %q for quoting in diagnostics,
3986         if possible, else convert `foo' to 'foo'.
3987         * class.c: Likewise.
3988         * decl.c: Likewise.
3989         * expr.c: Likewise.
3990         * jcf-io.c: Likewise.
3991         * jcf-parse.c: Likewise.
3992         * lang.c: Likewise.
3993         * lex.c: Likewise.
3994         * parse.h: Likewise.
3995
3996 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
3997
3998         * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and
3999         rename parameter 'msg' to 'msgid' in function declaration.
4000         (issue_warning_error_from_context): Likewise.
4001         (yyerror): Rename parameter 'msg' to 'msgid'.
4002         (all over): Use new quoting style for diagnostics.
4003
4004 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
4005
4006         * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c,
4007         jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c:
4008         Update copyright.
4009
4010 2004-10-14  Matt Austern  <austern@apple.com>
4011
4012         * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct
4013         pointer_set_t* now.
4014
4015 2004-10-13  Tom Tromey  <tromey@redhat.com>
4016
4017         PR java/15578:
4018         * lang.opt (--extdirs): Document.
4019         * jvspec.c (lang_specific_driver): Recognize -encoding and
4020         -extdirs.
4021
4022 2004-10-06  Ulrich Weigand  <uweigand@de.ibm.com>
4023
4024         * parse.y (issue_warning_error_from_context): Use va_list *
4025         instead of va_list parameter.
4026         (parse_error_context): Update call.
4027         (parse_warning_context): Likewise.
4028
4029 2004-10-05  Zack Weinberg  <zack@codesourcery.com>
4030
4031         * parse.y, parse-scan.y: Add list of diagnostic messages to
4032         insulate translation template from version of yacc/bison used
4033         to compile the grammar.
4034
4035 2004-10-05  Ranjit Mathew  <rmathew@hotmail.com>
4036
4037         Prepare for %q, %< and %> in diagnostic message strings.
4038         * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2.
4039         Name second parameter 'msgid'.
4040         * parse.y: Additionally include pretty-print.h and diagnostic.h.
4041         (issue_warning_error_from_context): Use pretty-printer functions
4042         instead of vsprintf for constructing formatted messages. Rename
4043         parameter 'msg' to 'msgid'.
4044         (parse_error_context): Rename parameter 'msg' to 'msgid'.
4045         (parse_warning_context): Likewise.
4046
4047 2004-10-05  Andrew Haley  <aph@redhat.com>
4048
4049         PR java/17779
4050         * jcf-parse.c (parse_zip_file_entries): If a class has a
4051         superclass and a TYPE_SIZE of zero, lay it out.
4052
4053 2004-09-30  Andrew Haley  <aph@redhat.com>
4054
4055         PR java/17733
4056         * jcf-parse.c (compute_class_name): Rewrite.
4057
4058 2004-10-01  Jan Hubicka  <jh@suse.cz>
4059
4060         * java.c (java_expand_body): Update call of tree_rest_of_compilation.
4061
4062 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
4063
4064         * lex.c: Fix a comment typo.
4065
4066 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
4067
4068         * java-tree.h: Fix a comment typo.
4069
4070 2004-09-30  Per Bothner  <per@bothner.com>
4071
4072         Simplify lexer.  Implement --enable-mapped-location support.
4073         * jcf-parse.c (parse_class_file):  Use linemap_line_start.
4074         (parse_source_file_1): Pass filename as extra parameter, so we can call
4075         linemap_add and set input_location here, rather than in both callers.
4076         (read_class): Pass copied filename to parse_source_file_1.
4077         Don't initialize wfl_operator - only needed for source compilation.
4078         (read_class, jcf_parse):  Call linemap_add with LC_LEAVE.
4079         * lex.h:  Remove a bunch of debugging macros.
4080         * lex.h (struct_java_line, struct java_error):  Remove types.
4081         (JAVA_COLUMN_DELTA):  Remove - use java_lexer.next_colums instead.
4082         (struct java_lc_s):  Remove prev_col field.
4083         (struct java_lexer):  New fields next_unicode, next_columns, and
4084         avail_unicode.  New position field, and maybe token_start field.
4085         Don't need hit_eof field - use next_unicode == -1 instead.
4086         (JAVA_INTEGERAL_RANGE_ERROR):  Rename to JAVA_RANGE_ERROR.
4087         (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR):  Update accordingly.
4088         * parse.h:  Various changes for USE_MAPPED_LOCATION.
4089         (EXPR_WFL_EMIT_LINE_NOTE): XXX
4090         (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros.
4091         (struct parser_ctxt):  New file_start_location field.
4092         Remove p_line, c_line fields since we no longer save lines.
4093         Remove elc, lineno, and current_jcf fields - no longer used.
4094         * parse.y:  Updates for USE_MAPPED_LOCATION and new lexer.
4095         Don't use EXPR_WFL_ADD_COL since that isn't trivial with
4096         source_location and is probably not needed anymore anyway.
4097         Use new expr_add_Location function.
4098         (SET_EXPR_LOCATION_FROM_TOKEN):  New convenience macro.
4099         (java_pop_parser_context):  Minor cleanup.
4100         (java_parser_context_save_global, java_parser_context_restore_global,
4101         java_pop_parser_context):  Save/restore input_location as a unit.
4102         (issue_warning_error_from_context):  If USE_MAPPED_LOCATION take
4103         a source_location instead of a wfl context node.
4104         (check_class_interface_creation):  input_filename is not addressable.
4105         (create_artificial_method):  Calling java_parser_context_save_global
4106         and java_parser_context_restore_global is overkill.  Instead,
4107         temporarily set input_location from class decl.
4108         (java_layout_seen_class_methods): Set input_location from method decl.
4109         (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION.
4110         (finish_loop_body):  Likewise.
4111         * lex.c: Updates for USE_MAPPED_LOCATION.  Use build_unknwon_wfl.
4112         (java_sprint_unicode):  Take a character, not index in line.
4113         (java_sneak_uncode):  Replaced by java_peek_unicode.
4114         (java_unget_unicode):  No longer used.
4115         (java_allocate_new_line. java_store_unicode):  Removed, since we
4116         no longer remember "lines".
4117         (java_new_lexer):  Update for new data structures.
4118         (java_read_char):  Move unget_value checking to java_read_unicode.
4119         (java_get_unicode, java_peek_unicode, java_next_unicode): New more
4120         efficient functions that are used directly when lexing.
4121         (java_read_unicode_collapsing_terminators):  No longer needed.
4122         (java_parse_end_comment, java_parse_escape_sequence, do_java_lex):
4123         Re-organize to use java_peek_unicode to avoid java_unget_unicode.
4124         (java_parse_escape_sequence):  Rewrite to be simpler / more efficient.
4125         (do_java_lex):  Lots of movings around to avoid java_unget_unicode,
4126         combine switch branches, and test for common token kinds earlier.
4127         (java_lex_error):  Rewrite.
4128         * jv-scan.c (expand_location): New function, copied from tree.c.
4129         (main): Set ctxp->filename instead of setting input_filename directly.
4130
4131 2004-09-30  Per Bothner  <per@bothner.com>
4132
4133         More cleanup for --enable-mapped-location.
4134         * class.c (push_class):  If USE_MAPPED_LOCATION don't set
4135         input_location here.  Instead do it in give_name_to_class.
4136         (build_class_ref):  Set DECL_ARTIFICIAL, for the sake of dwarf2out.
4137         * expr.c (expand_byte_code): Call linemap_line_start.
4138         * expr.c (build_expr_wfl):  If USE_MAPPED_LOCATION, change final
4139         parameters to a source_location.  Don't need EXPR_WFL_FILENAME_NODE.
4140         (expr_add_location):  New function, if USE_MAPPED_LOCATION.
4141         * class.c (maybe_layout_super_class):  Adjust build_expr_wfl call
4142         to USE_MAPPED_LOCATION case.
4143
4144         * java-tree.h (JAVA_FILE_P, ZIP_FILE_P):  Remove unused macros.
4145         * jcf-parse.c (java_parse_file): Don't set input_filename.
4146         Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames.
4147         Create a list of TRANSLATION_UNIT_DECL.
4148         (current_file_list):  Is now a TRANSLATION_UNIT_DECL chain.  The
4149         reason is so we can set a DECL_SOURCE_LOCATION for each file.
4150         (java_parse_file):  Don't set unused ZIP_FILE_P, JAVA_FILE_P..
4151         Create line-map LC_ENTER/LC_LEAVE entries for archive itself.
4152         (file_start_location):  New static.
4153         (set_source_filename):  Avoid extra access to input_filename macro.
4154         Concatenate new name with class's package prefix.
4155         (set_source_filename, give_name_to_class): Update.
4156         (give_name_to_class):  Set class's "line 0" input_location here.
4157         (parse_class_file):  Set input_location as a unit.
4158
4159         * jcf-parse.c (load_class): Sanity test if missing inner class file.
4160
4161 2004-09-29  Per Bothner  <per@bothner.com>
4162
4163         * java-tree.h:  Redefine some macros and add some declaration
4164         to handle the USE_MAPPED_LOCATION case.
4165         * parse.h (EXPR_WFL_QUALIFICATION):  Use operand 1, not 2.
4166         * java-tree.h (EXPR_WFL_FILENAME_NODE):  Use operand 2, not 1.
4167         * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in
4168         USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone.
4169
4170         * check-init.c (check_init): Handle USE_MAPPED_LOCATION case.
4171         * decl.c (finish_method, java_add_stmt): Likewise.
4172         * java-gimplify.c (java-gimplify.c):  Likewise.
4173         * jcf-write.c (generate_bytecode_insns):  Likewise.
4174         * lang.c (java_post_options): Likewise - call linemap_add.
4175
4176 2004-09-29  Andrew Haley  <aph@redhat.com>
4177
4178         PR java/17007
4179         * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the
4180         result of TRUNC_MOD_EXPR.
4181         (patch_unaryop): Likewise for CONVERT_EXPR, which may throw.
4182         * decl.c (java_init_decl_processing): Mark
4183         soft_lookupinterfacemethod_node and soft_instanceof_node pure.
4184
4185 2004-09-28  Tom Tromey  <tromey@redhat.com>
4186
4187         PR java/15710:
4188         * class.c (add_miranda_methods): Load superinterface if not
4189         already loaded.
4190
4191 2004-09-28  Andrew Haley  <aph@redhat.com>
4192
4193         PR java/17586
4194         * jcf-parse.c (load_class): Don't try to read a class that we've
4195         already read.
4196
4197 2004-09-28  Andrew Haley  <aph@redhat.com>
4198
4199         * jcf-parse.c (load_class): Back out previous broken patch.
4200
4201 2004-09-28  Andrew Haley  <aph@redhat.com>
4202
4203         PR java/17586
4204         * jcf-parse.c (load_class): Don't try to read a class that we've
4205         already read.
4206         Check that we really did read the right class.
4207
4208 2004-09-25  Tom Tromey  <tromey@redhat.com>
4209
4210         PR java/17500:
4211         * parse.y (create_artificial_method): Use add_method_1.
4212
4213 2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>
4214
4215         * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix
4216         comment typos.
4217         * gcj.texi: Fix typos.
4218
4219 2004-09-24  Tom Tromey  <tromey@redhat.com>
4220
4221         PR java/15656:
4222         * parse.y (class_instance_creation_expression): Set `$$' to NULL
4223         in error parts of rule.
4224         (unary_expression): Don't call error_if_numeric_overflow when $1
4225         is NULL.
4226
4227 2004-09-24  Tom Tromey  <tromey@redhat.com>
4228
4229         PR java/16789:
4230         * parse.y (resolve_qualified_expression_name): Set
4231         CAN_COMPLETE_NORMALLY on first call when chaining static calls.
4232         * expr.c (force_evaluation_order): Check for empty argument list
4233         after stripping COMPOUND_EXPR.
4234
4235 2004-09-23  Andrew Haley  <aph@redhat.com>
4236
4237         PR java/16927:
4238         * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of
4239         COND_EXPRs.
4240
4241 2004-09-23  Tom Tromey  <tromey@redhat.com>
4242
4243         PR java/17329:
4244         * java-gimplify.c (java_gimplify_expr) <SAVE_EXPR>: Ignore case
4245         where operand is null.
4246
4247 2004-09-23  Tom Tromey  <tromey@redhat.com>
4248
4249         PR java/17380:
4250         * parse.y (not_accessible_p): Allow access to protected members
4251         even when class is not static.
4252
4253 2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>
4254
4255         * Make-lang.in: Revert the gcc-none.o change.
4256
4257 2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>
4258
4259         * parse.y (patch_anonymous_class): VEC_space returns true if there
4260         is space.
4261
4262 2004-09-21  Matt Austern  <austern@apple.com>
4263
4264         Fix bootstrap.
4265         * gjavah.c (free_method_name_list): Fix function definition so
4266         it's a proper C prototype.
4267
4268 2004-09-21  Tom Tromey  <tromey@redhat.com>
4269
4270         PR java/17575:
4271         * gjavah.c (free_method_name_list): New method.
4272         (main): Call it.
4273
4274 2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
4275             Zack Weinberg  <zack@codesourcery.com>
4276
4277         * java-tree.def: Use tree_code_class enumeration constants
4278         instead of code letters.
4279         * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for
4280         new tree-class enumeration constants.
4281
4282 2004-09-13  Tom Tromey  <tromey@redhat.com>
4283
4284         PR java/17216:
4285         * class.c (layout_class_method): Put synthetic methods into the
4286         vtable.
4287
4288 2004-09-11  Andrew Pinski  <apinski@apple.com>
4289
4290         * Make-lang.in (java/ggc-none.c): Change dependency
4291         for ggc.h into $(GGC_H).
4292
4293 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
4294
4295         * Make-lang.in (java/win32-host.o): Add dependency on
4296         coretypes.h.
4297         * win32-host.c: Add includes for coretypes.h, jcf.h
4298
4299 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
4300
4301         * Make-lang.in (GCJH_OBJS): Change dependency from
4302         ggc-none.o to java/ggc-none.o
4303         (JCFDUMP_OBJS): Likewise.
4304         (java/ggc-none.o): New target.
4305
4306 2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>
4307
4308         * boehm.c (get_boehm_type_descriptor):  Adjust build_int_cst calls.
4309         * class.c (build_utf8_ref, build_static_field_ref,
4310         make_field_value, make_method_value, get_dispatch_table,
4311         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
4312         * constants.c (get_tag_node, build_ref_from_constant_pool,
4313         build_constants_constructor): Likewise.
4314         * decl.c (java_init_decl_processing): Likewise.
4315         * expr.c (build_java_array_length_access, build_newarray,
4316         expand_java_multianewarray, expand_java_pushc, expand_iinc,
4317         build_java_binop, build_field_ref, expand_java_add_case,
4318         expand_java_call, build_known_method_ref, build_invokevirtual,
4319         build_invokeinterface, build_jni_stub): Likewise.
4320         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
4321         * jcf-parse.c (get_constant): Likewise.
4322         * lex.c (do_java_lex): Likewise.
4323         * parse.y (patch_binop, patch_unaryop, patch_cast,
4324         build_newarray_node, patch_newarray): Likewise.
4325         * resource.c (compile_resource_data): Likewise.
4326         * typeck.c (build_prim_array_type): Likewise.
4327
4328 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
4329
4330         * decl.c (java_init_decl_processing): Adjust
4331         initialize_sizetypes call.
4332
4333 2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>
4334
4335         * jv-scan.c (fancy_abort): Add.
4336
4337 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
4338
4339         * expr.c (build_java_arrayaccess): Use convert to change
4340         len's type.
4341
4342 2004-08-19  Bryce McKinlay  <mckinlay@redhat.com>
4343
4344         * class.c (make_local_function_alias): Allocate extra space for 'L'
4345         in name buffer. Reported by Thomas Neumann.
4346
4347 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
4348
4349         * parse.h (JAVA_RADIX10_FLAG): Rename to ...
4350         (JAVA_NOT_RADIX10_FLAG): ... here.  Invert meaning.
4351         * lex.c (do_java_lex): Adjust.
4352         (error_if_numeric_overflow): Likewise.
4353
4354 2004-08-18  Andrew Pinski  <apinski@apple.com>
4355
4356         * class.c (make_local_function_alias): Only make a new decl if we
4357         support alias attribute on all decls.
4358
4359 2004-08-18  Bryce McKinlay  <mckinlay@redhat.com>
4360
4361         * class.c (make_local_function_alias): New function. Create local
4362         alias for public method DECL.
4363         (make_method_value): Use make_local_function_alias.
4364         * parse.y (craft_constructor): Don't special-case anonymous classes.
4365         Always set ctor_name to init_identifier_node.
4366         (lookup_method_invoke): Call layout_class_method when creating
4367         anonymous class constructor.
4368
4369 2004-08-18  Richard Henderson  <rth@redhat.com>
4370
4371         * java-gimplify.c (java_gimplify_expr): Move '2' handling into
4372         default case.  Treat '<' similarly.  Update for
4373         is_gimple_formal_tmp_var name change.
4374
4375 2004-08-17  Andrew Haley  <aph@redhat.com>
4376
4377         * lang.c (lang_printable_name): Obey verbose flag.
4378         * parse.y (constructor_circularity_msg): Set VERBOSE arg for
4379         lang_printable_name().
4380         (verify_constructor_circularity, get_printable_method_name,
4381         check_abstract_method_definitions, java_check_regular_methods,
4382         java_check_abstract_methods, check_inner_class_access,
4383         fix_constructors, patch_method_invocation, patch_return):
4384         Likewise.
4385         * expr.c (pop_type_0): Likewise.
4386
4387         * java-tree.h (lang_printable_name_wls): Delete.
4388
4389 2004-08-16  Tom Tromey  <tromey@redhat.com>
4390
4391         PR java/8473:
4392         * parse.y (primary): Changed for initialized and uninitialized
4393         array creations.
4394         (array_access): Handle array_creation_initialized.
4395         (array_creation_expression): Split into
4396         array_creation_initialized and array_creation_uninitialized.
4397
4398 2004-08-16  Andrew Haley  <aph@redhat.com>
4399
4400         * jcf-write.c (find_constant_index): Canonicalize NaNs when
4401         generating bytecode.
4402
4403 2004-08-16  Elliot Lee <sopwith@redhat.com>
4404
4405         PR java/9677
4406         * jcf-parse.c (java_parse_file): Handle filenames with embedded
4407         spaces, and quoted filelists.
4408
4409 2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>
4410
4411         * boehm.c (get_boehm_type_descriptor): Use build_int_cst.
4412         * class.c (build_utf8_ref, build_static_field_ref,
4413         make_field_value, make_method_value, get_dispatch_table,
4414         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
4415         * constants.c (get_tag_node,  build_ref_from_constant_pool,
4416         build_constants_constructor): Likewise.
4417         * decl.c (java_init_decl_processing): Likewise.
4418         * expr.c (build_java_array_length_access, build_newarray,
4419         expand_java_multianewarray, expand_java_pushc, expand_iinc,
4420         build_java_binop, build_field_ref, expand_java_add_case,
4421         expand_java_call, build_known_method_ref, build_invokevirtual,
4422         build_invokeinterface, build_jni_stub): Likewise.
4423         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
4424         * jcf-parse.c (get_constant): Likewise.
4425         * lex.c (do_java_lex): Likewise.
4426         * parse.y (patch_binop, patch_unaryop, patch_cast,
4427         build_null_of_type, patch_newarray): Likewise.
4428         * resource.c (compile_resource_data): Likewise.
4429         * typeck.c (build_prim_array_type): Likewise.
4430
4431 2004-08-10  Bryce McKinlay  <mckinlay@redhat.com>
4432
4433         * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var.
4434         Don't create BLOCK here or call java_gimplify_block.
4435
4436 2004-08-09  H.J. Lu  <hongjiu.lu@intel.com>
4437
4438         * java-tree.h (flag_deprecated): Removed.
4439         * lang.opt (Wdeprecated): Use existing Var(warn_deprecated).
4440         * parse.y (check_deprecation): Check warn_deprecated instead of
4441         flag_deprecated.
4442
4443 2004-08-06  Kelley Cook  <kcook@gcc.gnu.org>
4444
4445         * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant,
4446         flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check,
4447         flag_hash_synchronization, flag_assert, flag_jni, flag_newer,
4448         flag_check_references, flag_extraneous_semicolon, flag_deprecated,
4449         flag_force_classes_archive_check, flag_optimize_sci,
4450         flag_indirect_dispatch): Remove explicit declarations.
4451         * lang.opt: Add implicit declare/define/assign.  Remove obsolete
4452         final comment.
4453
4454 2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>
4455
4456         PR bootstrap/14893
4457         * Make-lang.in (java.install-man): Install from either build
4458         tree or source tree, whichever has the file first.
4459
4460 2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>
4461
4462         * jcf-parse.c (get_constant): Adjust force_fit_type call.
4463         * lex.h (SET_LVAL_NODE_TYPE): Remove.
4464         * lex.c (java_perform_atof): Use SET_LVAL_NODE directly.
4465         (do_java_lex): Likewise. Adjust force_fit_type call.
4466
4467 2004-08-04  Roger Sayle  <roger@eyesopen.com>
4468             Andrew Haley  <aph@redhat.com>
4469
4470         * typeck.c (convert_ieee_real_to_integer): Call fold on the range
4471         checking trees as they're being built.
4472         (convert): Call convert_ieee_real_to_integer if we're
4473         converting a constant, even if we're writing a class file.
4474
4475 2004-08-02  Bryce McKinlay  <mckinlay@redhat.com>
4476
4477         PR java/16701
4478         * parse.y (fold_constant_for_init): Call resolve_field_access with
4479         correct current_class context.
4480
4481 2004-08-01  Roger Sayle  <roger@eyesopen.com>
4482
4483         * decl.c (update_aliases, initialize_local_variable): Replace calls
4484         to build with calls to buildN.
4485         * java-gimplify.c (java_gimplify_modify_expr): Likewise.
4486         * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise.
4487         * parse.h (BUILD_THROW): Likewise.
4488         * parse.y (switch_expression, synchronized_statement,
4489         catch_clause_parameter, array_creation_expression,
4490         conditional_expression, make_qualified_name,
4491         resolve_qualified_expression_name, patch_method_invocation,
4492         patch_invoke, build_method_invocation, build_new_invocation,
4493         build_assignment, patch_assignment, build_binop, patch_binop,
4494         build_string_concatenation, build_incdec, patch_unaryop,
4495         patch_cast, build_array_ref, build_newarray_node, patch_newarray,
4496         patch_return, build_if_else_statement, build_labeled_block,
4497         build_new_loop, build_loop_body, build_bc_statement,
4498         build_assertion, encapsulate_with_try_catch, build_try_statement,
4499         build_try_finally_statement, patch_synchronized_statement,
4500         emit_test_initialization): Likewise, replace build with buildN.
4501
4502 2004-07-28  Eric Christopher  <echristo@redhat.com>
4503
4504         * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
4505         (java_unsafe_for_reeval): Ditto.
4506
4507 2004-07-26    <hp@bitrange.com>
4508
4509         * parse.y (build_super_invocation): Adjust declaration order to
4510         avoid declaration after statement.
4511
4512 2004-07-25  Bernardo Innocenti  <bernie@develer.com>
4513
4514         * decl.c: Rename all identifiers named `class' to `cl'.
4515
4516 2004-07-25  Richard Henderson  <rth@redhat.com>
4517
4518         * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P.
4519
4520 2004-07-23  Mike Stump  <mrs@apple.com>
4521
4522         * boehm.c (set_bit): Improve type safety wrt unsignedness.
4523         * gjavah.c (throwable_p, decode_signature_piece,
4524         print_full_cxx_name, print_include, add_namelet, add_class_decl,
4525         process_file): Likewise.
4526         * jcf-dump.c (main): Likewise.
4527         * jcf-io.c (read_zip_member): Likewise.
4528         * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant,
4529         give_name_to_class, get_class_constant): Likewise.
4530         * jcf-write.c (find_constant_wide, push_long_const,
4531         generate_classfile): Likewise.
4532         * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise.
4533         * parse.y (read_import_dir): Likewise.
4534         * typeck.c (parse_signature_type): Likewise.
4535         * verify.c (verify_jvm_instructions): Likewise.
4536         * zextract.c (find_zip_file_start, read_zip_archive): Likewise.
4537
4538 2004-07-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
4539
4540         * Make-lang.in: Replace rmic and rmiregistry references with
4541         grmic and grmiregistry.
4542         * gcj.texi: Likewise.
4543
4544 2004-07-20  Andrew Haley  <aph@redhat.com>
4545
4546         PR java/16431.
4547         * verify.c (verify_jvm_instructions): Comment change only.
4548
4549         * typeck.c (build_java_array_type): Add size field to array name.
4550
4551         * java-tree.h (LOCAL_SLOT_P): New.
4552         (update_aliases): Add PC argument.
4553         (pushdecl_function_level): New function.
4554
4555         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
4556         MODIFY_EXPR, and SAVE_EXPR.
4557         (java_gimplify_modify_expr): New function.
4558
4559         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
4560         (expand_iinc): Pass PC to update_aliases().
4561         (STORE_INTERNAL): Likewise.
4562         (process_jvm_instruction): Likewise.
4563
4564         * decl.c (base_decl_map): New variable.
4565         (uniq): New variable.
4566         (update_aliases): Rewrite with more thorough checking.
4567         (debug_variable_p): New function.
4568         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
4569         (check_local_named_variable): Delete whole function.
4570         (initialize_local_variable): New function.
4571         (check_local_unnamed_variable): Add checks and comments.
4572         (find_local_variable): Rewrite.
4573         (java_replace_reference): New function.
4574         (function_binding_level): New variable.
4575         (pushdecl_function_level): New function.
4576         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
4577         (maybe_pushlevels): Call pushdecl() on each of the new decls.
4578         (start_java_method): Reset uniq.  Create base_decl_map.  Set
4579         function_binding_level.
4580         (end_java_method): Null unused fields to save memory.
4581
4582 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
4583
4584         * class.c (add_interface_do): Remove.
4585         (set_super_info, interface_of_p, maybe_add_interface,
4586         add_interface, make_class_data, layout_class,
4587         add_miranda_methods): Adjust BINFO accessors and addition.
4588         * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO
4589         accessors.
4590         * jcf-write.c (generate_classfile): Likewise.
4591         * parse.y (patch_anonymous_class, check_inner_circular_reference,
4592         check_circular_reference, java_complete_class,
4593         check_abstract_method_definitions,
4594         java_check_abstract_method_definitions,
4595         check_interface_throws_clauses, java_check_abstract_methods,
4596         lookup_java_interface_method2,
4597         find_applicable_accessible_methods_list): Adjust BINFO accessors
4598         and addition.
4599         * typeck.c (find_method_in_interfaces): Adjust BINFO accessors.
4600
4601 2004-07-18  Roger Sayle  <roger@eyesopen.com>
4602
4603         * builtins.c (max_builtin, min_builtin,
4604         java_build_function_call_expr): Replace calls to build with buildN.
4605         * class.c (build_class_ref, build_static_field_ref,
4606         get_dispatch_table, make_class_data, layout_class_method): Likewise.
4607         * constants.c (build_ref_from_constant_pool): Likewise.
4608         * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method,
4609         add_stmt_to_compound): Likewise.
4610         * except.c (build_exception_object_ref, expand_end_java_handler):
4611         Likewise.
4612         * java-gimplify.c (java_gimplify_case_expr,
4613         java_gimplify_default_expr, java_gimplify_block,
4614         java_gimplify_new_array_init, java_gimplify_try_expr): Likewise.
4615         * jcf-write.c (generate_bytecode_insns): Likewise.
4616         * typeck.c (convert_ieee_real_to_integer): Likewise.
4617
4618 2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>
4619
4620         * java-tree.h (builtin_function): Declare.
4621
4622 2004-07-16  Steven Bosscher  <stevenb@suse.de>
4623
4624         * parse.y (java_complete_expand_methods, java_expand_classes): Don't
4625         abuse restore_line_number_status.
4626
4627 2004-07-15  Frank Ch. Eigler  <fche@redhat.com>
4628
4629         g++/15861
4630         * jcf-parse.c (java_emit_static_constructor): Specify default
4631         priority.
4632
4633 2004-07-13  Per Bothner  <per@bothner.com>
4634
4635         * java-tree.h (all_class_filename):  Remove useless macro.
4636         (enum java_tree_index):  Remove JTI_ALL_CLASS_FILENAME constant.
4637         (BUILD_FILENAME_IDENTIFIER_NODE):  Remove useless macro.
4638         * parse.y (java_parser_context_restore_global):  Replace
4639         BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier.
4640         * jcf-parse.c (read_class, java_parse_file):  Likewise.
4641
4642 2004-07-12  Bryce McKinlay  <mckinlay@redhat.com>
4643
4644         PR java/16474
4645         gjavah.c (print_field_info): Emit constant only if field is static.
4646
4647 2004-07-11  Roger Sayle  <roger@eyesopen.com>
4648
4649         * expr.c (java_truthvalue_conversion, flush_quick_stack,
4650         java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr,
4651         build_java_ret, build_java_throw_out_of_bounds_exception,
4652         build_java_array_length_access, java_check_reference,
4653         build_java_arrayaccess, build_java_arraystore_check, build_newarray,
4654         build_anewarray, expand_java_multianewarray, expand_java_arraystore,
4655         expand_java_arrayload, build_java_monitor, expand_java_return,
4656         expand_load_internal, expand_java_NEW, build_get_class,
4657         build_instanceof, expand_java_CHECKCAST, expand_iinc,
4658         build_java_soft_divmod, build_java_binop, build_field_ref,
4659         expand_compare, expand_java_goto, expand_java_switch,
4660         expand_java_add_case, build_class_init, build_known_method_ref,
4661         invoke_build_dtable, build_invokevirtual, build_invokeinterface,
4662         expand_invoke, build_jni_stub, expand_java_field_op,
4663         java_expand_expr, expand_byte_code, STORE_INTERNAL,
4664         force_evaluation_order, emit_init_test_initialization): Convert
4665         calls to "build" into calls to the prefered "buildN" functions.
4666
4667 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
4668
4669         * java-tree.h (set_block): Remove.
4670         * lang.c (java_clear_binding_stack): New.
4671         (LANG_HOOKS_CLEAR_BINDING_STACK): Define.
4672         * decl.c (struct binding_level): Remove this_block.
4673         (clear_binding_level): Likewise.
4674         (poplevel): Don't handle this_block.
4675         (set_block): Remove.
4676
4677 2004-07-10  Bryce McKinlay  <mckinlay@redhat.com>
4678
4679         * class.c (common_enclosing_context_p): Remove statement with no
4680         side-effects.
4681
4682 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
4683
4684         PR java/8618
4685         * parse.y (create_anonymous_class): Remove 'location' argument. Use
4686         the WFL from TYPE_NAME to get line number for the decl. Fix comment.
4687         (craft_constructor): Inherit access flags for implicit constructor
4688         from the enclosing class.
4689         (create_class): Fix comment typo.
4690         (resolve_qualified_expression_name): Pass type of qualifier to
4691         not_accessible_p, not the type in which target field was found.
4692         (not_accessible_p): Handle inner classes. Expand protected
4693         qualifier-subtype check to enclosing instances, but don't apply this
4694         check to static members. Allow protected access to inner classes
4695         of a subtype. Allow private access within common enclosing context.
4696         (build_super_invocation): Get WFL line number info from current
4697         class decl.
4698         (build_incomplete_class_ref): Update for new create_anonymous_class
4699         signature.
4700         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use
4701         common_enclosing_instance_p.
4702         * class.c (common_enclosing_context_p): New. Determine if types
4703         share a common enclosing context, even across static contexts.
4704         (common_enclosing_instance_p): Renamed from
4705         common_enclosing_context_p. Determines if types share a common
4706         non-static enclosing instance.
4707         * java-tree.h (common_enclosing_instance_p): Declare.
4708         * jcf-write.c (get_method_access_flags): New. Surpress private flag
4709         for inner class constructors.
4710         (generate_classfile): Use get_method_access_flags.
4711
4712 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
4713
4714         * class.c (interface_of_p): Check for null TYPE_BINFO.
4715
4716 2004-07-09  Nathan Sidwell  <nathan@codesourcery.com>
4717
4718         * class.c (make_class): Do not create binfo here.
4719         (set_super_info): Create it here.
4720         * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo.
4721
4722 2004-07-08  Richard Henderson  <rth@redhat.com>
4723
4724         * expr.c (case_identity, get_primitive_array_vtable,
4725         java_expand_expr, emit_init_test_initialization): Remove.
4726         * java-tree.h (java_expand_expr): Remove.
4727         * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove.
4728
4729 2004-07-07  Per Bothner  <per@bothner.com>
4730
4731         * class.c (build_static_field_ref):  Add a NOP_EXPR; otherwise we
4732         get internal error due to mismatched types.
4733
4734         * gcj.texi (Invoking gij):  Document new -verbose:class flag.
4735
4736         * gcj.texi (Linking):   New node.  Document -lgij usage.
4737
4738 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
4739
4740         * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
4741         (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise.
4742         * java/class.c (set_super_info, class_depth, interface_of_p,
4743         maybe_add_interface, add_interface, make_class_data,
4744         layout_class, add_miranda_methods): Adjust BINFO macros.
4745         * expr.c (can_widen_reference_to, lookup_field): Likewise.
4746         * jcf-write.c (generate_classfile): Likewise.
4747         * parse.y (patch_anonymous_class,
4748         check_inner_circular_reference, check_circular_reference,
4749         java_complete_class, check_abstract_method_definitions,
4750         java_check_abstract_method_definitions,
4751         check_interface_throws_clauses, java_check_abstract_methods,
4752         lookup_java_interface_method2,
4753         find_applicable_accessible_methods_list): Likewise.
4754         * typeck.c (find_method_in_interface): Likewise.
4755         * verify.c (merge_types): Likewise.
4756
4757 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
4758
4759         * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1.
4760         * class.c (add_interface_do): Use BINFO_VIRTUAL_P.
4761
4762 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
4763
4764         * class.c (make_class): Use make_tree_binfo.
4765         (set_super_info, add_interface_do): Likewise.
4766         * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO.
4767
4768 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
4769
4770         * verify.c: Correct array element access formatting thinko.
4771
4772 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
4773
4774         * verify.c: Insert a short blurb at the start referring to the JVMS.
4775         (merge_type_state): Remove redundant nested if statement.
4776         (verify_jvm_instructions): Ensure current_subr is initialised to
4777         NULL_TREE.
4778         Minor formatting fixes all over the place.
4779
4780 2004-07-02  Richard Henderson  <rth@redhat.com>
4781
4782         * jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.
4783
4784 2004-07-01  Richard Henderson  <rth@redhat.com>
4785
4786         * class.c (registerClass_libfunc): Remove.
4787         (init_class_processing): Don't set it.
4788         (emit_register_classes): Take list_p parameter.  Fill it in
4789         with _Jv_RegisterClass calls.
4790         * decl.c (java_init_decl_processing): Don't call
4791         init_resource_processing.
4792         * jcf-parse.c (java_emit_static_constructor): New.
4793         (java_parse_file): Call it.
4794         * resource.c (registerResource_libfunc): Remove.
4795         (init_resource_processing): Remove.
4796         (write_resource_constructor): Take list_p parameter.  Fill it in
4797         with _Jv_RegisterResource calls.
4798         * java-tree.h: Update prototypes.
4799
4800 2004-06-29  Bryce McKinlay  <mckinlay@redhat.com>
4801
4802         PR java/1262
4803         * class.c (layout_class_method): Do not override package-private
4804         method if its in a different package.
4805         (split_qualified_name): Move here from parse.y. Rename from
4806         breakdown_qualified. Add comment.
4807         (in_same_package): Move here from parse.y. Add comment.
4808         * java-tree.h (break_down_qualified, in_same_package): Declare.
4809         (in_same_package): Likewise.
4810         * parse.y (breakdown_qualified, in_same_package): Moved to class.c.
4811         Callers updated.
4812
4813 2004-06-29  Andrew Haley  <aph@redhat.com>
4814
4815         * except.c (expand_start_java_handler): Push a new binding level.
4816         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
4817         register_exception_range() to register where we'll do it.
4818         (expand_end_java_handler): Remove old bogus code.  Replace with
4819         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
4820         the top of the expression we're curently building.
4821         (maybe_end_try): Delete.
4822         * decl.c (binding_level.exception_range): New field.
4823         (clear_binding_level): Add field exception_range.  Reformat.
4824         (poplevel): Call expand_end_java_handler().
4825         (poplevel): Call java_add_stmt only if functionbody is false.
4826         (maybe_poplevels): Don't call maybe_end_try() from here.
4827         (end_java_method): Clear no longer used trees in function decl.
4828         (register_exception_range): New function.
4829         * java-tree.h (register_exception_range, struct eh_range): Declare.
4830
4831 2004-06-28  Bryce McKinlay  <mckinlay@redhat.com>
4832
4833         * jcf-write.c (get_classfile_modifiers): Formatting fixes.
4834
4835 2004-06-27  Ranjit Mathew  <rmathew@hotmail.com>
4836
4837         Formatting fixes.
4838         * expr.c (class_has_finalize_method): Fix method name indentation.
4839         (expand_java_call): Remove K&R style parameter declaration.
4840         (expand_invoke): Fix statement indentation.
4841         (expand_java_field_op): Likewise.
4842         * parse-scan.y: Fix typo.
4843         (reset_report): Fix method name indentation.
4844         * parse.y (unresolved_type_p, build_expr_block): Remove extra blank
4845         line. Fix typos.
4846         * verify.c (verify_jvm_instructions): Document parameters, insert
4847         page break.
4848         * lang.c (lang_init_source): Fix method name indentation.
4849         * class.c (common_enclosing_context_p): Likewise.
4850         (emit_symbol_table): Fix parameter list indentation.
4851         * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style
4852         parameter declaration.
4853         * constants.c: Fix copyright notice indentation.
4854         * typeck.c (find_method_in_superclasses): Fix parameter list
4855         indentation.
4856         (find_method_in_interfaces): Likewise.
4857         * zextract.c (makelong): Fix method name indentation.
4858
4859 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4860
4861         PR java/15715.
4862         * parse.y (create_interface): Set correct access modifiers for
4863         interfaces.
4864         * jcf-write.c (get_classfile_modifiers): New function.
4865         (generate_classfile): Use get_classfile_modifiers, not
4866         get_access_flags.
4867
4868 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4869
4870         * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super"
4871         dependency to current parser context, not NULL_TREE, for top-level
4872         classes.
4873         (jdep_resolve_class): Enable member access check for all inner
4874         class dependencies.
4875
4876 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4877
4878         * parse.y (qualify_and_find): Pass type decl, not identifier, to
4879         load_class.
4880
4881 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4882
4883         PR java/15734
4884         * expr.c (expand_java_field_op): Ensure that target class for static
4885         field access has been loaded.
4886
4887 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
4888             Ranjit Mathew  <rmathew@hotmail.com>
4889
4890         PR java/1207, java/16178
4891         * jcf-parse.c (load_class): Return immediately if passed a type decl
4892         where CLASS_FROM_SOURCE_P is set. Remove FIXME.
4893         * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P
4894         before calling load_class.
4895         (qualify_and_find): Likewise.
4896         (find_in_imports_on_demand): Likewise.
4897         (find_applicable_accessible_methods_list): Likewise.
4898
4899 2004-06-24  Bryce McKinlay  <mckinlay@redhat.com>
4900
4901         * parse.y (java_layout_seen_class_methods): Don't call load_class
4902         on class defined by source parser.
4903
4904 2004-06-23  Bryce McKinlay  <mckinlay@redhat.com>
4905
4906         * parse.y (set_nested_class_simple_name_value): Removed.
4907         (java_complete_expand_class): Remove calls to
4908         set_nested_class_simple_name_value.
4909
4910 2004-06-22  Andrew Haley  <aph@redhat.com>
4911             Ranjit Mathew  <rmathew@hotmail.com>
4912
4913         Fixes PR java/16113.
4914         * decl.c (force_poplevels): Remove call to expand_end_bindings.
4915
4916 2004-06-22  Ranjit Mathew  <rmathew@hotmail.com>
4917
4918         * parse.y (create_class): Correct diagnostic message about
4919         java.lang.Object extending anything else.
4920
4921 2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4922
4923         * class.c (build_class_ref): Add new operand for COMPONENT_REF.
4924         (build_static_field_ref): Likewise and add new operands for ARRAY_REF.
4925         * constants.c (build_ref_from_constant_pool): Likewise.
4926         * expr.c (build_java_array_length_access): Likewise.
4927         (build_get_class, build_field_ref, build_known_method_ref): Likewise.
4928         (invoke_build_dtable, build_invokevirtual): Likewise.
4929         (build_invokeinterface, java_expand_expr): Likewise.
4930         (emit_init_test_initialization): Likewise.
4931         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
4932         * parse.y (make_qualifed_name, build_array_ref): Likewise.
4933
4934 2004-06-21  Andrew Haley  <aph@redhat.com>
4935
4936         * java-gimplify.c (java_gimplify_block): set TREE_USED on the new
4937         block.
4938
4939 2004-06-21  Joseph S. Myers  <jsm@polyomino.org.uk>
4940
4941         * jcf.h (struct JCF): Change java_source, right_zip and finished
4942         to unsigned int.
4943         * lex.h (struct java_lexer): Change hit_eof, read_anything,
4944         byte_swap and use_fallback to unsigned int.
4945         * parse.h (struct _jdep): Change flag0 to unsigned int.
4946
4947 2004-06-17  Ranjit Mathew  <rmathew@hotmail.com>
4948
4949         Fixes PR java/13948
4950         * parse.y (java_layout_seen_class_methods): Ensure class is loaded
4951         before trying to lay out its methods.
4952         * jcf-parse.c (read_class): Track parsed files using canonical paths
4953         obtained via lrealpath from libiberty.
4954         (java_parse_file): Likewise.
4955         (parse_source_file_1): Rename formal parameter to reflect its
4956         modified purpose. Minor formatting fix.
4957
4958 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
4959
4960         * class.c (emit_register_classes): Make the function uninlinable,
4961         do not set current_function_cannot_inline.
4962         * resource.c (write_resource_constructor): Do not reset
4963         flag_inline_functions around rest_of_compilation.
4964
4965 2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>
4966
4967         PR java/15769
4968         * expr.c (java_truthvalue_conversion): Handle
4969         UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
4970         ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
4971         i.e. return the expression.
4972
4973 2004-06-03 Mark G. Adams  <mark.g.adams@sympatico.ca>
4974
4975         * gjavah.c: Include version.h
4976
4977 2004-05-31  Bryce McKinlay  <mckinlay@redhat.com>
4978
4979         * jcf-write.c (generate_bytecode_conditional): Correct handling
4980         of unordered conditionals. Add comment.
4981
4982 2004-05-29  Ranjit Mathew  <rmathew@hotmail.com>
4983             Per Bothner  <per@bothner.com>
4984
4985         * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a
4986         local variable was initialised upon declaration.
4987         * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if
4988         variable was final and initialised upon declaration.
4989         * check-init.c (check_final_reassigned): Give error only if a blank
4990         final is not definitely unassigned or if an initialised final is
4991         reassigned.
4992         (check_bool_init): Respect JLS2 16.1.7 requirements for boolean
4993         assignment expressions. Remove case MODIFY_EXPR, label do_default.
4994         (check_init): Perform initialised-variable-removing-optimisation
4995         only on non-final local variables.
4996
4997 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
4998
4999         * jcf-write.c (generate_bytecode_conditional): Handle binops
5000         UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR,
5001         and LTGT_EXPR.
5002         (generate_bytecode_insns): Likewise.
5003
5004 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
5005
5006         * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR,
5007         UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR.
5008
5009 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
5010
5011         * gcj.texi (Object allocation): Remove _Jv_AllocBytes.
5012         (Mixing with C++): Document JvAllocBytes and RawDataManaged.
5013
5014 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
5015
5016         * decl.c (struct binding_level): Add GTY marker. Compile
5017         binding_depth unconditionally.
5018         (current_binding_level, free_binding_level, global_binding_level):
5019         Likewise.
5020         (clear_binding_level): Unconditionally set binding_depth.
5021         (make_binding_level): Use ggc_alloc_cleared, not xmalloc.
5022
5023 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
5024
5025         * lex.c (java_new_lexer): Set 'encoding'.
5026         (java_read_char): Improve error message for unrecognized characters.
5027         * lex.h (struct java_lexer): New field 'encoding'.
5028
5029 2004-05-23  Paolo Bonzini  <bonzini@gnu.org>
5030
5031         * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o.
5032
5033 2004-05-21  Mark Wielaard  <mark@klomp.org>
5034
5035         * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not
5036         extern.
5037
5038 2004-05-19  Paolo Bonzini  <bonzini@gnu.org>
5039
5040         * typeck.c: Remove non-printable character 160.
5041
5042 2004-05-17  Ranjit Mathew  <rmathew@hotmail.com>
5043
5044         * check-init.c: Correct minor typos.
5045
5046 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
5047
5048         * Make-lang.in, expr.c, java-gimplify.c: Rename
5049         tree-simple.[ch] to tree-gimple.[ch].
5050
5051 2004-05-14  Ranjit Mathew  <rmathew@hotmail.com>
5052
5053         * java-gimplify.c (java_gimplify_expr): Correct minor typos.
5054
5055 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
5056
5057         Merge from tree-ssa-20020619-branch.  See
5058         ChangeLog.tree-ssa for details.
5059
5060         * Make-lang.in, builtins.c, check-init.c, class.c,
5061         constants.c, decl.c, except.c, expr.c, java-except.h,
5062         java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c,
5063         lang.c, lang.opt, parse.y, resource.c: Merged.
5064         * java-gimplify.c: New file.
5065
5066 2004-05-10  Andrew Haley  <aph@redhat.com>
5067
5068         * parse.y (create_class): Set TYPE_VFIELD.
5069         * decl.c (java_init_decl_processing): Likewise.
5070
5071         * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment.
5072         * class.c (make_method_value): Replace DECL_VINDEX with call to
5073         get_method_index().
5074         (get_dispatch_vector): Likewise.
5075         (layout_class_method): Likewise.
5076         Replace set of DECL_VINDEX with call to set_method_index().
5077         (set_method_index): New function.
5078         (get_method_index): New function.
5079         * java-tree.h (set_method_index): New function decl.
5080         (get_method_index): New function decl.
5081
5082 2004-05-10  Andrew Pinski  <pinskia@physics.uc.edu>
5083
5084         * parse.y (check_pkg_class_access): Add new argument
5085         and use it when cl is NULL to call lookup_cl on it.
5086         (parser_check_super_interface): Do not call lookup_cl.
5087         Pass this_decl to check_pkg_class_access and NULL
5088         instead of lookup_cl.
5089         (parser_check_super): Update for change in
5090         check_pkg_class_access.
5091         (do_resolve_class): Likewise.
5092         (process_imports): Likewise.
5093         (find_in_imports_on_demand): Likewise.
5094         (resolve_qualified_expression_name): Likewise.
5095
5096 2004-05-06  Ranjit Mathew  <rmathew@hotmail.com>
5097
5098         Fixes PR java/9685, PR java/15073
5099         * parse.y (accessibility_string): New method.
5100         (not_accessible_field_error): Use accessibility_string()
5101         instead of java_accstring_lookup().
5102         (resolve_qualified_expression_name): Check with
5103         check_pkg_class_access() before allowing access using
5104         qualified names.
5105         Fix comment typo.
5106         Use check_pkg_class_access() instead of not_accessible_p()
5107         for unqualified types.
5108         (not_accessible_p): Use DECL_CONTEXT (member) instead of
5109         REFERENCE for package-private access checking.
5110         (patch_method_invocation): Use accessibility_string() instead
5111         of java_accstring_lookup().
5112
5113 2004-04-30  Ranjit Mathew  <rmathew@hotmail.com>
5114
5115         Fixes PR java/15133
5116         * gjavah.c (struct method_name): Add member is_native.
5117         (overloaded_jni_method_exists_p): Match candidate method only if
5118         it is native.
5119         (print_method_info): Initialise is_native flag from the method's
5120         access flags.
5121
5122 2004-04-30  Roger Sayle  <roger@eyesopen.com>
5123
5124         * builtins.c (java_builtins): Add acos, asin, ceil and floor.
5125         (initialize_builtins): Likewise, define acos, asin, ceil and floor.
5126
5127 2004-04-22  Roger Sayle  <roger@eyesopen.com>
5128
5129         * resource.c (write_resource_constructor): Guard call to possibly
5130         NULL targetm.asm_out.constructor with targetm.have_ctors_dtors.
5131
5132 2004-04-19  Bryce McKinlay  <mckinlay@redhat.com>
5133
5134         * class.c (make_class_data): Add new field aux_info.
5135         * decl.c (java_init_decl_processing): Push type and decl for
5136         `aux_info'.
5137
5138 2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>
5139
5140         * expr.c (expand_java_NEW): Don't use size argument for
5141         _Jv_AllocObject calls.
5142         * parse.y (patch_invoke): Likewise.
5143
5144 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
5145
5146         * expr.c (build_invokeinterface): Remove unused variables to
5147         fix warnings.
5148
5149 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
5150
5151         * class.c (get_interface_method_index): New function. Return dispatch
5152         index for interface method.
5153         (make_method_value): For interface methods, set index field to
5154         iface dispatch index, not DECL_VINDEX.
5155         * expr.c (build_invokeinterface): Use get_interface_method_index.
5156
5157 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5158
5159         * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.
5160
5161 2004-03-31  Andrew Haley  <aph@redhat.com>
5162
5163         PR java/14104
5164         * jcf-io.c (opendir_in_zip): Tidy up error handling.
5165
5166 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
5167
5168         * builtins.c, expr.c, jcf.h, parse.h: Use new shorter
5169         form of GTY markers.
5170
5171 2004-03-25  Marcus Meissner  <meissner@suse.de>
5172
5173         PR java/14689:
5174         * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir.
5175
5176 2004-03-23  Tom Tromey  <tromey@redhat.com>
5177
5178         PR java/14315:
5179         * jcf-write.c (make_class_file_name): Don't report if mkdir
5180         failed with EEXIST.
5181
5182 2004-03-23  Tom Tromey  <tromey@redhat.com>
5183
5184         * gcj.texi (Extensions): Document GCJ_PROPERTIES.
5185
5186 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
5187
5188         * class.c, gjavah.c, lang.c: Fix comment typos.
5189         * gcj.texi: Fix typos.
5190
5191 2004-03-19  Per Bothner  <per@bothner.com>
5192
5193         * gcj.texi (Code Generation):  Document new flags and assert defaults.
5194
5195         * class.c (assume_compiled_node_struct):  Rename type to
5196         class_flag_node_struct, as it is now also used for enable_assertions.
5197         Rename assume_compiled_node typedef.  Rename excludep field to value.
5198         (find_assume_compiled_node):  Rename function to find_class_flag_node.
5199         Minor optimization - avoid needless strlen.
5200         (add_assume_compiled):  Some tweaking and optimization.
5201         Rename and generalize to add_class_flag takem an extra parameter.
5202         (add_assume_compled):  New just calls add_class_flag.
5203         (add_enable_assert, enable_assertions):  New functions.
5204         (enable_assert_tree):  New static.
5205         * java-tree.h (add_enable_assert, enable_assertions): New declarations.
5206         * lang.opt (fenable-assertions, fenable-assertions=,
5207         fdisable-assertions, fdisable-assertions=):  New options.
5208         * lang.c (java_handle_option):  Handle new options.
5209         * parse.y (build_incomplete_class_ref):  Handle class$ in an inner
5210         class in an interface - create helper class nested in outer interface.
5211         (build_assertion):  Short-circuit if enable_assertions is false.
5212
5213 2004-03-18  Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
5214
5215         * java-tree.h: Changes throughout to add checking to macros
5216         and numerous whitespace changes.
5217         (VAR_OR_FIELD_CHECK): New macro.
5218         * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC,
5219         FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL.
5220
5221 2004-03-16  Per Bothner  <per@bothner.com>
5222
5223         * jcf-jump.c (options):  New --print-constants option.
5224         * gcj.texi (Invoking jcf-dump):  Document --print-constants.
5225
5226         * jcf-dump.c (flag_print_constant_pool):  Default to off.
5227         (print_constant_terse_with_index):  New helper function.
5228         (various places):  Check flag_print_constant_pool where missing.
5229         (main):  If verbose set flag_print_constant_pool.
5230         (HANDLE_INNERCLASSES_ATTRIBUTE):  Null inner class name is anonymous.
5231
5232 2004-03-15  Andrew Haley  <aph@redhat.com>
5233
5234         PR java/14581
5235         * parse.y (java_complete_lhs): Check that final variable has an
5236         initializer.
5237
5238 2004-03-12  Andrew Haley  <aph@redhat.com>
5239
5240         PR java/14551
5241         * typeck.c (convert): Clear TREE_OVERFLOW after an integer
5242         conversion.
5243
5244 2004-02-29  Roger Sayle  <roger@eyesopen.com>
5245
5246         * jcf-parse.c (java_parse_file): Handle the case that input_filename
5247         is NULL.
5248
5249 2004-02-27  Per Bothner  <per@bothner.com>
5250
5251         * parse.y (build_assertion):  Re-do 02-25 change following Jeff Sturm
5252         suggestion:  Use build_incomplete_class_ref.
5253         This fixes PR java/13508, java/11714.
5254
5255 2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
5256
5257         * java/parse.h: Update copyright.
5258
5259 2004-02-26  Andrew Haley  <aph@redhat.com>
5260
5261         PR java/14231:
5262         * parse.y (check_interface_throws_clauses): Check for
5263         !METHOD_INVISIBLE (iface_method).
5264         * class.c (layout_class_methods): Check for CLASS_INTERFACE as
5265         well as CLASS_ABSTRACT.
5266
5267 2004-02-25  Per Bothner  <per@bothner.com>
5268
5269         * parse.y (build_assertion):  If we're in an inner class, create the
5270         class$ helper routine in the outer class.
5271
5272 2004-02-19  Richard Henderson  <rth@redhat.com>
5273
5274         * parse.y (switch_label): Use make_node for DEFAULT_EXPR.
5275
5276 2004-02-16  Geoffrey Keating  <geoffk@apple.com>
5277
5278         * Make-lang.in (java.install-man): Add extra dependencies.
5279
5280 2004-02-13  Geoffrey Keating  <geoffk@apple.com>
5281
5282         * Make-lang.in: Install man pages under the same names
5283         (possibly transformed) as the program they document.
5284
5285 2004-02-10  Joseph S. Myers  <jsm@polyomino.org.uk>
5286
5287         * gjavah.c: Include "intl.h".
5288         (error): New function.
5289         (main): Call gcc_init_libintl.
5290         (get_field_name, throwable_p, print_c_decl, print_full_cxx_name,
5291         print_stub_or_jni, process_file, main): Use error rather than
5292         fprintf.
5293         (print_method_info, usage, help, version, main): Mark strings for
5294         translation with _.  Avoid splitting up sentences.  Send
5295         information messages to stdout.
5296         * jcf-dump.c: Include "intl.h".
5297         (main): Call gcc_init_libintl.
5298         (process_class, usage, help, version, main, CHECK_PC_IN_RANGE):
5299         Mark error, usage and version messages for translation with _.
5300         Avoid splitting up sentences.
5301         * jv-scan.c: Include "intl.h".
5302         (fatal_error, warning): Change parameter s to msgid.  Translate
5303         messages.
5304         (main): Call gcc_init_libintl.
5305         (usage, help, version): Mark error, usage and version messages for
5306         translation with _.  Avoid splitting up sentences.
5307         * jvgenmain.c: Include "intl.h".
5308         (main): Call gcc_init_libintl.
5309         (usage, main): Mark error messages for translation with _.
5310         * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS,
5311         JVGENMAIN_OBJS): Add intl.o.
5312         (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o,
5313         java/jvgenmain.o): Update dependencies.
5314
5315 2004-02-08  Per Bothner  <per@bothner.com>
5316
5317         * parse.y (resolve_qualified_expression_name):  In case of inaccessible
5318         class don't use not_accessible_field_error, which can get confused.
5319
5320 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
5321
5322         Make-lang.in (po-generated):  Delete.
5323
5324 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
5325
5326         * Make-lang.in (java/decl.o, java/expr.o, java/parse.o):
5327         Depend on target.h.
5328         * decl.c: Include target.h.
5329         (start_java_method): Replace PROMOTE_PROTOTYPES with
5330         targetm.calls.promote_prototypes.
5331         * expr.c: Include target.h.
5332         (pop_arguments): Replace PROMOTE_PROTOTYPES with
5333         targetm.calls.promote_prototypes.
5334         * parse.y: Include target.h.
5335         (start_complete_expand_method): Replace PROMOTE_PROTOTYPES
5336         with targetm.calls.promote_prototypes.
5337
5338 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
5339
5340         * typeck.c: Update copyright.
5341
5342 2004-02-02  Tom Tromey  <tromey@redhat.com>
5343
5344         * decl.c (java_init_decl_processing): Remove duplicate
5345         gnu/gcj/RawData.
5346
5347 2004-01-30  Kelley Cook  <kcook@gcc.gnu.org>
5348
5349         * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir).
5350
5351 2004-01-28  Andrew Pinski  <pinskia@physics.uc.edu>
5352
5353         * expr.c (build_field_ref): Move variable
5354         definition up.
5355
5356 2004-01-28  Andrew Haley  <aph@redhat.com>
5357
5358         * expr.c (build_field_ref): Widen field offset.
5359
5360 2004-01-27  Andrew Haley  <aph@redhat.com>
5361
5362         java/13273
5363         * parse.y (check_interface_throws_clauses): Make sure class_decl
5364         has been loaded.
5365
5366 2004-01-22  Jeff Sturm  <jsturm@one-point.com>
5367
5368         PR java/13733
5369         * parse.y (patch_assignment): Don't modify lhs_type for
5370         reference assignments.
5371
5372 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
5373
5374         * Make-lang.in: Replace $(docdir) with doc.
5375         (java.info, java.srcinfo, java.man, java.srcman): New rules.
5376         (java.install-man): Revamp rule.
5377
5378 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
5379
5380         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME,
5381         GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell)
5382         instead of deferred backquote.
5383
5384 2004-01-16  Andrew Pinski  <pinskia@physics.uc.edu>
5385
5386         * typeck.c (find_method_in_interfaces): Move variable
5387         definition up.
5388
5389 2004-01-16  Andrew Haley  <aph@redhat.com>
5390
5391         PR java/13273:
5392         * typeck.c (shallow_find_method): New.
5393         (find_method_in_superclasses): New.
5394         (find_method_in_interfaces): New.
5395         (lookup_do): Rewrite.
5396         * java-tree.h (SEARCH_ONLY_INTERFACE): Delete.
5397
5398         * jcf-parse.c (read_class): Save and restore output_class.
5399         * decl.c (java_expand_body): Set output_class from fndecl.
5400
5401 2004-01-15  Michael Chastain  <mec.gnu@mindspring.com>
5402
5403         * class.c (gen_indirect_dispatch_tables): Fix string length
5404         calculations.
5405
5406 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
5407
5408         * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory.
5409         (java.srcextra): Copy above back to source directory if requested.
5410         (po-generated): Delete reference to $(parsedir).
5411         (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir).
5412         Use implicit rule.
5413
5414 2004-01-14  Jan Hubicka  <jh@suse.cz>
5415
5416         * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
5417         estimation.
5418
5419 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
5420
5421         * java-tree.h (java_expand_expr): Change prototype.
5422         * expr.c (java_expand_expr): Add alt_rtl parameter.
5423
5424 2004-01-09  Andrew Haley  <aph@redhat.com>
5425
5426         PR java/12755:
5427         * parse.y (java_fix_constructors):  Set output_class.
5428         (java_reorder_fields): Likewise.
5429         (java_layout_classes): Likewise.
5430         (java_expand_classes): Generate indirect dispatch tables.
5431         (java_expand_classes): Set output_class.
5432         (java_finish_classes): Likewise.
5433         * lang.c (java_init): Turn on always_initialize_class_p if we're
5434         using indirect dis[atch.
5435         (java_decl_ok_for_sibcall): Use output_class, not current_class.
5436         (java_get_callee_fndecl): Use class local atable.
5437         * jcf-parse.c
5438         (always_initialize_class_p): Decl moved to java-tree.h.
5439         (HANDLE_CLASS_INFO): Set output_class.
5440         (read_class): Likewise.
5441         (parse_class_file): Call gen_indirect_dispatch_tables.
5442         (parse_zip_file_entries): Set output_class.
5443         (java_parse_file): Set output_class.  Don't emit symbol tables.
5444         * java-tree.h (output_class): New.
5445         Remove global declarations for otable, atable, and ctable.
5446         (always_initialize_class_p): moved here from decl.c.
5447         (DECL_OWNER): New.
5448         (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL,
5449         TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL,
5450         TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New.
5451         (struct lang_type): Add otable_methods, otable_decl,
5452         otable_syms_decl, atable_methods, atable_decl, atable_syms_decl,
5453         ctable_decl, catch_classes, type_to_runtime_map.
5454         * expr.c (build_field_ref): Make otable, atable, and ctable class
5455         local rather than global.
5456         (build_known_method_ref): Likewise.
5457         (build_invokeinterface): Likewise.
5458         (java_expand_expr): Pass runtime type (rather than actual type) to
5459         expand_start_catch.
5460         * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for
5461         this class.  Look up each class in that map to delete duplicates.
5462         (expand_end_java_handler): Pass runtime type (rather than actual
5463         type) to expand_start_catch.
5464         * decl.c: (always_initialize_class_p): Decl moved to java-tree.h.
5465         (do_nothing): New.
5466         (java_init_decl_processing): Rearrange things.  Remove global
5467         declarations of otable, atable, and ctable.
5468         (java_init_decl_processing): Make lang_eh_runtime_type do_nothing.
5469         (java_expand_body): Set output_class.
5470         * constants.c (build_constant_data_ref): Use output_class, not
5471         current_class.
5472         (alloc_name_constant): Likewise.
5473         * class.c (gen_indirect_dispatch_tables): New.
5474         (build_class_ref): Generate hard reference to superclass, even if
5475         using indirect dispatch.
5476         (build_static_field_ref): Use class local atable.
5477         (make_class_data): Generate hard reference to superclass, even if
5478         using indirect dispatch.
5479         Generate symbolic references to interfaces when using indirect
5480         dispatch.
5481         (make_class_data): Emit otable, atable, and ctable.
5482         Make otable, atable, and ctable class local rather than global.
5483         (emit_catch_table): Make otable, atable, and ctable class local
5484         rather than global.
5485
5486 2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>
5487
5488         * parse.y (catch_clause_parameter): Fix typo.
5489
5490         PR java/13404
5491         * parse.y: (catch_clause_parameter): Return early if $3, aka
5492         formal_parameter, is null.
5493
5494 2003-12-20  Kazu Hirata  <kazu@cs.umass.edu>
5495
5496         * class.c: Remove uses of "register" specifier in
5497         declarations of arguments and local variables.
5498         * decl.c: Likewise.
5499         * expr.c: Likewise.
5500         * gjavah.c: Likewise.
5501         * jcf-dump.c: Likewise.
5502         * jcf-io.c: Likewise.
5503         * jcf-parse.c: Likewise.
5504         * jcf-write.c: Likewise.
5505         * keyword.h: Likewise.
5506         * parse.y: Likewise.
5507         * typeck.c: Likewise.
5508         * verify.c: Likewise.
5509
5510 2003-12-06  Kelley Cook  <kcook@gcc.gnu.org>
5511
5512         * Make-lang.in (GCJ_CROSS_NAME): Delete.
5513         (java.install_common, java.install-man): Adjust for above.
5514         (java.uninstall): Likewise.
5515
5516 2003-12-03  Michael Koch  <konqueror@gmx.de>
5517
5518         * class.c (make_class_data):
5519         Push field value to 'hack_signers' instead of 'signers'.
5520         * decl.c (java_init_decl_processing):
5521         Push field 'hack_signers' instead of 'signers'.
5522
5523 2003-12-03  Zack Weinberg  <zack@codesourcery.com>
5524
5525         * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before
5526         including iconv.h.
5527
5528 2003-12-03  Ralph Loader  <rcl@ihug.co.nz>
5529
5530         PR java/12374:
5531         * parse.y (qualify_ambiguous_name): Remove lots of broken
5532         field access processing - there's no need to do that here,
5533         because we have resolve_field_access.  Remove
5534         RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else.
5535         * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't
5536         used.
5537
5538 2003-12-01  Jeff Sturm  <jsturm@one-point.com>
5539
5540         Fix PR java/13237
5541         * parse.y (java_complete_lhs): Save location prior to patching
5542         CALL_EXPR.
5543
5544 2003-11-25  Mohan Embar  <gnustuff@thisiscool.com>
5545
5546         PR java/12548
5547         * resource.c (write_resource_constructor): Append
5548         "_resource" to constructor identifier name.
5549
5550 2003-11-25  Jeff Sturm  <jsturm@one-point.com>
5551
5552         Fix PR java/13183.
5553         * constants.c (cpool_for_class): New function.
5554         (outgoing_cpool): Remove global variable.
5555         (alloc_name_constant): Use cpool_for_class.
5556         (build_constants_constructor): Likewise.
5557         * decl.c (java_expand_body): Set current_class.
5558         * java-tree.h (outgoing_cpool) Remove declaration.
5559         (init_outgoing_cpool): Likewise.
5560         * jcf-parse.c (init_outgoing_cpool): Remove function.
5561         (parse_class_file): Don't call init_outgoing_cpool.
5562         * parse.y (java_complete_expand_methods): Don't call
5563         init_outgoing_cpool.  Don't save outgoing_cpool.
5564         (java_expand_classes): Don't restore outgoing_cpool.
5565         (java_finish_classes): Likewise.
5566
5567 2003-11-24  Mohan Embar  <gnustuff@thisiscool.com>
5568
5569         * Make-lang.in: (java.install-common) Add
5570         symlink for $(target_noncanonical)-gcjh for
5571         native builds.
5572
5573 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
5574
5575         * Make-lang.in (java.extraclean): Delete.
5576
5577 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
5578
5579         * Make-lang.in (check-java): Add.
5580
5581 2003-11-19  Jeff Sturm  <jsturm@one-point.com>
5582
5583         Fix PR java/13024.
5584         * except.c (prepare_eh_table_type): Allocate variable-sized
5585         buffer `buf' with alloca.
5586
5587 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
5588
5589         Fix PR java/12857.
5590
5591         decl.c (java_init_decl_processing): Don't initialize
5592         class_not_found_type_node, no_class_def_found_type_node.
5593
5594         java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE,
5595         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index.
5596         (class_not_found_type_node, no_class_def_found_type_node):
5597         Don't define.
5598
5599         parse.y (build_dot_class_method_invocation): Add this_class
5600         argument.  Qualify method invocations to a different class.
5601         (create_new_parser_context): Initialize saved_data_ctx to 0.
5602         (java_parser_context_save_global): Initialize saved_data_ctx to 1.
5603         (build_dot_class_method): Don't load classes.  Register
5604         incomplete types.
5605         (build_incomplete_class_ref): Special cases for interfaces
5606         and inner classes.  Move build_dot_class_method call to here...
5607         (patch_incomplete_class_ref): ...from here.  Pass current_class
5608         to build_dot_class_method_invocation.
5609         (build_assertion): Pass class_type to
5610         build_dot_class_method_invocation.
5611         (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node.
5612
5613 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
5614
5615         Fix PR java/12739.
5616         * java-tree.h (BLOCK_EMPTY_P): Define.
5617         * parse.y (java_complete_lhs): Check for empty blocks
5618         in TRY_FINALLY_EXPR case.
5619
5620 2003-11-17  Andrew Haley  <aph@redhat.com>
5621
5622         * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
5623         (struct lang_decl_var:freed): New variable.
5624         * decl.c (poplevel): Mark local vars that have gone out of scope.
5625         (push_jvm_slot): Don't use the RTL of a var that has gone out of
5626         scope.
5627
5628 2003-11-16  Jason Merrill  <jason@redhat.com>
5629
5630         * Make-lang.in (java.tags): Create TAGS.sub files in each directory
5631         and TAGS files that include them for each front end.
5632
5633 2003-11-15  Tom Tromey  <tromey@redhat.com>
5634
5635         * gjavah.c (print_stub_or_jni): Pass `env' to FatalError.
5636
5637 2003-11-12  Jason Merrill  <jason@redhat.com>
5638
5639         PR optimization/12547
5640         * lang.c (java_tree_inlining_walk_subtrees): Just walk
5641         BLOCK_EXPR_BODY directly.
5642
5643 2003-11-12  Andrew Haley  <aph@redhat.com>
5644
5645         PR java/11045
5646         * parse.y (fold_constant_for_init): Check that we really do have a
5647         constant.
5648
5649         PR java/11533
5650         * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for
5651         init_test_decls being inlined.
5652
5653         PR java/12890:
5654         * parse.y (do_resolve_class): Check return value from
5655         breakdown_qualified().
5656
5657 2003-11-11  Tom Tromey  <tromey@redhat.com>
5658
5659         PR java/12915:
5660         * parse.y (merge_string_cste): Handle case where we have a
5661         pointer that happens to be zero, not null_pointer_node.
5662
5663 2003-11-10  Tom Tromey  <tromey@redhat.com>
5664
5665         * jcf-parse.c (classify_zip_file): Correctly compare
5666         filename_length against length of manifest file's name.
5667
5668 2003-11-08  Tom Tromey  <tromey@redhat.com>
5669
5670         PR java/12894:
5671         * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file.
5672
5673 2003-11-06  Andrew Haley  <aph@redhat.com>
5674
5675         * expr.c (java_stack_swap): Make sure destination stack slots are
5676         of the correct type.
5677
5678 2003-11-03  Kelley Cook  <kcook@gcc.gnu.org>
5679
5680         * Make-lang.in (dvi): Move targets to $(docobjdir).
5681         (gcj.dvi): Simplify rule and adjust target.
5682         (gcj.info): Simplify rule.
5683         (gcj.pod): New intermediate rule.
5684         (gcjh.pod): Likewise.
5685         (jv-scan.pod): Likewise.
5686         (jcf-dump.pod): Likewise.
5687         (gij.pod): Likewise.
5688         (jv-convert.pod): Likewise.
5689         (rmic.pod): Likewise.
5690         (rmiregistry.pod): Likewise.
5691         (gcj.1): Delete.
5692         (gcjh.1): Delete.
5693         (jv-scan.1): Delete.
5694         (jcf-dump.1): Delete.
5695         (gij.1): Delete.
5696         (jv-convert.1): Delete.
5697         (rmic.1): Delete.
5698         (rmiregistry.1): Delete.
5699
5700 2003-11-02  Jeff Sturm  <jsturm@one-point.com>
5701
5702         Fixes PR java/12866.
5703         * parse.y (resolve_qualified_expression_name): Move test
5704         for outer field access methods from here...
5705         (check_thrown_exceptions) ...to here.
5706
5707 2003-11-01  Kelley Cook  <kcook@gcc.gnu.org>
5708
5709         * .cvsignore: Delete.
5710
5711 2003-10-28  Frank Ch. Eigler  <fche@redhat.com>
5712
5713         * verify.c (verify_jvm_instructions): Don't warn about legal
5714         eh binding regions generated for example by jdk 1.4.1.
5715
5716 2003-10-24  David S. Miller  <davem@redhat.com>
5717
5718         * jcf-parse.c (jcf_parse): Fix args to fatal_error().
5719
5720 2003-10-22  Andrew Haley  <aph@redhat.com>
5721
5722         * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
5723         (java_get_callee_fndecl): New.
5724
5725         * jcf-parse.c (java_parse_file): Call emit_catch_table().
5726
5727         * java-tree.h (ctable_decl): New.
5728         (catch_classes):  New.
5729         (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.
5730
5731         * decl.c (java_init_decl_processing): Add catch_class_type.
5732         Add ctable_decl.
5733         Add catch_classes field.
5734
5735         * class.c (build_indirect_class_ref): Break out from
5736         build_class_ref.
5737         (make_field_value): Check flag_indirect_dispatch.
5738         (make_class_data): Ditto.
5739         Tidy uses of PUSH_FIELD_VALUE.
5740         Add field catch_classes.
5741         (make_catch_class_record): New.
5742
5743         * java-tree.h (PUSH_FIELD_VALUE): Tidy.
5744
5745 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
5746
5747         * jcf-write.c: Follow spelling conventions.
5748         * parse.y: Likewise.
5749
5750 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
5751
5752         * ChangeLog: Fix typos.
5753         * expr.c: Fix comment typos.
5754         * jcf-write.c: Likewise.
5755         * lang.c: Likewise.
5756         * lex.c: Likewise.
5757         * mangle.c: Likewise.
5758         * parse-scan.y: Likewise.
5759         * parse.y: Likewise.
5760
5761 2003-10-22  Tom Tromey  <tromey@redhat.com>
5762
5763         * expr.c (expand_byte_code): Only warn about dead bytecode when
5764         extra_warnings is set.
5765
5766 2003-10-22  Bryce McKinlay  <bryce@mckinlay.net.nz>
5767
5768         Fix for PR java/12586.
5769         * mangle.c (find_compression_record_match): Don't iterate through
5770         package namespace elements unless they all match compression_table
5771         entries.
5772
5773 2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>
5774
5775         * Make-lang.in (info): Honor $(parsedir) and $(docobjdir).
5776         (generate-manpages): Likewise.
5777         (java.maintainer-clean): Likewise.
5778         (gcj.info): Likewise.
5779         (gcj.1): Likewise.
5780         (gcjh.1): Likewise.
5781         (jv-scan.1): Likewise.
5782         (jcf-dump.1): Likewise.
5783         (gij.1): Likewise.
5784         (jv-convert.1): Likewise.
5785         (rmic.1): Likewise.
5786         (rmiregistry.1): Likewise.
5787         (java.install-man): Likewise.
5788         (parse-scan.o): Move and define complete compile line.
5789         (parse.o): Likewise.
5790         (jcf-tree-inline.o): Move.
5791
5792 2003-10-20  Mark Mitchell  <mark@codesourcery.com>
5793
5794         * Make-lang.in (info): Update dependencies.
5795         (java.install-info): Remove.
5796         ($(srcdir)/java/gcj.info): Replace with ...
5797         ($(docobjdir)/gcj.info): ... this.
5798
5799 2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>
5800
5801         * Make-lang.in: Replace uses of $(target_alias) with
5802         $(target_noncanonical).
5803
5804 2003-10-09  Tom Tromey  <tromey@redhat.com>
5805
5806         * decl.c (java_init_decl_processing): Declare signers field.
5807         * class.c (make_class_data): Set signers field.
5808
5809 2003-10-09  Jason Merrill  <jason@redhat.com>
5810
5811         * parse.y (patch_assignment): Use make_node to create a BLOCK.
5812         * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a
5813         POINTER_TYPE.
5814
5815 2003-10-06  Mark Mitchell  <mark@codesourcery.com>
5816
5817         * Make-lang.in (java.info): Replace with ...
5818         (info): ... this.
5819         (java.dvi): Replace with ...
5820         (dvi): ... this.
5821         (java.generated-manpages): Replace with ...
5822
5823 2003-10-03  Kelley Cook  <kelleycook@wideopenwest.com>
5824
5825         * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros.
5826
5827 2003-10-01  Andrew Haley  <aph@redhat.com>
5828
5829         * jcf-parse.c (java_parse_file): Write otable and atable.
5830         * java-tree.h (atable_methods): New.
5831         (atable_decl): New.
5832         (atable_syms_decl): New.
5833         (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL,
5834         JTI_ATABLE_SYMS_DECL.  Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*.
5835         (symbol_*type): Rename method_symbol* to symbol*type.
5836         (emit_offset_symbol_table): Delete.
5837         (emit_symbol_table): New.
5838         (get_symbol_table_index): New.
5839         (atable_type): New.
5840         * expr.c (build_field_ref): Handle flag_indirect_dispatch.
5841         (build_known_method_ref): Likewise.
5842         (get_symbol_table_index): Rename from get_offset_table_index.
5843         Parameterize to allow re-use by differing types of symbol table.
5844         (build_invokevirtual): Pass table to get_offset_table_index.
5845         * decl.c (java_init_decl_processing): Push types and decls for
5846         atable and atable_syyms.
5847         * class.c (build_static_field_ref): Handle flag_indirect_dispatch.
5848         (make_class_data): Add new fields atable and atable_syms.
5849         (emit_symbol_table): Rename from emit_offset_symbol_table.
5850         Parameterize to allow re-use by different types of symbol table.
5851         (build_symbol_entry): Renamed from build_method_symbols_entry.
5852
5853 2003-09-30  Roger Sayle  <roger@eyesopen.com>
5854
5855         * jcf-write.c (generate_bytecode_insns): Implement evaluate-once
5856         semantics for SAVE_EXPR, by caching the result in a temporary.
5857
5858 2003-09-28  Richard Henderson  <rth@redhat.com>
5859
5860         * check-init.c (check_init): Save and restore input_location
5861         instead of file and line separately.
5862         * decl.c (java_expand_body): Likewise.
5863         * jcf-write.c (generate_bytecode_insns): Likewise.
5864         * parse.y (safe_layout_class): Likewise.
5865         * jcf-parse.c (read_class, parse_class_file): Likewise.
5866         (java_parse_file): Use %H for warning locator.
5867
5868 2003-09-28  Roger Sayle  <roger@eyesopen.com>
5869
5870         * expr.c (java_check_reference): Use the semantics of COND_EXPRs
5871         with void-type branches instead of using a COMPOUND_EXPR.
5872
5873 2003-09-28  Jeff Sturm  <jsturm@one-point.com>
5874
5875         * decl.c (java_optimize_inline, dump_function): Remove.
5876         * java-tree.h (java_optimize_inline): Remove declaration.
5877         * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set.
5878         * parse.y (source_end_java_method, java_expand_classes):
5879         Likewise.  Remove dead code.
5880
5881 2003-09-27  Roger Sayle  <roger@eyesopen.com>
5882
5883         * lang.c (java_init_options): Set flag_evaluation_order.
5884         * expr.c (force_evaluation_order): Don't attempt to force
5885         evaluation order of binary operations using save_expr.
5886         * parse.y (java_complete_lhs): No longer need to call
5887         force_evaluation_order when constructing binary operators.
5888
5889 2003-09-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
5890             Bryce McKinlay  <bryce@mckinlay.net.nz>
5891
5892         PR java/1333:
5893         * parse.y (not_accessible_field_error): New function.
5894         (resolve_expression_name): Check field access permissions.
5895         (resolve_qualified_expression_name): Use
5896         not_accessible_field_error.
5897         (resolve_qualified_expression_name): Likewise.
5898
5899 2003-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5900
5901         * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value.
5902
5903 2003-09-23  Roger Sayle  <roger@eyesopen.com>
5904
5905         * jcf-write.c (generate_bytecode_insns): Optimize binary operations
5906         with equal operands without side-effects.
5907
5908 2003-09-22  Jeff Sturm  <jsturm@one-point.com>
5909
5910         * decl.c (java_init_decl_processing): Don't emit otable decls
5911         if flag_indirect_dispatch is not set.
5912
5913 2003-09-21  Richard Henderson  <rth@redhat.com>
5914
5915         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
5916         resource.c: Revert.
5917
5918 2003-09-21  Richard Henderson  <rth@redhat.com>
5919
5920         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
5921         resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.
5922
5923 2003-09-20  Richard Henderson  <rth@redhat.com>
5924
5925         * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
5926
5927 2003-09-18  Roger Sayle  <roger@eyesopen.com>
5928
5929         * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
5930         * check-init.c (check_init): Likewise.
5931
5932 2003-09-18  Roger Sayle  <roger@eyesopen.com>
5933
5934         * jcf-write.c (generate_bytecode_insns): Add support for fconst_2.
5935
5936 2003-09-16  Andrew Haley  <aph@redhat.com>
5937
5938         * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR.
5939
5940 2003-09-17  Ranjit Mathew  <rmathew@hotmail.com>
5941
5942         Fixes PR java/9577
5943         * mangle.c (find_compression_record_match): Skip
5944         over a "6JArray" (the array template mangled string)
5945         IDENTIFIER_NODE.
5946         (mangle_array_type): Correct minor typo.
5947         (atms): Move definition to the beginning.
5948
5949 2003-09-16  Bryce McKinlay  <bryce@mckinlay.net.nz>
5950
5951         * class.c (add_miranda_methods): Ensure super-interfaces are laid
5952         out. Fix for PR java/12254.
5953
5954 2003-09-11  Richard Henderson  <rth@redhat.com>
5955
5956         * parse.y (source_end_java_method): Update for new
5957         cgraph_finalize_function argument.
5958
5959 2003-09-09  Richard Henderson  <rth@redhat.com>
5960
5961         * parse.y (source_end_java_method): Update call to
5962         cgraph_finalize_function.
5963
5964 2003-09-03  Jeff Sturm  <jsturm@one-point.com>
5965
5966         * decl.c (java_expand_body): New function.
5967         * expr.c (build_class_init): Set DECL_IGNORED_P.
5968         * java-tree.h (start_complete_expand_method,
5969         java_expand_body): Declare.
5970         * jcf-parse.c (cgraph.h): Include.
5971         (java_parse_file): Handle flag_unit_at_a_time.
5972         * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING,
5973         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
5974         (java_estimate_num_insns): Use walk_tree_without_duplicates.
5975         (java_start_inlining): New function.
5976         * parse.h (java_finish_classes): Declare.
5977         * parse.y: Include cgraph.h.
5978         (block): Don't special-case empty block production.
5979         (craft_constructor): Set DECL_INLINE.
5980         (source_end_java_method): Handle flag_unit_at_a_time.
5981         Replace inline code with call to java_expand_body.
5982         (start_complete_expand_method): Remove static modifier.
5983         (java_expand_method_bodies): Patch function tree for
5984         class initialization and/or synchronization as needed.
5985         Don't begin RTL expansion yet.
5986         (java_expand_classes): Check flag_unit_at_a_time before
5987         calling finish_class.
5988         (java_finish_classes): New function.
5989         (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type.
5990         (patch_assignment): Set DECL_CONTEXT on temporary variable.
5991         (emit_test_initialization): Set DECL_IGNORED_P.
5992
5993 2003-09-03  Roger Sayle  <roger@eyesopen.com>
5994
5995         * builtins.c (enum builtin_type): Delete unused enumeration.
5996         * Make-lang.in (java/builtins.o): Remove built-types.def dependency.
5997
5998 2003-08-28  Tom Tromey  <tromey@redhat.com>
5999
6000         * gcj.texi (Extensions): Document gcjlib URLs.
6001
6002 2003-08-20  Tom Tromey  <tromey@redhat.com>
6003
6004         * gcj.texi (Extensions): Added xref.
6005         (libgcj Runtime Properties): Document
6006         gnu.gcj.runtime.VMClassLoader.library_control.
6007
6008 2003-08-20  Andrew Haley  <aph@redhat.com>
6009
6010         * except.c (prepare_eh_table_type): Use new encoding for exception
6011         handlers when using -fno-assume-compiled.
6012
6013 2003-08-13  Tom Tromey  <tromey@redhat.com>
6014
6015         * gcj.texi (Invoking gij): Document -X and -?.
6016
6017 2003-08-13  Mohan Embar  <gnustuff@thisiscool.com>
6018
6019         * Make-lang.in: Added missing win32-host.o to JAVA_OBJS,
6020         GCJH_OBJS, JCFDUMP_OBJS
6021         * win32-host.c: Removed the unnecessary and broken dependency
6022         on jcf.h
6023
6024 2003-08-11  Tom Tromey  <tromey@redhat.com>
6025
6026         * parse.y (java_check_regular_methods): Typo fixes.  Call
6027         check_interface_throws_clauses.  Use
6028         check_concrete_throws_clauses.
6029         (check_interface_throws_clauses): New function.
6030         (check_concrete_throws_clauses): New function.
6031         (hack_is_accessible_p): New function.
6032         (find_most_specific_methods_list): Added FIXME.
6033         * typeck.c (lookup_do): Use `flags' argument to decide what to
6034         do.  Reimplemented.
6035         (lookup_argument_method_generic): New function.
6036         (lookup_argument_method2): Removed.
6037         * jcf.h (ACC_INVISIBLE): New define.
6038         * jcf-write.c (generate_classfile): Skip invisible methods.
6039         * class.c (add_miranda_methods): New function.
6040         (layout_class_methods): Use it.
6041         (get_access_flags_from_decl): Use ACC_INVISIBLE.
6042         * java-tree.h (METHOD_INVISIBLE): New define.
6043         (lang_decl_func) [invisible]: New field.
6044         (lookup_argument_method_generic): Declare.
6045         (SEARCH_INTERFACE): New define.
6046         (SEARCH_SUPER): Likewise.
6047         (SEARCH_ONLY_INTERFACE): Likewise.
6048         (SEARCH_VISIBLE): Likewise.
6049         (lookup_argument_method2): Removed declaration.
6050
6051 2003-08-05  Tom Tromey  <tromey@redhat.com>
6052
6053         Fix for PR java/11600:
6054         * parse.y (java_complete_lhs): See whether we're calling a method
6055         on an array.
6056         (check_thrown_exceptions): Added `is_array_call' argument;
6057         fixed `clone' checking; updated all callers.
6058
6059 2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>
6060
6061         * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h).
6062
6063 2003-08-03  Tom Tromey  <tromey@redhat.com>
6064
6065         * java-tree.h (METHOD_TRANSIENT): Removed.
6066         * decl.c (pushdecl): Removed some dead code.
6067         * class.c (get_access_flags_from_decl): Can't have transient
6068         method.
6069         (add_method_1): Can't have a transient method.
6070
6071 2003-07-28  Andreas Jaeger  <aj@suse.de>
6072
6073         * jvspec.c: Convert to ISO C90 prototypes.
6074
6075 2003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
6076
6077         * decl.c (force_poplevels): Fix warning call.
6078
6079 2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6080
6081         * expr.c (expand_java_field_op): Don't use xxx_with_decl
6082         (expand_java_field_op): Likewise.
6083         * class.c (layout_class_method): Likewise
6084         (emit_register_classes): Likewise.
6085         * decl.c (pushdecl): Likewise.
6086         (poplevel): Likewise.
6087         (force_poplevels): Likewise.
6088         (give_name_to_locals): Likewise.
6089         * check-init.c (check_for_initialization): Likewise.
6090
6091 2003-07-24  Jason Merrill  <jason@redhat.com>
6092
6093         * java-tree.h: Move boolean_type_node et al to the back end.
6094
6095 2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6096
6097         * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary
6098         casts.
6099
6100 2003-07-19  Neil Booth  <neil@daikokuya.co.uk>
6101
6102         * lang.opt: Don't show -MD_ and -MDD_.
6103
6104 2003-07-18  Neil Booth  <neil@daikokuya.co.uk>
6105
6106         * lang-options.h: Remove.
6107         * lang.opt: Add help text.
6108
6109 2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>
6110
6111         * expr.c: Remove the last argument to expand_assignment().
6112
6113 2003-07-09  Jan Hubicka  <jh@suse.cz>
6114
6115         * java-tree.h (DECL_NUM_STMTS): Rename to...
6116         (DECL_ESTIMATED_INSNS): ... this.
6117         * lang.c (java_estimate_num_insns, java_estimate_num_insns_1):
6118         New static functions.
6119         (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define.
6120         * parser.y (add_stmt_to_compound): Do not account statements.
6121
6122 2003-07-08  Mark Wielaard  <mark@klomp.org>
6123
6124         * gcj.texi: CNI now expands to Compiled Native Interface.
6125
6126 2003-07-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6127
6128         * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND.
6129
6130 2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>
6131
6132         * expr.c (expand_byte_code): Adjist emit_line_note call.
6133
6134 2003-07-06  Neil Booth  <neil@daikokuya.co.uk>
6135
6136         * lang.c (java_handle_option): Don't handle filenames.
6137
6138 2003-07-02  Zack Weinberg  <zack@codesourcery.com>
6139
6140         * jcf-path.c: Don't default-define PATH_SEPARATOR nor
6141         DIR_SEPARATOR.
6142         Use FILENAME_CMP.
6143         * jcf-write.c: Don't default-define DIR_SEPARATOR.
6144         * jcf.h: Delete COMPARE_FILENAMES definition.
6145
6146 2003-07-02  Neil Booth  <neil@daikokuya.co.uk>
6147
6148         * lang.c (java_init_options): Update prototype.
6149
6150 2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
6151
6152         * decl.c (poplevel): Adjust define_label call.
6153
6154 2003-06-27  Zack Weinberg  <zack@codesourcery.com>
6155
6156         * gjavah.c (flag_jni): Make non-static.
6157         * parse-scan.y (ctxp): Make non-static.
6158
6159         * class.c (build_method_symbols_entry)
6160         * expr.c (get_offset_table_index)
6161         * jcf-parse.c (jcf_parse):
6162         Mark the definition static, matching the forward declaration.
6163
6164 2003-06-26  Neil Booth  <neil@daikokuya.co.uk>
6165
6166         * lang.c (java_handle_option): Don't check for missing arguments.
6167
6168 2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>
6169
6170         * class.c (push_class): Use a location_t to save place.
6171         (emit_register_classes): Set input_location. Adjust
6172         expand_function_end call.
6173         * resource.c (write_resource_constructor): Likewise.
6174         * decl.c (end_java_method): Adjust expand_function_end call.
6175         * parse.y (source_end_java_method): Likewise.
6176
6177 2003-06-17  Robert Abeles  <rabeles@archaelogic.com>
6178
6179         * lang.c (java_handle_option): Likewise.
6180
6181 2003-06-16  Neil Booth  <neil@daikokuya.co.uk>
6182
6183         * lang.c (java_handle_option): Special-casing of optional
6184         joined arguments no longer needed.
6185         * lang.opt: Update switches that take optional argument.
6186
6187 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
6188
6189         * lang.opt: Declare Java.
6190         * lang.c (java_init_options): Update.
6191
6192 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
6193
6194         * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h.
6195
6196 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
6197
6198         * lang-specs.h: Rewrite -MD and -MMD to append an underscore.
6199         * lang.c (java_handle_option): -MD and -MMD have an underscore.
6200         * lang.opt: -MD and -MMD have an underscore.
6201
6202 2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>
6203
6204         * class.c (emit_register_classes): Adjust init_function_start
6205         call.
6206         * decl.c (complete_start_java_method): Likewise.
6207         * resource.c (write_resource_constructor): Likewise.
6208
6209 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
6210
6211         * Make-lang.in: Update to use options.c and options.h.
6212         * lang.c: Include options.h not j-options.h.
6213         (java_handle_option): Abort on unrecognized option.
6214         (java_init_options): Request Java switches.
6215
6216 2003-06-11  Neil Booth  <neil@daikokuya.co.uk>
6217
6218         * Make-lang.in: Handle mostlyclean.
6219
6220 2003-06-11  Tom Tromey  <tromey@redhat.com>
6221
6222         * lang.c (java_handle_option): Update dependency_tracking for
6223         OPT_MF case.
6224
6225         * lang.c (java_handle_option): OPT_fbootclasspath_ can take an
6226         empty argument.
6227
6228 2003-06-10  Andrew Haley  <aph@redhat.com>
6229
6230         * resource.c (write_resource_constructor): Use expand_expr to
6231         generate the address of the label attached to a resource.
6232         * Make-lang.in (java/resource.o): Add expr.h
6233
6234 2003-06-10  Andrew Haley  <aph@redhat.com>
6235
6236         * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
6237         (java_decl_ok_for_sibcall): New.
6238
6239 2003-06-09  Neil Booth  <neil@daikokuya.co.uk>
6240
6241         * Make-lang.in (JAVA_OBJS, java/lang.o): Update.
6242         (java/j-options.c, java/j-options.h): New.
6243         * java-tree.h (resource_name, compile_resource_file,
6244         compile_resource_data): Constify.
6245         * jcf-write.c (jcf_write_base_directory): Similarly.
6246         * jcf.h (jcf_write_base_directory): Similarly.
6247         * lang.c: Include j-options.h.
6248         (cl_options_count, cl_options, string_option, java_decode_option,
6249         lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION,
6250         process_option_with_no): Remove.
6251         (resource_name): Constify.
6252         (LANG_HOOKS_HANDLE_OPTION): Override.
6253         (java_handle_option): New.
6254         (java_init): Don't call jcf_path_init.
6255         (java_init_options): Call jcf_path_init.
6256         * lang.opt: New.
6257         * resource.c (compile_resource_data, compile_resource_file): Constify.
6258
6259 2003-06-09  Nathan Sidwell  <nathan@codesourcery.com>
6260
6261         * java-tree.h (DECL_FUNCTION_LAST_LINE): New.
6262         (struct lang_decl_func): Add last_line field.
6263         * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
6264         DECL_SOURCE_LINE_LAST): Remove.
6265         * parse.y (missing_return_error, finish_method_declaration,
6266         lookup_cl, start_artificial_method_body, source_end_java_method,
6267         start_complete_expand_method): Adjust.
6268
6269 2003-06-08  Tom Tromey  <tromey@redhat.com>
6270
6271         * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and
6272         fno-assume-compiled.
6273
6274 2003-06-08  Roger Sayle  <roger@eyesopen.com>
6275
6276         * builtins.c (define_builtin_type, builtin_types): Delete.
6277         (define_builtin): Rewritten to take just the built-in code,
6278         the function's name, type and fallback library function name.
6279         All built-ins used by Java are implicit and BUILT_IN_NORMAL.
6280         (initialize_builtins): Overhaul to define the GCC builtins
6281         used by gcj manually, providing the Java run-time's
6282         implementations as the fallback library function.
6283
6284 2003-06-08  Anthony Green  <green@redhat.com>
6285
6286         * parse.y (patch_cast): Fix conversions from floating-point to
6287         integral types.
6288
6289 2003-06-08  Neil Booth  <neil@daikokuya.co.uk>
6290
6291         * Make-lang.in: Update.
6292         * lang.c: Include opts.h. Define cl_options_count and cl_options.
6293
6294 2003-06-07  Neil Booth  <neil@daikokuya.co.uk>
6295
6296         * lang.c (java_init_options): Update.
6297
6298 2003-06-05  Jan Hubicka  <jh@suse.cz>
6299
6300         * Make-lang.in:  Add support for stageprofile and stagefeedback
6301
6302 2003-05-31  Roger Sayle  <roger@eyesopen.com>
6303
6304         * lang.c (java_init_options): Prescribe wrap-around two's
6305         complement arithmetic overflow by setting flag_wrapv.
6306
6307 2003-05-29  Roger Sayle  <roger@eyesopen.com>
6308
6309         * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete.
6310         (builtin_record): Add an additional builtin_code field to
6311         record which GCC built-in corresponds to the Java function.
6312         (java_builtins):  Add new entries for atan, atan2, exp, log,
6313         pow and tan.
6314         (max_builtin, min_builtin, abs_builtin): Perform constant
6315         folding on the resulting tree.
6316         (java_build_function_call_expr): Likewise, perform constant
6317         folding on the resulting tree.
6318         (initialize_builtins): The NULL creators are now allowed in
6319         the java_builtins table, which is now terminated by an entry
6320         with builtin_code == END_BUILTINS.
6321         (check_for_builtin): Likewise.  If the matching creator is
6322         NULL, construct the call using java_build_function_call_expr
6323         directly with the decl for the corresponding builtin_code.
6324
6325 2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>
6326
6327         * win32-host.c: Normalize copyright boilerplate.
6328
6329 2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6330
6331         * parse.y (print_int_node): Use string concatentation on
6332         HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
6333         function calls into one.
6334
6335 2003-05-13  Zack Weinberg  <zack@codesourcery.com>
6336
6337         * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to
6338         fatal_io_error with calls to fatal_error; add ": %m" to the end of
6339         all the affected error messages.
6340
6341 2003-05-13  Richard Henderson  <rth@redhat.com>
6342
6343         * class.c (layout_class_method): Set DECL_EXTERNAL.
6344         * decl.c (java_mark_decl_local, java_mark_class_local): New.
6345         * java-tree.h (java_mark_class_local): Declare.
6346         * jcf-parse.c (parse_class_file): Use it.
6347         * parse.y (java_expand_classes): Likewise.
6348
6349 2003-05-04  Nathan Sidwell  <nathan@codesourcery.com>
6350
6351         * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h.
6352         * lex.h: #include input.h.
6353         * jv-scan.c (input_filename): Remove.
6354
6355 2003-05-02  Tom Tromey  <tromey@redhat.com>
6356
6357         PR java/10491:
6358         * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
6359         (handle_inner_classes): New function.
6360
6361 2003-05-01  Tom Tromey  <tromey@redhat.com>
6362
6363         PR java/10459:
6364         * parse.y (finish_for_loop): Do nothing if update expression is a
6365         EXPR_WFL_NODE wrapping nothing.
6366         (java_complete_lhs) <COMPOUND_EXPR>: Likewise.
6367
6368 2003-05-02  Nathan Sidwell  <nathan@codesourcery.com>
6369
6370         * lex.h (input_lineno): Remove declaration.
6371         * parse-scan.y: #include input.h.
6372         (input_filename): Remove declaration.
6373         (input_location): Add definition.
6374         (input_line): Remove definition.
6375
6376 2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>
6377
6378         * lex.h (lineno): Rename to ...
6379         (input_line): ... here
6380         * parse-scan.y (lineno): Rename to ...
6381         (input_line): ... here.
6382         (reset_report): Rename lineno to input_line.
6383         * check-init.c (check_init): Likewise.
6384         * class.c (push_class): Likewise.
6385         * decl.c (complete_start_java_method, end_java_method): Likewise.
6386         * expr.c (expand_byte_code): Likewise.
6387         * jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
6388         * jcf-write.c (generate_bytecode_insns): Likewise.
6389         * lex.c (java_init_lex, java_allocate_new_line,
6390         do_java_lex): Likewise.
6391         * parse.h (YYNOT_TWICE): Likewise.
6392         * parse.y (empty_statement, expression_statement,
6393         java_pop_parser_context, java_parser_context_save_global,
6394         yyerror, register_fields, method_header, safe_layout_class,
6395         find_in_imports_on_demand, create_artificial_method,
6396         source_end_java_method, start_complete_expand_method,
6397         build_thisn_assign, java_complete_lhs,
6398         maybe_absorb_scoping_block): Likewise.
6399
6400 2003-04-20  Mohan Embar  <gnustuff@thisiscool.com>
6401
6402         * jcf-io.c (find_class): use DIR_SEPARATOR instead of
6403         '/' when computing java source filename
6404
6405 2003-04-13  Tom Tromey  <tromey@redhat.com>
6406
6407         * gjavah.c (print_c_decl): Indentation fix.
6408
6409 2003-04-12  Zack Weinberg  <zack@codesourcery.com>
6410
6411         * class.c (make_field_value, make_method_value, get_dispatch_table)
6412         (make_class_data, emit_offset_symbol_table)
6413         * constants.c (build_constants_constructor)
6414         * java-tree.h (START_RECORD_CONSTRUCTOR)
6415         * parse.y (maybe_build_array_element_wfl):
6416         Use build_constructor.
6417
6418 2003-04-10  Eric Blake  <ebb9@email.byu.edu>
6419
6420         PR java/10253:
6421         * parse.y (string_convert_int_cst): Always use at least one digit
6422         in string conversion. Remove ASCII dependence.
6423         (merge_string_cste): Fix merging of 3-byte UTF-8 characters.
6424
6425 2003-03-16  Mohan Embar  <gnustuff@thisiscool.com>
6426
6427         * Make-lang.in: added win32-host.c
6428         * jcf.h: defined macro JCF_OPEN_EXACT_CASE which
6429         resolves to open() on non-Win32 platforms and
6430         Win32-specific jcf_open_exact_case() on Win32
6431         * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE
6432         when trying .java and .class files
6433         * win32-host.c: added to repository. Defines
6434         Win32-specific jcf_open_exact_case()
6435
6436 2003-04-10  Andrew Haley  <aph@redhat.com>
6437
6438         * jcf-write.c (struct jcf_partial): num_jsrs: new field.
6439         (maybe_free_localvar): Renamed from localvar_free.
6440         Add new arg, really.
6441         (generate_bytecode_insns): Set new variable, jsrs.
6442         Only free local vars if no jsr insns have been emittted.
6443         Call maybe_free_localvar, not localvar_free.
6444
6445 2003-03-30  Joseph S. Myers  <jsm@polyomino.org.uk>
6446
6447         * gcj.texi: Remove @ at start of file.
6448
6449 2003-03-25  Tom Tromey  <tromey@redhat.com>
6450
6451         * parse.y (create_interface): Call CHECK_DEPRECATED.
6452
6453 2003-03-23  Zack Weinberg  <zack@codesourcery.com>
6454
6455         * Make-lang.in: Link jcf-dump against $(LDEXP_LIB).
6456
6457 2003-03-21  Zack Weinberg  <zack@codesourcery.com>
6458
6459         * javaop.h (jfloat, jdouble): Make them structures mirroring
6460         the bit fields of IEEE float and double respectively.
6461         (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS,
6462         JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New.
6463         (union Word, union DWord): Delete.
6464         (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match.
6465
6466         * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK,
6467         D_NAN_MASK): Delete.
6468         (jni_print_float, jni_print_double): New.  Generate
6469         hexadecimal floating constants.
6470         (print_field_info): Use jni_print_float/double.
6471
6472         * jcf-dump.c: Include math.h.  Use ldexp/frexp to assemble
6473         finite floating point numbers for output; special case
6474         non-finite floats.
6475
6476 2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>
6477
6478         * lang.c (java_dump_tree): Change return type from 'int' to 'bool'.
6479         Replace 0 and 1 with true and false in return statements.
6480
6481 2003-03-19  Tom Tromey  <tromey@redhat.com>
6482
6483         * lex.c (do_java_lex): Renamed from java_lex.
6484         (java_lex): New function.
6485         Include timevar.h.
6486
6487 2003-03-13  Tom Tromey  <tromey@redhat.com>
6488
6489         * parse.y (resolve_inner_class): Error if qualifier is a primitive
6490         type.
6491
6492 2003-03-04  Andrew Haley  <aph@redhat.com>
6493
6494         * gjavah.c (is_first_data_member): New global variable.
6495         (print_c_decl): If it's the first data member, align it as the
6496         superclass.
6497         (process_file): Set is_first_data_member.
6498
6499 2003-03-11  Tom Tromey  <tromey@redhat.com>
6500
6501         * parse.y (resolve_field_access): Initialize class if field is
6502         found in another static field.
6503         * expr.c (build_class_init): Don't optimize out initialization of
6504         implemented interface.
6505
6506 2003-03-11  Andrew Haley  <aph@redhat.com>
6507
6508         * jcf-io.c (caching_stat): Initialize origsep to remove compiler
6509         warning.
6510
6511 2003-03-10  Ranjit Mathew  <rmathew@hotmail.com>
6512
6513         * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR
6514         and DIR_SEPARATOR_2 for a target.
6515         Correct minor typos.
6516
6517         * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR
6518         and DIR_SEPARATOR_2 for a target into account.
6519
6520 2003-03-08  Neil Booth  <neil@daikokuya.co.uk>
6521
6522         * lang.c (java_init): Update prototype, move code to java_post_options.
6523         (java_post_options): Similarly.
6524
6525 2003-03-05  Ranjit Mathew  <rmathew@hotmail.com>
6526
6527         * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to
6528         compare file name components depending on the case-sensitivity
6529         or otherwise of the host file system.
6530
6531         * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of
6532         "strcmp" to compare file name components.
6533         Use IS_DIR_SEPARATOR instead of comparing directly against
6534         DIR_SEPARATOR.
6535         (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of
6536         comparing directly against DIR_SEPARATOR.
6537
6538 2003-03-04  Tom Tromey  <tromey@redhat.com>
6539
6540         * Make-lang.in (java.tags): New target.
6541
6542 2003-03-01  Roger Sayle  <roger@eyesopen.com>
6543
6544         * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3.
6545         (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3.
6546
6547 2003-03-01  Tom Tromey  <tromey@redhat.com>
6548
6549         * parse.y (jdep_resolve_class): Only check deprecation if we found
6550         a decl.
6551
6552 2003-02-28  Tom Tromey  <tromey@redhat.com>
6553
6554         PR java/9695:
6555         * class.c (maybe_layout_super_class): Always pass a WFL to
6556         do_resolve_class.
6557         * parse.y (do_resolve_class): Updated comment to explain
6558         parameters.
6559
6560 2003-02-26  Tom Tromey  <tromey@redhat.com>
6561
6562         * jcf-write.c (generate_classfile): Check whether class is
6563         deprecated before writing attribute count.
6564
6565 2003-02-25  Roger Sayle  <roger@eyesopen.com>
6566
6567         * java/decl.c (java_init_decl_processing): Get soft_fmod_node from
6568         built_in_decls[BUILT_IN_FMOD] rather than define it ourselves.
6569
6570 2003-02-23  Tom Tromey  <tromey@redhat.com>
6571
6572         * lang-options.h: Added -Wdeprecated.
6573         * gcj.texi (Warnings): Document -Wdeprecated.
6574         * java-tree.h (flag_deprecated): Declare.
6575         * lang.c (lang_W_options): Added deprecated.
6576         (flag_deprecated): New global.
6577         * chartables.h: Rebuilt.
6578         * gen-table.pl (process_one): Look at whitespace.
6579         (print_tables): Define LETTER_SPACE, LETTER_MASK.
6580         * parse.h (CLEAR_DEPRECATED): New macro.
6581         (CHECK_DEPRECATED_NO_RESET): New macro.
6582         * jcf-parse.c (handle_deprecated): New function.
6583         (HANDLE_DEPRECATED_ATTRIBUTE): New define.
6584         * jcf-reader.c (get_attribute): Handle Deprecated attribute.
6585         * parse.y (resolve_type_during_patch): Check deprecation.
6586         (jdep_resolve_class): Likewise.
6587         (process_imports): Likewise.
6588         (resolve_expression_name): Likewise.
6589         (check_deprecation): Strip arrays from decl.  Check
6590         flag_deprecated.
6591         (patch_method_invocation): Also check the particular constructor
6592         for deprecation.
6593         (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop.
6594         * jcf-write.c (append_deprecated_attribute): New function.
6595         (generate_classfile): Generate deprecated attribute when
6596         appropriate.
6597         * lex.c (java_parse_doc_section): Return type now void.  Rewrote.
6598         (java_lex) [case '*']: Simplify logic.
6599         (java_start_char_p): Use LETTER_MASK.
6600         (java_part_char_p): Likewise.
6601         (java_space_char_p): New function.
6602
6603 2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
6604
6605         Change base class access representation.
6606         * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
6607         (add_interface_do): Likewise.
6608
6609 2003-02-12  Ranjit Mathew  <rmathew@hotmail.com>
6610
6611         * decl.c (java_init_decl_processing): Change
6612         soft_lookupjnimethod_node to reflect the change in
6613         signature of _Jv_LookupJNIMethod in libjava/jni.cc
6614         * expr.c (build_jni_stub): Calculate and pass the size
6615         on the stack of the arguments to a JNI function. Use
6616         new target macro MODIFY_JNI_METHOD_CALL to allow a
6617         target to modify the call to a JNI method.
6618
6619 2003-02-08  Roger Sayle  <roger@eyesopen.com>
6620
6621         * jcf-io.c (java_or_class_file): Use libiberty's lbasename
6622         instead of basename to avoid compiler warnings on Tru64.
6623
6624 2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>
6625
6626         * gcj.texi: Update to GFDL 1.2.
6627
6628 2003-01-31  Andrew Haley  <aph@redhat.com>
6629
6630         * parse.y (java_expand_classes): Scan the whole class list looking
6631         for access methods that haven't yet been expanded.
6632
6633 2003-01-31 Adrian Bunk <bunk@fs.tum.de>
6634
6635         Fix for java/4269:
6636
6637         * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO
6638         to fix bootstrap on sparc-unknown-netbsdelf1.5.
6639         * jcf-parse.c: Likewise.
6640
6641 2003-01-31  Mark Wielaard  <mark@klomp.org>
6642
6643         * gjavah.c (throwable_p): Allocate 1 more byte for string.
6644
6645 2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
6646
6647         * class.c (make_class): Use BINFO_ELTS.
6648         (set_super_info): Likewse.
6649         (add_interface_do): Likewise.
6650
6651 2003-01-30  Tom Tromey  <tromey@redhat.com>
6652
6653         * jcf-parse.c (read_class): Update identifier's class value if it
6654         changed during parsing.
6655
6656 2003-01-30  Loren James Rittle  <ljrittle@acm.org>
6657
6658         * Make-lang.in (po-generated): Find the targets in $(parsedir).
6659         Propagate change to all other rules as required.
6660         (java/parse-scan.o): Add explicit dependency on
6661         $(parsedir)/java/parse-scan.c .
6662
6663 2003-01-29  Tom Tromey  <tromey@redhat.com>
6664
6665         * parse.y (patch_assignment): Only transform the rhs of an
6666         assignment when compiling to native.
6667
6668 2003-01-28  Tom Tromey  <tromey@redhat.com>
6669
6670         * jcf-write.c (generate_bytecode_conditional): Typo fixes.
6671
6672 2003-01-28  Tom Tromey  <tromey@redhat.com>
6673
6674         * lex.c (java_lex): Don't include UEOF as part of token.
6675         (java_read_unicode): Error if \u sequence prematurely terminated.
6676
6677 2003-01-27  Tom Tromey  <tromey@redhat.com>
6678
6679         * parse.y (java_check_regular_methods): Check for construct after
6680         checking types in throws clause.
6681
6682 2003-01-24  Tom Tromey  <tromey@redhat.com>
6683
6684         * class.c (build_static_field_ref): Only a String or numeric field
6685         can fold to a constant.
6686
6687 2003-01-23  Tom Tromey  <tromey@redhat.com>
6688
6689         * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of
6690         file name in resource buffer.
6691
6692 2003-01-23  Tom Tromey  <tromey@redhat.com>
6693
6694         * expr.c (build_known_method_ref): Use method's context to find
6695         method table index.
6696
6697 2003-01-23  Tom Tromey  <tromey@redhat.com>
6698
6699         * constants.c (set_constant_entry): Allocated cleared memory.
6700
6701 2003-01-22  Tom Tromey  <tromey@redhat.com>
6702
6703         * java-tree.h: Don't use PARAMS.
6704         * resource.c: Add prototypes for all functions.
6705         (write_resource_constructor): Use `const char *' to avoid
6706         warning.
6707
6708 2003-01-22 Nathanael Nerode  <neroden@gcc.gnu.org>
6709
6710         * jcf-parse.c (process_zip_dir): Remove unused variable.
6711
6712 2003-01-22  Tom Tromey  <tromey@redhat.com>
6713
6714         * expr.c (build_invokeinterface): Abort if method's context is not
6715         an interface.
6716
6717 2003-01-22  Tom Tromey  <tromey@redhat.com>
6718
6719         * gcj.texi (Input and output files): Mention non-class entries.
6720         * decl.c (java_init_decl_processing): Call
6721         init_resource_processing.
6722         * java-tree.h (compile_resource_data, write_resource_constructor,
6723         compile_resource_file, init_resource_processing): Declare.
6724         * config-lang.in (gtfiles): Added resource.c.
6725         * Make-lang.in (gt-java-resource.h): New target.
6726         (JAVA_OBJS): Added resource.o.
6727         (java/resource.o): New target.
6728         * resource.c: New file.
6729         * class.c (compile_resource_file): Moved to resource.c.
6730         (registerResource_libfunc): Likewise.
6731         (utf8_decl_list): Mark with GTY; now static.
6732         * jcf-parse.c (classify_zip_file): New function.
6733         (parse_zip_file_entries): Use it; compile .properties files.
6734         (process_zip_dir): Use classify_zip_file and compute_class_name.
6735         Don't write class name into zip directory.
6736         (java_parse_file): Call write_resource_constructor.
6737         (compute_class_name): New function.
6738         * jcf-io.c (read_zip_member): Reindented.
6739
6740 2003-01-21  Tom Tromey  <tromey@redhat.com>
6741
6742         * class.c (supers_all_compiled): New function.
6743         (make_class_data): Use it.
6744
6745 2003-01-21  Tom Tromey  <tromey@redhat.com>
6746
6747         * parse.y (method_header): Native method can't be strictfp.
6748         No method can be transient or volatile.
6749
6750 2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6751
6752         Make-lang.in (jvspec.o-warn): Add -Wno-error.
6753
6754 2003-01-18  Kazu Hirata  <kazu@cs.umass.edu>
6755
6756         * check-init.c: Fix comment typos.
6757         * class.c: Likewise.
6758         * constants.c: Likewise.
6759         * decl.c: Likewise.
6760         * except.c: Likewise.
6761         * expr.c: Likewise.
6762         * java-except.h: Likewise.
6763         * java-tree.h: Likewise.
6764         * javaop.h: Likewise.
6765         * jcf-dump.c: Likewise.
6766         * jcf-io.c: Likewise.
6767         * jcf-parse.c: Likewise.
6768         * jcf-write.c: Likewise.
6769         * lang.c: Likewise.
6770         * mangle.c: Likewise.
6771         * typeck.c: Likewise.
6772         * verify.c: Likewise.
6773
6774 2003-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6775
6776         * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H).
6777         * jcf-write.c: Include "tm_p.h".
6778
6779 2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6780
6781         * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*.
6782
6783 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6784
6785         * builtins.c (java_build_function_call_expr): Renamed from
6786         build_function_call_expr.  All callers changed.
6787
6788         * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H).
6789         * jcf-parse.c: Include tm_p.h.
6790
6791         * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
6792         warning.
6793
6794 2003-01-14  Tom Tromey  <tromey@redhat.com>
6795
6796         * class.c (make_class_data): Check that super is compiled before
6797         building class reference to it.
6798
6799 2003-01-14  Andrew Haley  <aph@redhat.com>
6800
6801         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
6802         varargs function -- correct.
6803
6804 2003-01-14  Andrew Haley  <aph@redhat.com>
6805
6806         * decl.c (java_init_decl_processing): Temporarily back out previous patch.
6807
6808 2003-01-14  Andrew Haley  <aph@redhat.com>
6809
6810         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
6811         varargs function -- correct.
6812
6813         * parse.y (patch_assignment): Copy the rhs of an assignment into a
6814         temporary if the RHS is a reference.
6815
6816 2003-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6817
6818         * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf.
6819         * keyword.h: Regenerated.
6820
6821         * All Files: Convert to ISO C style function definitions.
6822
6823 2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
6824
6825         * parse.y (check_pkg_class_access): ANSIfy definition.
6826
6827 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6828
6829         * decl.c, parse-scan.y, parse.y: Don't cast return value of
6830         xmalloc et al.
6831
6832         * class.c, gjavah.c, parse.y, verify.c: Don't use PTR.
6833
6834 2003-01-09  Geoffrey Keating  <geoffk@apple.com>
6835
6836         Merge from pch-branch:
6837
6838         2002-12-02  Geoffrey Keating  <geoffk@apple.com>
6839
6840         * Make-lang.in (java/gjavah.o): Update dependencies.
6841         * gjavah.c: Include ggc.h.
6842
6843         2002-08-16  Geoffrey Keating  <geoffk@redhat.com>
6844
6845         * Make-lang.in (GCJH_OBJS): Add ggc-none.o.
6846         (JCFDUMP_OBJS): Add ggc-none.o.
6847         (java/jcf-dump.o): Depend on GGC_H.
6848         * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate
6849         CPool substructures.
6850         * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs.
6851         * jcf-dump.c: Include ggc.h.
6852
6853         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
6854
6855         * jcf.h (union cpool_entry): New.
6856         (struct CPool): Use gengtype to mark.  Change field 'data' to be
6857         an array of unions.
6858         (struct JCF): Use gengtype to mark.
6859         (CPOOL_UINT): Update for new cpool_entry type.
6860         (CPOOL_USHORT1): Likewise.
6861         (CPOOL_USHORT2): Likewise.
6862         (CPOOL_FINISH): Use GC to free cpool subfields.
6863         * parse.h (struct parser_ctxt): Mark field current_jcf.
6864         * lex.c (java_init_lex): Use GC to allocate struct JCF.
6865         * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type.
6866         (main_jcf): Use gengtype to mark.
6867         (ggc_mark_jcf): Delete.
6868         (get_constant): Update for new cpool_entry type.
6869         (give_name_to_class): Likewise.
6870         (get_class_constant): Likewise.
6871         (init_outgoing_cpool): Use GGC to allocate struct CPool.
6872         (java_parse_file): Use GGC to allocate struct JCF.
6873         (init_jcf_parse): Don't call ggc_add_root.
6874         * jcf-reader.c (jcf_parse_constant_pool): Update for new
6875         cpool_entry type.
6876         * java-tree.h (current_jcf): Use gengtype to mark.
6877         (CPOOL_UTF): Update for new cpool_entry type.
6878         (outgoing_cpool): Use gengtype to mark.
6879         (struct lang_type): GC struct JCF and struct CPool.
6880         * config-lang.in (gtfiles): Add jcf.h.
6881         * constants.c (find_tree_constant): New.
6882         (set_constant_entry): Allocate cpool subfields using GGC.  Update
6883         for new cpool_entry type.
6884         (find_constant1): Update for new cpool_entry type.
6885         (find_constant2): Likewise.
6886         (find_utf8_constant): Use find_tree_constant.
6887         (find_class_or_string_constant): Remove unnecessary cast to jword.
6888         Update for new cpool_entry type.
6889         (count_constant_pool_bytes): Update for new cpool_entry type.
6890         (write_constant_pool): Likewise.
6891         (alloc_name_constant): Use find_tree_constant.
6892         (build_constants_constructor): Update for new cpool_entry type.
6893
6894         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
6895
6896         * parse.y (mark_parser_ctxt): Delete.
6897         (goal): Don't use ggc_add_root.
6898         (create_new_parser_context): Use GC to allocate struct parser_ctxt.
6899         (java_pop_parser_context): Let GC free parser_ctxt.
6900         (java_parser_context_resume): Likewise.
6901         * parse.h (struct parser_ctxt): Use gengtype to mark.
6902         (ctxp): Likewise.
6903         (ctxp_for_generation): Likewise.
6904         * lex.h (struct java_lc_s): Mark for gengtype.
6905         (java_lexer): Rearrange for gengtype.
6906         * config-lang.in (gtfiles): Add lex.h, parse.h.
6907
6908 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6909
6910         * All Files: Remove PARAMS macro.
6911
6912         * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c,
6913         jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or
6914         `__STDC__' macros.
6915
6916         * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and
6917         VA_CLOSE.
6918
6919 2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
6920
6921         * Make-lang.in (java.install-common, java.uninstall,
6922         java.install-info, java.install-man): Prepend $(DESTDIR)
6923         to destination paths in all (un)installation commands.
6924         (java.install-common): Rewrite $(LN) command to support
6925         DESTDIR with "ln" as well as with "ln -s".
6926
6927 2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
6928
6929         * java-tree.h: Protect against multiple inclusion.
6930
6931 2003-01-07  Tom Tromey  <tromey@redhat.com>
6932
6933         * class.c (add_assume_compiled): Don't adjust parent if we're
6934         already at the root of tree.
6935
6936 2003-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6937
6938         * lang.c (dump_compound_expr): Prototype.
6939
6940 2003-01-03  Tom Tromey  <tromey@redhat.com>
6941
6942         Fix for PR java/8712:
6943         * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR,
6944         when simply checking against `null'.
6945
6946 2003-01-03  Tom Tromey  <tromey@redhat.com>
6947
6948         * gcj.texi (Standard Properties): Document http.proxyHost and
6949         http.proxyPort.
6950
6951         * gcj.texi (GNU Classpath Properties): Document new properties.
6952
6953 2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
6954
6955         * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf,
6956         java/lang-options.h, java/mangle.c, java/mangle_name.c,
6957         java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years.
6958
6959 2003-01-01  Steven Bosscher  <s.bosscher@student.tudelft.nl>
6960
6961         * Make-lang.in, boehm.c, buffer.c,
6962           buffer.h, builtins.c, class.c,
6963           config-lang.in, constants.c,
6964           convert.h, decl.c, except.c,
6965           expr.c, java-except.h,
6966           java-tree.h, javaop.def,
6967           jcf-parse.c, jcf-write.c,
6968           jv-scan.c, jvgenmain.c,
6969           jvspec.c, keyword.gperf,
6970           keyword.h, lang-options.h,
6971           lang-specs.h, lang.c, lex.c,
6972           lex.h, mangle.c, mangle_name.c,
6973           parse-scan.y, parse.h, parse.y,
6974           typeck.c, verify.c, xref.c,
6975           xref.h: Replace "GNU CC" with
6976           "GCC" in the copyright header.
6977
6978         * check-init.c, gjavah.c, javaop.h,
6979           jcf-depend.c, jcf-dump.c, jcf-io.c,
6980           jcf-path.c, jcf-reader.c, jcf.h,
6981           zextract.c, zipfile.h: These files are
6982           "part of GCC". Also say "GCC" not "GNU CC".
6983
6984 2002-12-30  DJ Delorie  <dj@redhat.com>
6985
6986         * Make-lang.in: Protect against texi2pod/pod2man failing.
6987
6988 2002-12-28  Joseph S. Myers  <jsm@polyomino.org.uk>
6989
6990         * gcj.texi: Use @copying.
6991
6992 2002-12-27  Mark Mitchell  <mark@codesourcery.com>
6993
6994         * gjavah.c (print_name_for_stub_or_jni): Adjust call to
6995         print_cxx_classname.
6996         (print_cxx_classname): Add add_scope parameter.
6997         (print_class_decls): Do not emit a semicolon after the extern
6998         "Java" block.
6999         (process_file): Adjust calls to print_cxx_classname.
7000
7001 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
7002
7003         * gcj.texi: Include Cover Texts in man page.
7004
7005 2002-12-23  Jeff Sturm  <jsturm@one-point.com>
7006
7007         * class.c (build_static_field_ref): Check FIELD_FINAL.
7008
7009         * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF
7010         instead of current_constant_pool_data_ref.
7011         * java-tree.h (current_constant_pool_data_ref): Undefine.
7012         (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove.
7013         * jcf-parse.c (init_outgoing_cpool): Don't initialize
7014         current_constant_pool_data_ref.
7015
7016         * except.c (prepare_eh_table_type ): Use DECL_NAME of class type,
7017         not build_internal_class_name.
7018
7019         * parse.y (patch_incomplete_class_ref): Always emit `class$' method.
7020         Use it when class ref isn't certain to be compiled.
7021
7022 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
7023
7024         * gcj.texi: Include gcc-common.texi.
7025         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on
7026         $(srcdir)/doc/include/gcc-common.texi.
7027
7028 2002-12-22  Anthony Green  <green@redhat.com>
7029
7030         * gcj.texi (Limitations): Add note about org.xml.sax and
7031         org.w3c.dom.
7032
7033 2002-12-20  Tom Tromey  <tromey@redhat.com>
7034
7035         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case
7036         where minimum case value is Integer.MIN_VALUE.
7037         Fixes PR java/8955.
7038
7039 2002-12-18  Andrew Haley  <aph@redhat.com>
7040
7041         * parse.y (patch_invoke): Force evaluation order when `check' is
7042         set.  For PR libgcj/8945.
7043
7044 2002-12-16  Mark Mitchell  <mark@codesourcery.com>
7045
7046         * gcj.texi: Change version number to 3.4.
7047
7048 2002-12-05  Ranjit Mathew <rmathew@hotmail.com>
7049         Andrew Haley <aph@redhat.com>
7050
7051         * parse.y (source_end_java_method): Remove custom encoding of line
7052         numbers for a function decl before passing it to the back end.
7053
7054 2002-12-03  Andrew Haley  <aph@redhat.com>
7055
7056         * class.c (make_class_data): New field, "chain".
7057         * decl.c (java_init_decl_processing): Likewise.
7058
7059 2002-12-02  Tom Tromey  <tromey@redhat.com>
7060
7061         For PR java/8740:
7062         * parse.y (do_resolve_class): Handle qualified name via
7063         recursion.
7064
7065 2002-11-30  Zack Weinberg  <zack@codesourcery.com>
7066
7067         * boehm.c, buffer.c, builtins.c, check-init.c, class.c,
7068         constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c,
7069         jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c,
7070         jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c,
7071         parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c:
7072         Include coretypes.h and tm.h.
7073         * Make-lang.in: Update dependencies.
7074
7075 2002-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7076
7077         * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant.
7078
7079 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
7080
7081         * jcf-reader.c: Don't expand JCF_readu4 inside the
7082         expansion of JCF_SKIP.
7083
7084 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
7085
7086         * jcf-reader.c: Don't expand JCF_readu4 inside the
7087         expansion of JCF_SKIP.
7088
7089 2002-11-22  Tom Tromey  <tromey@redhat.com>
7090
7091         * parse.y (patch_binop): Cast right hand side of shift expression
7092         to `int'.  Fixes PR java/8676.
7093
7094 2002-11-22  Ranjit Mathew <rmathew@hotmail.com>
7095             Andrew Haley <aph@redhat.com>
7096
7097         * gcc/java/jcf-write.c (write_classfile): Remove target
7098         class file, if it exists, before renaming the temporary
7099         class file to it.
7100
7101 2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>
7102
7103         * jvspec.c (lang_specific_spec_functions): New.
7104
7105 2002-11-18  Tom Tromey  <tromey@redhat.com>
7106
7107         Fix for PR java/7912:
7108         * expr.c (can_widen_reference_to): Allow cast of array to
7109         Cloneable or Serializable.
7110         * java-tree.h (java_lang_cloneable_identifier_node): Declare.
7111         (java_io_serializable_identifier_node): Likewise.
7112         * parse.y (java_lang_cloneable, java_io_serializable): Removed.
7113         (valid_ref_assignconv_cast_p): Use new identifier nodes.
7114         * lex.c (java_init_lex): Don't initialize java_lang_cloneable and
7115         java_io_serializable.
7116         * decl.c (java_init_decl_processing): Initialize
7117         java_lang_cloneable_identifier_node and
7118         java_io_serializable_identifier_node.
7119         (java_lang_cloneable_identifier_node): New global.
7120         (java_io_serializable_identifier_node): Likewise.
7121
7122 2002-11-14  Jens-Michael Hoffmann  <jensmh@gmx.de>
7123
7124         * buffer.c: Remove unnecessary casts.
7125         * check-init.c: Likewise.
7126         * class.c: Likewise.
7127         * constants.c: Likewise.
7128         * decl.c: Likewise.
7129         * except.c: Likewise.
7130         * gjavah.c: Likewise.
7131         * jcf-io.c: Likewise.
7132         * jcf-parse.c: Likewise.
7133         * jcf-path.c: Likewise.
7134         * jvspec.c: Likewise.
7135         * lang.c: Likewise.
7136         * lex.c: Likewise.
7137         * verify.c: Likewise.
7138
7139 2002-11-06  Tom Tromey  <tromey@redhat.com>
7140
7141         * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in
7142         a JNI header.
7143
7144 2002-11-05  Tom Tromey  <tromey@redhat.com>
7145
7146         Fix for PR java/6388.
7147         * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while.
7148         * java-tree.h (enum java_tree_index): New values
7149         JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE.
7150         (decimal_int_max, decimal_long_max): New defines.
7151         * lex.c (yylex): Rewrote range checking.  Sign extend literals.
7152         (error_if_numeric_overflow): Rewrote range checking.
7153         * decl.c (java_init_decl_processing): Initialize decimal_int_max,
7154         decimal_long_max.
7155
7156 2002-11-02  Tom Tromey  <tromey@redhat.com>
7157
7158         * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE.
7159
7160         * class.c (make_method_value): Put class name, not signature, into
7161         `throws' field.  For PR java/8415.
7162
7163 2002-10-24  Tom Tromey  <tromey@redhat.com>
7164
7165         * gcj.texi (Invoking gij): Document --showversion.
7166         (Standard Properties): java.library.path now set.
7167
7168 2002-10-23  Tom Tromey  <tromey@redhat.com>
7169
7170         * gjavah.c (decode_signature_piece): In JNI mode, print
7171         `jobjectArray' when array depth is nonzero.
7172         Fixes PR java/8296.
7173
7174 2002-10-15  Andrew Haley  <aph@redhat.com>
7175
7176         * parse.y (patch_invoke): Call force_evaluation_order on a static
7177         arg list.
7178         (resolve_qualified_expression_name): Call force_evaluation_order
7179         on a arg list that is part of a Qualified Expression Name.
7180
7181         * lang.c (dump_compound_expr): New.
7182         (java_dump_tree): New.
7183
7184 2002-10-20  Ranjit Mathew <rmathew@hotmail.com>
7185
7186         * gcj.texi: Added item describing the GCJ runtime property
7187         "gnu.gcj.progname".
7188
7189 2002-10-15  Richard Henderson  <rth@redhat.com>
7190
7191         * jcf-parse.c (get_constant): Fix type warning.
7192
7193 2002-10-15  Andrew Haley  <aph@redhat.com>
7194
7195         * java-tree.h (java_inlining_merge_static_initializers): Declare.
7196         (java_inlining_map_static_initializers): Declare.
7197
7198 2002-10-14  Andrew Haley  <aph@redhat.com>
7199
7200         * tree-inline.c (remap_block): All local class initialization
7201         flags go in the outermost scope.
7202         (expand_call_inline): Call java_inlining_map_static_initializers.
7203         (expand_call_inline): Call java_inlining_merge_static_initializers.
7204         * java/lang.c (merge_init_test_initialization): New.
7205         (java_inlining_merge_static_initializers): New.
7206         (inline_init_test_initialization): New.
7207         (java_inlining_map_static_initializers): New.
7208
7209 2002-10-11  Mark Wielaard  <mark@klomp.org>
7210
7211         * gcj.texi (Compatibility): Add Limitations and Extensions section.
7212
7213 2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7214
7215         * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.
7216
7217 2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7218
7219         * parse.y (merge_string_cste): Add parentheses around & within |.
7220
7221 2002-10-08  Tom Tromey  <tromey@redhat.com>
7222
7223         * parse.y (variable_declarator_id): Simplify error path for
7224         array declarator error.  For PR java/8003.
7225
7226 2002-10-08  Zack Weinberg  <zack@codesourcery.com>
7227
7228         * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with
7229         bug_report_url.
7230
7231 2002-10-08  Andrew Haley  <aph@redhat.com>
7232
7233         * parse.y (attach_init_test_initialization_flags): Check for
7234         error_mark_node.
7235
7236 2002-10-07  Anthony Green  <green@redhat.com>
7237
7238         * parse.y (merge_string_cste): Fix bug in string concatenation.
7239
7240 2002-10-03  Michael Koch  <konqueror@gmx.de>
7241
7242         * gcj.texi (Standard properties):
7243         Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit.
7244
7245 2002-10-02  Roger Sayle  <roger@eyesopen.com>
7246
7247         PR optimization/6627
7248         * lang.c (java_init): If storing the vbit in function
7249         pointers, ensure that force_align_functions_log is atleast
7250         one to aid compatability with g++ vtables.
7251
7252 2002-10-01  Nathan Sidwell  <nathan@codesourcery.com>
7253
7254         * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
7255         foul of type-based aliasing.
7256
7257 2002-09-30  Anthony Green  <green@redhat.com>
7258
7259         * gcj.texi (Invoking jv-scan): Fix texinfo.
7260
7261 2002-09-28  Anthony Green  <green@redhat.com>
7262
7263         * gcj.texi (Invoking jv-scan): Add --no-assert documentation.
7264         (Code Generation): Add -fno-assert documentation.
7265         * jv-scan.c (flag_assert): New global.
7266         (options): Add assert option.
7267         (help): Add --no-assert documentation.
7268         * parse-scan.y (flag_assert): New global.
7269         * lang.c (lang_f_options): Add -fassert/-fno-assert support.
7270         (flag_assert): New global.
7271         * java-tree.h (flag_assert): New global.
7272         * lex.c (java_lex): Obey flag_assert.
7273         * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when
7274         calling cc1.
7275
7276 2002-09-26  Andrew Haley  <aph@redhat.com>
7277
7278         * expr.c (build_java_array_length_access): Check for null pointer.
7279         * expr.c (expand_java_arrayload): Likewise.
7280
7281 2002-09-21  Richard Henderson  <rth@redhat.com>
7282
7283         * jcf-parse.c (get_constant): Decode from IEEE no matter
7284         what the target format.
7285
7286 2002-09-20  Kazu Hirata  <kazu@cs.umass.edu>
7287
7288         * ChangeLog: Follow spelling conventions.
7289         * class.c: Likewise.
7290         * decl.c: Likewise.
7291         * expr.c: Likewise.
7292         * gjavah.c: Likewise.
7293         * java-tree.h: Likewise.
7294         * jcf-dump.c: Likewise.
7295         * jcf-parse.c: Likewise.
7296         * jvspec.c: Likewise.
7297         * lang.c: Likewise.
7298         * mangle.c: Likewise.
7299         * parse.y: Likewise.
7300
7301 2002-09-17  Tom Tromey  <tromey@redhat.com>
7302
7303         * lex.c (java_read_unicode_collapsing_terminators): Handle case
7304         where \r appears at EOF.  Fixes PR java/7950.
7305
7306 2002-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7307
7308         * jvspec.c (lang_specific_driver): Remove unused variable.
7309
7310 2002-09-16  Geoffrey Keating  <geoffk@apple.com>
7311
7312         * java-tree.h (union lang_tree_node): Add chain_next option.
7313
7314 2002-09-16  Richard Henderson  <rth@redhat.com>
7315
7316         * jcf-parse.c (get_constant): Runtime check for IEEE format;
7317         use new real.h interface.
7318         * jcf-write.c (find_constant_index): Use new real.h interface.
7319         * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.
7320
7321 2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>
7322
7323         * lang.c: Follow spelling conventions.
7324
7325 2002-09-11  Per Bothner  <per@bothner.com>
7326
7327         * parse.y (fold_constant_for_init):  If a VAR_DECL, convert numerical
7328         constant to the type of the field.
7329         (java_complete_tree):  Remove now-redundant code.
7330
7331         * parse.y (fold_constant_for_init):  'null' is not a constant expr.
7332
7333 2002-09-03  Jesse Rosenstock  <jmr@ugcs.caltech.edu>
7334
7335         For PR java/5794:
7336         * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the
7337         return label if a ret instruction for the jsr has been reached.
7338
7339 2002-09-09  Ranjit Mathew  <rmathew@hotmail.com>
7340
7341         * parse.y (DIR_SEPARATOR): Don't define.
7342         (check_class_interface_creation): Use IS_DIR_SEPARATOR.
7343
7344 2002-08-28  Andrew Haley  <aph@redhat.com>
7345
7346         * verify.c (verify_jvm_instructions): Allow exception handler
7347         inside code that is being protected, but generate a warning.
7348         * except.c (link_handler): Initialize `expanded' in new eh_range.
7349         (binding_depth, is_class_level, current_pc): Declare extern.
7350
7351 2002-09-01  Mark Wielaard <mark@klomp.org>
7352
7353         * gcj.texi: Add chapter about system properties.
7354         Fixed some typos.
7355
7356 2002-08-26  Tom Tromey  <tromey@redhat.com>
7357
7358         * parse.y (try_builtin_assignconv): Allow narrowing primitive
7359         conversion if RHS_TYPE is byte, short, or char.
7360
7361 2002-08-22  Tom Tromey  <tromey@redhat.com>
7362
7363         * gcj.texi (Invoking gij): Document -cp and -classpath.
7364
7365 2002-08-21  Tom Tromey  <tromey@redhat.com>
7366
7367         * Make-lang.in (java/jcf-path.o): Use $(datadir), not
7368         $(prefix)/share.  For PR libgcj/7633.
7369
7370         For PR java/6005 and PR java/7611:
7371         * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define.
7372         (java_can_use_bit_fields_p): New function.
7373
7374 2002-08-16  Tom Tromey  <tromey@redhat.com>
7375
7376         * gcj.texi (Class Initialization): Mention class initialization of
7377         arrays.
7378
7379 2002-07-30  Andrew Haley  <aph@cambridge.redhat.com>
7380
7381         * Make-lang.in (java-tree-inline.o): New.
7382         (JAVA_OBJS): Add java-tree-inline.o.
7383         * parse.y (source_end_java_method): Call java_optimize_inline.
7384         (java_expand_method_bodies): Save method's tree in
7385         DECL_SAVED_TREE.
7386         (add_stmt_to_compound): Keep track of the number of statments.
7387         * lang.c (java_init): Enable flag_inline_trees.
7388         (java_post_options): If flag_inline_functions is on, enable
7389         flag_inline_trees instread.
7390         (decl_constant_value): New.
7391         (java_tree_inlining_walk_subtrees): New.
7392         * java-tree.h (DECL_NUM_STMTS): New macro.
7393         (java_optimize_inline): Declare.
7394         * expr.c (java_expand_expr): Allow a BLOCK to return a value.
7395         Handle a LABEL_EXPR.
7396         * decl.c (build_result_decl): If we already have a DECL_RESULT
7397         don't make another.
7398         (dump_function): New.
7399         (java_optimize_inline): New.
7400         (dump_function): New.
7401
7402 2002-08-13  Jesse Rosenstock  <jmr@fulcrummicro.com>
7403
7404         For PR java/7483:
7405         * parse.y (build_assertion): Invert return from
7406         desiredAssertionStatus.
7407
7408 2002-08-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7409
7410         * jcf-write.c (get_access_flags): Return correct access flags for
7411         private and protected inner classes.
7412
7413 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
7414
7415         * java/Make-lang.in (java.mostlyclean): Remove coverage files.
7416
7417 2002-08-05  Geoffrey Keating  <geoffk@redhat.com>
7418
7419         * mangle_name.c: Don't include obstack.h twice.
7420         * xref.c: Don't include obstack.h.
7421
7422 2002-08-04  Geoffrey Keating  <geoffk@redhat.com>
7423
7424         * class.c: (permanent_obstack): Delete declaration.
7425         * constants.c: (permanent_obstack): Delete declaration.
7426         * except.c: (permanent_obstack): Delete declaration.
7427         * expr.c: (permanent_obstack): Delete declaration.
7428         * jcf-parse.c: (permanent_obstack): Delete declaration.
7429         (saveable_obstack): Delete declaration.
7430         * parse.h: (permanent_obstack): Delete declaration.
7431         * typeck.c: (permanent_obstack): Delete declaration.
7432
7433 2002-08-04  Joseph S. Myers  <jsm@polyomino.org.uk>
7434
7435         * gcj.texi (version-gcc): Increase to 3.3.
7436
7437 2002-07-22  Tom Tromey  <tromey@redhat.com>
7438
7439         * lex.c (java_lex): Check for `e' or `E' after 0.
7440
7441 2002-07-21  Richard Henderson  <rth@redhat.com>
7442
7443         * lang.c (java_unsafe_for_reeval): New.
7444         (LANG_HOOKS_UNSAFE_FOR_REEVAL): New.
7445
7446 2002-07-21  Neil Booth  <neil@daikokuya.co.uk>
7447
7448         * jcf-path.c (GET_ENV_PATH_LIST): Remove.
7449         (jcf_path_init): Use GET_ENVIRONMENT.
7450
7451 2002-07-10  Roger Sayle  <roger@eyesopen.com>
7452             Zack Weinberg <zack@codesourcery.com>
7453
7454         * builtins.c (initialize_builtins): Remove defines that
7455         handled C/C++ specific junk hereby removed from builtins.def.
7456
7457 2002-07-07  Neil Booth  <neil@daikokuya.co.uk>
7458
7459         * lang.c (java_post_options): Update prototype.
7460
7461 2002-07-05  Roger Sayle  <roger@eyesopen.com>
7462
7463         * builtins.c (initialize_builtins): Ignore the additional
7464         parameter to DEF_BUILTIN.  Handle more C/C++ specific junk in
7465         the builtins.def file.
7466
7467 2002-07-01  Tom Tromey  <tromey@redhat.com>
7468
7469         For PR libgcj/7073:
7470         * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE
7471         specially.
7472
7473 2002-07-01  Roger Sayle  <roger@eyesopen.com>
7474
7475         * java/decl.c (builtin_function): Accept additional parameter.
7476         (java_init_decl_processing): Pass an additional NULL_TREE
7477         argument to builtin_function.
7478
7479 2002-06-29  T.J. Mather  <tjmather@maxmind.com>
7480
7481         * gcj.texi: Fixed gcj invocation example so that it compiles.
7482
7483 2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7484
7485         * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11.
7486         * parse.y (mark_parser_ctxt): Likewise.
7487         (check_modifiers, declare_local_variables): Avoid incorrect
7488         hardcoded constant 10.
7489
7490         * lex.c (java_read_char): Avoid "comparison is always true"
7491         warning.
7492
7493 2002-06-25  Andreas Schwab  <schwab@suse.de>
7494
7495         * expr.c (JSR): Avoid undefined operation on PC.
7496
7497 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7498
7499         * decl.c (clear_binding_level): Const-ify.
7500
7501 2002-06-13  Akim Demaille  <akim@epita.fr>
7502
7503         * parse.y (class_declaration, interface_declaration): Make sure
7504         all their rules have an action, in order to avoid meaningless `$$
7505         = $1' and their type clashes.
7506
7507 2002-06-11  Tom Tromey  <tromey@redhat.com>
7508
7509         * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC.
7510         * parse-scan.y (statement_without_trailing_substatement): Added
7511         assert_statement.
7512         (assert_statement): New rule.
7513         * java-tree.h (struct lang_type) [assertions]: New field.
7514         (TYPE_USES_ASSERTIONS): New macro.
7515         (CLASS_USES_ASSERTIONS): Likewise.
7516         (FIELD_SYNTHETIC): New define.
7517         * lex.c (java_lval;): Added ASSERT_TK.
7518         * parse.y (ASSERT_TK): Added.
7519         (statement_without_trailing_substatement): Added assert_statement.
7520         (assert_statement): New rule.
7521         (build_assertion): New function.
7522         (maybe_generate_pre_expand_clinit): Create and initialize
7523         $assertionsDisabled.
7524         (lookup_package_type): Removed decl.
7525         * keyword.h: Rebuilt.
7526         * keyword.gperf (assert): New token.
7527
7528 2002-06-10  Akim Demaille  <akim@epita.fr>
7529
7530         * parse.y (interface_type_list, class_member_declaration)
7531         (unary_expression_not_plus_minus): Remove duplicate %type.
7532         Whitespace changes.
7533
7534 2002-06-09  Tom Tromey  <tromey@redhat.com>
7535
7536         * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H.
7537
7538         * parse.y (method_header): Give error message in all cases.
7539         Fixes PR java/6865.
7540
7541 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7542
7543         Don't use RTL inlining. Fix for PR java/6820.
7544         * lang.c (LANG_HOOKS_POST_OPTIONS): Define.
7545         (flag_really_inline): New.
7546         (java_decode_option): Set flag_really_inline if -finline-functions
7547         is seen.
7548         (java_post_options): New function. Turn off inlining unless
7549         flag_really_inline is set.
7550
7551 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7552
7553         * gjavah.c (throwable_p): Accept argument as either a classname or
7554         signature fragment. Create null-terminated classname string for super
7555         when calling itself recursively.
7556         (decode_signature_piece): Skip first character from class name
7557         signature when calling throwable_p.
7558
7559 2002-06-08  H.J. Lu  (hjl@gnu.org)
7560
7561         * jcf-path.c (jcf_path_init): Allocate 1 more byte for string.
7562
7563 2002-06-04  Tom Tromey  <tromey@redhat.com>
7564
7565         * jcf-write.c (perform_relocations): Optmize a goto to a goto.
7566
7567 2002-06-04  Michael Koch  <konqueror@gmx.de>
7568
7569         * gcj.texi (Input Options): Fixed typo.
7570
7571 2002-06-04  Zack Weinberg  <zack@codesourcery.com>
7572
7573         * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y,
7574         typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks,
7575         all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE,
7576         and all now-pointless local variables.  Rename other local
7577         variables to reflect their not being handles.
7578
7579         * java-tree.h, jcf-dump.c, jcf-io.c: Remove all
7580         #if JCF_USE_STDIO blocks.
7581
7582         * parse.y: Add missing semicolon at end of rule.
7583
7584 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
7585
7586         * check-init.c (attach_initialized_static_class): Delete, unused.
7587         * parse.y: Use htab_t instead of struct hashtable, update
7588         all uses.
7589         * java-tree.h: Include hashtab.h instead of hash.h.
7590         (struct lang_decl_func): Use htab_t, set up for gengtype.
7591         (struct init_test_hash_entry): Delete.
7592         (struct treetreehash_entry): New.
7593         (java_treetreehash_find): New
7594         (java_treetreehash_new): New prototype.
7595         (java_treetreehash_create): New prototype.
7596         (java_mark_tree): Delete prototype.
7597         (java_hash_hash_tree_node): Delete prototype.
7598         (java_hash_compare_tree_node): Delete prototype.
7599         (attach_initialized_static_class): Delete prototype.
7600         * expr.c (build_class_init): Update to use java_treetreehash
7601         functions.
7602         (java_expand_expr): Update to use htab_t.
7603         (emit_init_test_initialization): Likewise.
7604         * decl.c (java_mark_tree): Delete.
7605         * class.c (init_test_hash_newfunc): Delete.
7606         (java_hash_hash_tree_node): Delete.
7607         (java_hash_compare_tree_node): Delete.
7608         (add_method_1): Update to use java_treetreehash functions.
7609         (JAVA_TREEHASHHASH_H): New macro.
7610         (java_treetreehash_hash): New function.
7611         (java_treetreehash_compare): New function.
7612         (java_treetreehash_find): New function.
7613         (java_treetreehash_new): New function.
7614         (java_treetreehash_create): New function.
7615         * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H.
7616
7617         * Make-lang.in (java/parse.o): Depend on debug.h.
7618         * java-tree.h (struct lang_identifier): Use gengtype.
7619         (union lang_tree_node): New.
7620         (struct lang_decl_func): Use gengtype.
7621         (struct lang_decl_var): Likewise.
7622         (struct lang_decl): Likewise.
7623         * parse.y: Include debug.h.
7624         * lang.c (LANG_HOOKS_MARK_TREE): Delete.
7625
7626         * lang.c (struct language_function): New dummy structure.
7627
7628         * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set
7629         descriminator for DECL_LANG_SPECIFIC.
7630         (struct lang_decl_func): Rename from struct lang_decl.
7631         (enum lang_decl_desc): New.
7632         (struct lang_decl): Make it a union.  Update all the accessor macros.
7633         (struct lang_type): Use gengtype.
7634         * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC.
7635         * decl.c (java_dup_lang_specific_decl): All lang_decl structures
7636         are now the same size.
7637         (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC;
7638         use discriminator to mark DECL_LANG_SPECIFIC.
7639
7640         * Make-lang.in (gt-java-builtins.h): New rule.
7641         (java/builtins.o): Add dependency on gt-<filename>.h.
7642         * builtins.c: Use gengtype for roots.
7643         (union string_or_tree): Use gengtype.
7644         (struct builtin_record): Use gengtype.
7645         * config-lang.in (gtfiles): Add builtins.c.
7646
7647         * Make-lang.in (gt-java-class.h, gt-java-constants.h,
7648         gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h,
7649         gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h,
7650         gt-java-parse.h, gtype-java.h): Add rules to generate.
7651         (parse.o): Add dependency on gt-java-parse.h, gt-java.h.
7652         (class.o): Add dependency on gt-*.h.
7653         (constants.o): Likewise.
7654         (decl.o): Likewise.
7655         (expr.o): Likewise.
7656         (jcf-parse.o): Likewise.
7657         (jcf-write.o): Likewise.
7658         (lang.o): Likewise.
7659         * config-lang.in (gtfiles): New.
7660         * class.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7661         * constants.c: Replace uses of ggc_add_* with GTY markers.
7662         Include gt-*.h.
7663         * decl.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7664         * expr.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7665         * java-tree.h: Replace uses of ggc_add_* with GTY markers.
7666         * jcf-parse.c: Replace uses of ggc_add_* with GTY markers.
7667         Include gt-*.h.
7668         * jcf-write.c: Replace uses of ggc_add_* with GTY markers.
7669         Include gt-*.h.
7670         * lang.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7671         * mangle.c: Replace uses of ggc_add_* with GTY markers.  Include
7672         gt-*.h.
7673         * parse.y: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
7674         Include gtype-java.h.
7675
7676 2002-06-02  Tom Tromey  <tromey@redhat.com>
7677
7678         Fix for PR java/5913:
7679         * parse.y (patch_binop): Call patch_string on op1.
7680
7681 2002-06-02  Tom Tromey  <tromey@redhat.com>
7682
7683         Fix for PR java/1343, PR java/6336:
7684         * parse.y (make_nested_class_name): Remove extraneous `else'; fix
7685         formatting.  Changed return type.
7686         (anonymous_class_counter): Moved to top of file.
7687         (maybe_make_nested_class_name): Append number to class name for
7688         function-local classes.
7689
7690 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
7691
7692         * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h.
7693         * Make-lang.in: Update dependency lists.
7694
7695 2002-05-18  Mark Mitchell  <mark@codesourcery.com>
7696
7697         * gjavah.c (throwable_p): Do not free the name of the class after
7698         passing it to find_class.
7699         * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition.
7700         * jcf-io.c (dirent.h): Include it.
7701         (fnmatch.h): Likewise.
7702         (compare_path): New function.
7703         (java_or_class_file): Likewise.
7704         (memoized_dirlist_entry): New type.
7705         (memoized_dirlist_lookup_eq): New function.
7706         (memoized_dirlists): New variable.
7707         (caching_stat): New function.
7708         (memoized_class_lookup_eq): New function.
7709         (memoized_class_lookups): Likewise.
7710         (find_class): Use memoized_class_lookups and caching_stat.
7711         * jcf.h (JCF_USE_SCANDIR): Define.
7712         * parse.y (java_expand_classes): Write the class files in reverse
7713         order.
7714
7715 2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7716
7717         * Make-lang.in: Allow for PWDCMD to override hardcoded pwd.
7718
7719 2002-05-13  Mark Mitchell  <mark@codesourcery.com>
7720
7721         * jcf-write.c (write_classfile): Unlink the temporary file if it
7722         cannot be renamed.  Use concat to build up the name of the
7723         temporary file.
7724
7725 2002-05-08  Mark Mitchell  <mark@codesourcery.com>
7726
7727         * jcf-write.c (write_classfile): Write the file to a
7728         temporary file and then rename it.
7729
7730 2002-05-07  Tom Tromey  <tromey@redhat.com>
7731
7732         * gjavah.c (throwable_p): Use xstrdup, not strdup.
7733
7734         Fix for PR java/1200:
7735         * gjavah.c (throwable_p): New function.
7736         (decode_signature_piece): Use it.  A `WeakReference' isn't the
7737         same as a `jweak'.
7738         Include hashtab.h.
7739         (gcjh_streq): New function.
7740
7741 2002-05-07  Andreas Jaeger  <aj@suse.de>
7742
7743         * parse.y (finish_for_loop): Fix if statement.
7744
7745 2002-05-06  Tom Tromey  <tromey@redhat.com>
7746
7747         Fix for PR java/5941:
7748         * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for
7749         loop update expression.
7750         (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR.
7751         * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro.
7752
7753 2002-05-04  Mark Wielaard  <mark@klomp.org>
7754
7755         For PR java/6519:
7756         * parse.y (build_string_concatenation): Return just op1 only when op2
7757         is null and op1 is a STRING_CST, otherwise always construct a
7758         StringBuffer.
7759
7760 2002-04-27  Tom Tromey  <tromey@redhat.com>
7761
7762         For PR java/6382:
7763         * parse.y (string_convert_int_cst): New function.
7764         (merge_string_cste): Use it.
7765
7766 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
7767
7768         * java-tree.h (java_parse_file): Update.
7769         (java_set_yydebug): Remove.
7770         * jcf-parse.c (yydebug): Remove.
7771         (java_set_yydebug): Die.
7772         (java_parse_file): Update.
7773         * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
7774
7775 2002-04-24  Tom Tromey  <tromey@redhat.com>
7776
7777         For PR java/6425:
7778         * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose
7779         EXPR_WFL_QUALIFICATION of qual_wfl.
7780
7781 2002-04-23  Per Bothner  <per@bothner.com>
7782
7783         * expr.c (PRE_JSR):  Call NOTE_LABEL for return address.
7784         * java-tree.h (BCODE_RETURN_TARGET):  Removed - never set.
7785         (BCODE_TARGET):  Remove BCODE_RETURN_TARGET.
7786
7787 2002-04-23  Tom Tromey  <tromey@redhat.com>
7788
7789         For PR java/6314:
7790         * jvspec.c (lang_specific_driver): Use --resource, not -R.  Also
7791         recognize `-fcompile-resource='.
7792         * gcj.texi (Invoking gcj): Use --resource, not -R.  Expanded text
7793         a bit.
7794
7795 2002-04-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
7796
7797         * jcf-parse.c: (yyparse): Don't prepend "./" to relative
7798         paths. Fixes PR java/2791.
7799
7800 2002-04-19  Andrew Haley  <aph@redhat.com>
7801
7802         * jcf-write.c (push_long_const): lo, hi: New variables.
7803         Use rshift_double to extract the high part of a 64-bit long.
7804         Use WORD_TO_INT to extract the low part.
7805
7806         * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned
7807         HOST_WIDE_INT for num.  Use JPOOL_UINT to get it.
7808         CONSTANT_Double: Use JPOOL_UINT to get both halve of a double.
7809
7810 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
7811
7812         * typeck.c (incomplete_type_error): Remove.
7813
7814 2002-04-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7815
7816         * class.c (make_class_data): Set DECL_ALIGN on static class data,
7817         for hash synchronization.
7818         * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
7819         * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
7820         class_type_node.
7821
7822 2002-04-16  Mark Wielaard  <mark@klomp.org>
7823
7824         * jcf-write.c (generate_bytecode_insns): Only write const_0 if not
7825         negative zero.
7826
7827 2002-04-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7828
7829         Fix for PR java/6294:
7830         * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner
7831         interfaces.
7832
7833 2002-04-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7834
7835         Fix for PR java/6085:
7836         * parse.y (patch_method_invocation): Always use build_access_to_thisn
7837         to get enclosing "this" argument for inner-class constructor
7838         invocation. Pass correct arguments to build_access_to_thisn.
7839
7840 2002-04-10  Andreas Jaeger  <aj@suse.de>
7841
7842         * gcj.texi (Input Options): Fix extdirs patch.
7843
7844 2002-04-10  Anthony Green  <green@redhat.com>
7845
7846         * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration.
7847
7848 2002-04-09  Anthony Green  <green@redhat.com>
7849
7850         * gcj.texi (Input Options): Add --extdirs documentation.
7851         * jcf-dump.c (OPT_extdirs): New macro.
7852         (options): Add extdirs option.
7853         (help): Describe --extdirs.
7854         (main): Handle OPT_extdirs.
7855         * gjavah.c (OPT_extdirs): New macro.
7856         (options): Add extdirs option.
7857         (help): Describe --extdirs.
7858         (main): Handle OPT_extdirs.
7859         * jcf-path.c (jcf_path_init): Add extdirs support.
7860         (jcf_path_extdirs_arg): New function.
7861         (extensions): New variable to hold extensions path entries.
7862         * jvspec.c: Remove -fextdirs= when compiling main().
7863         * lang.c (java_decode_option): Handle -fextdirs=.
7864         * jcf.h (jcf_path_extdirs_arg): Declare new function.
7865         * Make-lang.in: Compile jcf-path with version info for use in
7866         identifying the appropriate libgcj.jar.
7867
7868 2002-04-08  Tom Tromey  <tromey@redhat.com>
7869
7870         For PR libgcj/5303:
7871         * .cvsignore: Added rmic.1 and rmiregistry.1.
7872         * gcj.texi (Top): Link to new nodes.
7873         (Invoking rmic): New node.
7874         (Invoking rmiregistry): Likewise.
7875         * Make-lang.in (java.generated-manpages): Added rmic.1 and
7876         rmiregistry.1.
7877         (java.maintainer-clean): Likewise.
7878         ($(srcdir)/java/rmic.1): New target.
7879         ($(srcdir)/java/rmiregistry.1): Likewise.
7880         (java.install-man): Handle rmic.1 and rmiregistry.1.
7881
7882 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7883
7884         * gcj.texi (Invocation): Update JvAttachCurrentThread documentation.
7885         Add note about handling uncaught exceptions. Add an exception handler
7886         to example.
7887
7888 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7889
7890         * parse.y (resolve_qualified_expression_name): Clear "from_super" flag
7891         after using it to patch CALL_EXPR.
7892
7893 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7894
7895         * gcj.texi (Invocation): Document CNI invocation API.
7896
7897 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
7898
7899         * expr.c (truthvalue_conversion): Rename.  Update.
7900         (expand_compare): Update.
7901         * java-tree.h (java_truthvalue_conversion): New.
7902         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
7903
7904 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
7905
7906         * java-tree.h (java_mark_addressable): New.
7907         * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
7908         * typeck.c (mark_addressable): Rename, update.
7909
7910 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
7911
7912         * expr.c (build_java_binop): Update.
7913         * java-tree.h (java_signed_type, java_unsigned_type,
7914         java_signed_or_unsigned_type): Update.
7915         * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
7916         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
7917         * parse.y (patch_binop): Update.
7918         * typeck.c (signed_or_unsigned_type, unsigned_type,
7919         signed_type): Update.
7920
7921 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
7922
7923         * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
7924         (java_dummy_print): Remove.
7925         (lang_print_error): Rename.  Exit early if inhibiting output.
7926         (inhibit_error_printing_function): New.
7927         (java_init): Don't set hook.
7928         (lang_init_source): Use new boolean.
7929
7930 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
7931
7932         * parse.y (do_resolve_class): Fix infinite recursion.
7933
7934 2002-03-29  Tom Tromey  <tromey@redhat.com>
7935
7936         * parse.y (check_inner_circular_reference): Ignore incomplete
7937         types.
7938
7939 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
7940
7941         * Make-lang.in (builtins.o): Update.
7942         * boehm.c (get_boehm_type_descriptor): Update.
7943         * builtins.c: Include langhooks.h.
7944         * decl.c (java_init_decl_processing): Update.
7945         * java-tree.h (java_type_for_mode, java_type_for_size): New.
7946         * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
7947         Redefine.
7948         * typeck.c (type_for_mode, type_for_size): Update.
7949
7950 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
7951
7952         * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING.
7953
7954 2002-03-28  Tom Tromey  <tromey@redhat.com>
7955
7956         * except.c (expand_end_java_handler): If the handler type is NULL,
7957         use java.lang.Throwable.  Fixes PR java/5986.
7958
7959 2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
7960
7961         Fix for PR java/4715:
7962         * jcf-parse.c (parse_source_file_3): New function.
7963         (read_class): Call it.
7964         (java_parse_file): Likewise.
7965
7966 2002-03-28  Jan Hubicka  <jh@suse.cz>
7967
7968         * java/lang.c (java_init_options): Set flag_trapping_math to 0.
7969
7970 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7971
7972         * parse.y (resolve_package): Initialize "decl".
7973         (lookup_package_type): Remove unused function.
7974
7975 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7976
7977         Fix for PR java/5993:
7978         * parse.y (resolve_package): Return the decl if resolution was
7979         successful. Don't special case "java.lang" and "java.lang.reflect"
7980         packages. Set type_name to the merged identifier.
7981         (resolved_qualified_expression_name): Print error using "name" if
7982         resolve_package returns NULL_TREE.
7983
7984 2002-03-27  Tom Tromey  <tromey@redhat.com>
7985
7986         * expr.c (expand_invoke): Don't generate null pointer check if
7987         we're calling <init>.
7988
7989 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
7990
7991         * expr.c (java_lang_expand_expr): Rename java_expand_expr,
7992         fix prototype.
7993         * java-tree.h (java_lang_expand_expr): Similarly.
7994         * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
7995         (java_init): Don't set hook.
7996
7997 2002-03-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7998
7999         Fix for PR java/5850:
8000         * parse.y (lookup_field_wrapper): Call itself recursively for enclosing
8001         context if field was not found in the current scope.
8002         * expr.c (lookup_field): Don't look in enclosing contexts.
8003
8004 2002-03-26  Tom Tromey  <tromey@redhat.com>
8005
8006         Fix for PR java/5942:
8007         * parse.y (init_src_parse): Added sanity check.
8008         * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12
8009         elements, not 11.
8010
8011 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
8012
8013         * decl.c (lang_mark_tree): Rename java_mark_tree.
8014         * java-tree.h (java_mark_tree): New.
8015         * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
8016
8017 2002-03-25  Zack Weinberg  <zack@codesourcery.com>
8018
8019         * lex.c: Change java_perform_atof to take normal parameters
8020         instead of a pointer to a parameter block.  Call it directly
8021         from java_lex.
8022
8023 2002-03-22  Mark Wielaard  <mark@klomp.org>
8024
8025         Fix for PR java/5368:
8026         * parse.y (resolve_qualified_expression_name): Use decl not field_decl
8027         when printing error message.
8028
8029 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
8030
8031         * decl.c (maybe_build_cleanup): Remove.
8032
8033 2002-03-22  Tom Tromey  <tromey@redhat.com>
8034
8035         Andrew Haley  <aph@cambridge.redhat.com>
8036
8037         * expr.c (build_field_ref): Don't build a check if the field is a
8038         member of `this'.
8039
8040 2002-03-21  Eric Blake  <ebb9@email.byu.edu>
8041
8042         Fix for PR java/6026:
8043         * lex.c (java_lex): Fix parsing of consecutive floats.
8044
8045 2002-03-21  Tom Tromey  <tromey@redhat.com>
8046
8047         * parse.y (build_access_to_thisn): Stop when FROM is not an inner
8048         class.
8049
8050 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
8051
8052         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
8053         insert_block, getdecls, kept_level_p, global_bindings_p): New.
8054
8055 2002-03-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
8056
8057         * gcj.texi: @code{gcj} becomes @command{gcj}.
8058         @code{gcc} becomes @command{gcc}.
8059         GcjRaw changed to gnu.gcc.RawData.
8060
8061 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
8062
8063         * decl.c (start_java_method): Use new hook.
8064         * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
8065         (java_init): Remove old hook.
8066
8067 2002-03-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
8068
8069         * builtins.c (define_builtin): Do nothing if `type' is null.
8070         Fixes PR java/5876.
8071
8072 2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8073
8074         * parse.y (parser_check_super_interface): Fix error message
8075         grammar/order.
8076
8077 2002-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8078
8079         * jcf-parse.c (get_constant): Delete unused variables.
8080
8081 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
8082
8083         * java-tree.h (java_parse_file): New.
8084         * jcf-parse.c (yyparse): Rename java_parse_file.
8085         * lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
8086
8087 2002-03-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8088
8089         * parse.y (craft_constructor): Return the constructor decl.
8090         (java_expand_classes): Update comments.
8091         (lookup_method_invoke): Call fix_constructors immediately for
8092         anonymous class. Fixes PR java/5935.
8093
8094 2002-03-15  Anthony Green  <green@redhat.com>
8095
8096         * jcf-parse.c (yyparse): Don't emit class registration
8097         constructor when compiling resource files.
8098
8099 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8100
8101         * lang.c (java_tree_code_type, java_tree_code_length,
8102         tree_code_name): Delete.
8103         (tree_code_type, tree_code_length, tree_code_name): Define.
8104         (java_init): Don't try to copy into the various tree_code
8105         arrays.
8106
8107 2002-03-12  Tom Tromey  <tromey@redhat.com>
8108
8109         * jcf-parse.c (get_constant) [CONSTANT_String]: String values are
8110         UTF-8, not UCS-2.  Fixes PR java/5923.
8111
8112         * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is
8113         a call_expr wrapped in a convert.  Fixes PR java/5848.
8114
8115 2002-03-12  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8116
8117         * jcf-write.c (write_classfile): Improve error strings.
8118
8119 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
8120
8121         * lex.c: Adjust comments to GNU standards.
8122
8123 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
8124
8125         Fix for PR java/5902:
8126         * lex.c (java_lex): Fix parsing of literals.
8127
8128 2002-03-11  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8129
8130         * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr
8131         to prevent it getting evaluated twice in the store checking case.
8132         * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when
8133         examining OBJECT.
8134
8135 2002-03-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8136
8137         * decl.c (java_init_decl_processing): Make sure class_type_node
8138         alignment is not less than 64 bits if hash synchronization is enabled.
8139
8140 2002-03-08  Per Bothner  <per@bothner.com>
8141
8142         * parse.y (java_complete_lhs):  Check if patch_assignment
8143         returned an error-mark.
8144
8145         * parse.y (try_builtin_assignconv):  Don't special-case zero.
8146
8147 2002-03-08  Per Bothner  <per@bothner.com>
8148
8149         Fix for PR java/5812.
8150         * expr.c (build_java_jsr):  Take pc arguments, and do lookup_label
8151         here instead of in JSR macro.  Likewise with load_type_state call.
8152         Do the latter on if the return_pc has been verified (the jsr returns).
8153         (JSR):  Now just call build_java_jsr.
8154
8155 2002-03-07  Jeff Sturm  <jsturm@one-point.com>
8156
8157         * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define.
8158         (java.install-common): Link native driver to
8159         JAVA_TARGET_INSTALL_NAME.
8160
8161 2002-03-05  David Billinghurst <David.Billinghurst@riotinto.com>
8162
8163         * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED
8164         * builtins.c(sin_builtin): Likewise
8165         * builtins.c(sqrt_builtin): Likewise
8166
8167 2002-03-03  Zack Weinberg  <zack@codesourcery.com>
8168
8169         * java/expr.c, java/jcf-parse.c, java/lex.c:
8170         Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
8171         REAL_ARITHMETIC blocks unconditional.  Delete some further
8172         #ifdef blocks predicated on REAL_ARITHMETIC.
8173
8174 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8175
8176         * class.c (init_class_processing): Use ARRAY_SIZE in lieu of
8177         explicit sizeof/sizeof.
8178         * decl.c (java_init_decl_processing): Likewise.
8179         * jcf-parse.c (init_jcf_parse): Likewise.
8180         * parse.y (init_src_parse): Likewise.
8181
8182 2002-03-02  Per Bothner  <per@bothner.com>
8183
8184         Make --CLASSPATH by a synonym for --classpath and -classpath.
8185         Implement --bootclasspath.
8186         * jcf-path.c (classpath_u):  Rename static variable to classpath_user.
8187         (classpath_l):  Remove.
8188         (jcf_path_CLASSPATH_arg):  Remove.
8189         (jcf_path_bootclasspath_arg):  New function.
8190         (jcf_path_seal):  Simplify accordingly.
8191
8192         * jcf.h (jcf_path_bootclasspath_arg):  New declarations.
8193         (jcf_path_CLASSPATH):  Remove declaration.
8194         * jvspec.c (jvgenmain_spec):  Also accept -fbootclasspath*.
8195         (lang_specific_driver):  Translate -bootclasspath.
8196         * lang-options.h:  Add --bootclasspath.  Update --CLASSPATH.
8197         * lang.c (decode_lang_options):  Do jcf_path_init first.
8198         Handle -fCLASSPATH same as -fclasspath.  Also process -fbootclasspath.
8199         * gjavah.c:  Also handle --bootclasspath.
8200         Handle --CLASSPATH as a synonum for --classpath.
8201         * jcf-dump.c: Likewise.
8202
8203         "." is not part of system path, but is the default for --classpath.
8204         * jcf-path.c (jcf_path_init):  Don't add "." to sys_dirs.
8205         (jcf_path_seal):  Add "." if no CLASSPATH specified.
8206
8207         * gcj.texi:  Document changes.
8208
8209 2002-03-01  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8210
8211         * expr.c (build_java_arraystore_check): Fix formatting.
8212
8213 2002-02-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
8214
8215         Fix for PR java/5758, java/5632:
8216         * jcf-parse.c (load_class): Renamed local variable, consider `.' an
8217         inner-class separator too.
8218         * parse.y (do_resolve_class): New local `decl_result.'
8219         Progressively build a name for what can have been loaded.
8220
8221 2002-02-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8222
8223         * expr.c (java_array_data_offset): Removed function.
8224         (JAVA_ARRAY_LENGTH_OFFSET): Removed macro.
8225         (build_java_array_length_access): Obtain "length" value using a
8226         COMPONENT_REF, instead of INDIRECT_REF and arithmetic.
8227         (build_java_arrayaccess): Correct comment. Access "data" using a
8228         COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF.
8229         (build_java_arraystore_check): New function.
8230         (expand_java_arraystore): Use build_java_arraystore_check.
8231         * parse.y (patch_assignment): Simplify code to insert a store check
8232         when lvalue is an ARRAY_REF. Use build_java_arraystore_check.
8233         * check-init.c (check_init): Update to reflect that an array length
8234         access is now a COMPONENT_REF.
8235         * gcj.texi (Code Generation): Improve documentation of
8236         -fno-bounds-check. Add documentation for -fno-store-check.
8237         * java-tree.h (flag_store_check): Declare.
8238         (build_java_arraystore_check): Declare.
8239         * lang.c (flag_store_check): Initialize to 1.
8240         (lang_f_options): Add store-check option.
8241         * jvspec.c: Don't pass store-check option to jvgenmain.
8242         * lang-options.h: Add help string for -fno-store-check.
8243
8244 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
8245
8246         * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl.
8247         * java-tree.h (java_dup_lang_specific_decl): New.
8248         * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
8249
8250 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
8251
8252         * builtins.c, decl.c: Delete traditional-mode-related code
8253         copied from the C front end but not used, or used only to
8254         permit the compiler to link.
8255
8256 2002-02-22  Tom Tromey  <tromey@redhat.com>
8257
8258         Fix for PR java/2369:
8259         * jvspec.c (verify_class_name): New function.
8260         (lang_specific_driver): Call it.
8261         (JAVA_START_CHAR_P): New macro.
8262         (JAVA_PART_CHAR_P): Likewise.
8263
8264 2002-02-22  Per Bothner  <per@bothner.com>
8265
8266         * class.c:  Change vtable to be more compatible with g++ v3 abi.
8267         (get_dispatch_table):  Prepend offset-to-top (always 0) and
8268         type_info pointer (currently unimplemented hence NULL) to vtable.
8269         Specifically, prepend offset-to-top and typeinfo ptr (currently null).
8270         (make_class_data):  Variable dtable_start_offset is sizeof 2 pointers.
8271         Adjust vtable pointers by dtable_start_offse - i.e. skip new words.
8272         (build_dtable_decl):  Add declarations for new fields.
8273
8274 2002-02-20  Per Bothner  <per@bothner.com>
8275
8276         * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call
8277         to finit$ (otherwise generate_bytecode_insns drops it). However, we
8278         don't need to set it on the COMPOUND_EXPR - the caller does that.
8279
8280 2002-02-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
8281
8282         * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option
8283         `--CLASSPATH' becomes `--classpath.'
8284         * gjavah.c: Likewise.
8285         * jcf-dump.c: Likewise.
8286         * lang-options.h: Likewise.
8287         * lang.c: Likewise.
8288         * jcf-path.c: Updated comment.
8289         (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.'
8290         (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.'
8291         * jcf.h (jcf_path_CLASSPATH_arg): Ditto.
8292         (jcf_path_CLASSPATH_arg): Ditto.
8293         (classpath_u): Updated leading comment.
8294
8295 2002-02-20  Per Bothner  <per@bothner.com>
8296
8297         * builtins.c (check_for_builtin):  New function.
8298         (build_call_or_builtin):  Remove.
8299         * java-tree.h:  Update accordingly.
8300         * expr.c (expand_invoke):  Use build + check_for_builtin instead
8301         of build_call_or_builtin.
8302         * parse.y (patch_invoke):  Likewise.  This avoids needlessly creating
8303         a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER
8304         flag (which had caused jcf-write to incorrectly emit invokevirtual).
8305
8306 2002-02-17  Tom Tromey  <tromey@redhat.com>
8307
8308         * java-tree.h (TYPE_STRICTFP): New macro.
8309         (struct lang_type) [strictfp]: New field.
8310         (CLASS_STRICTFP): New macro.
8311         (METHOD_STRICTFP): New macro.
8312         (struct lang_decl) [strictfp]: New field.
8313         * parse.y (method_header): Disallow strictfp constructor or
8314         abstract method.
8315         (STRICT_TK): Move before MODIFIER_TK.
8316         * parse.h (CLASS_MODIFIERS): Added ACC_STRICT.
8317         (METHOD_MODIFIERS): Likewise.
8318         (INTERFACE_MODIFIERS): Likewise.
8319         * jcf-write.c (get_access_flags): Likewise.
8320         * class.c (set_class_decl_access_flags): Recognize ACC_STRICT.
8321         (add_method_1): Likewise.
8322         (get_access_flags_from_decl): Likewise.
8323         * jcf-dump.c (print_access_flags): Print in standard order.  Also,
8324         recognize strictfp flag.
8325         * jcf.h (ACC_STRICT): New define.
8326
8327 2002-02-12  David Billinghurst <Davod.Billinghurst@riotinto.com>
8328
8329         * class.c(build_utf8_ref): Move declaration of decl_size
8330
8331 2002-02-07  Tom Tromey  <tromey@redhat.com>
8332
8333         * gcj.texi (Input Options): --CLASSPATH does not suppress system
8334         path.
8335
8336 2002-02-04  Anthony Green  <green@redhat.com>
8337
8338         * class.c (build_utf8_ref): Put UTF-8 constants into merged
8339         sections if available.
8340
8341 2002-02-04  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8342
8343         * parse.y (java_expand_classes): Fix typo in static field loop.
8344
8345 2002-02-02  Richard Henderson  <rth@redhat.com>
8346
8347         * class.c (add_field): Mark static fields external.
8348         (build_class_ref): Remove redundant set.
8349         * parse.y (java_expand_classes): Mark static fields of classes
8350         to be compiled as local.
8351         * jcf-parse.c (parse_class_file): Likewise.
8352
8353 2002-02-02  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
8354
8355         * gcj.texi (About CNI): New node.
8356
8357 2002-02-01  Craig Rodrigues  <rodrigc@gcc.gnu.org>
8358
8359         PR java/5080
8360         * jcf-parse.c : Check for HAVE_LOCALE_H before using
8361         setlocale() with LC_CTYPE as a parameter.
8362         * jv-scan.c: Same.
8363
8364 2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>
8365
8366         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
8367         Follow GNU Coding Standards for --version.
8368
8369 2002-01-28  Tom Tromey  <tromey@redhat.com>
8370
8371         * expr.c (build_jni_stub): Ensure storage for `meth' is
8372         generated.
8373         * parse.y (java_complete_expand_methods): Set
8374         current_function_decl before building JNI stub.
8375
8376 2002-01-26 Andreas Tobler <a.tobler@schweiz.ch>
8377
8378         * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not
8379         BUILT_IN_SQRTF.
8380
8381 2002-01-22  Tom Tromey  <tromey@redhat.com>
8382
8383         * decl.c (java_init_decl_processing): Use add_predefined_file.
8384         Predefine RawData.java.
8385         (predef_filenames): Removed.
8386         (java_init_decl_processing): Don't register predef_filenames.
8387         * jcf-parse.c (add_predefined_file): New function.
8388         (predefined_filename_p): Rewrote.
8389         (predefined_filename_p): No longer static.
8390         * decl.c (java_init_decl_processing): Call initialize_builtins.
8391         * Make-lang.in (JAVA_OBJS): Added builtins.o.
8392         (java/builtins.o): New target.
8393         * builtins.c: New file.
8394         * parse.y (patch_invoke): Use build_call_or_builtin.
8395         * java-tree.h (build_call_or_builtin): Declare.
8396         (initialize_builtins): Declare.
8397         (java_set_exception_lang_code): Removed unused declaration.
8398         (PREDEF_FILENAMES_SIZE): Removed.
8399         (java_tree_index): Added JTI_PREDEF_FILENAMES.
8400         (predef_filenames): New define.
8401         (add_predefined_file): Declare.
8402         (predefined_filename_p): Declare.
8403         * expr.c (expand_invoke): Use build_call_or_builtin.
8404
8405 2002-01-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8406
8407         * parse.y (patch_switch_statement): Fix format specifier.
8408
8409 2002-01-16  Tom Tromey  <tromey@redhat.com>
8410
8411         More for PR java/5365:
8412         * gjavah.c (print_stub_or_jni): Cause exception to be thrown by
8413         default.
8414         (process_file): Generate include for
8415         java.lang.UnsupportedOperationExceptions.
8416
8417 2002-01-15  Andreas Jaeger  <aj@suse.de>
8418
8419         * .cvsignore: Add man pages.
8420
8421 2002-01-15  Tom Tromey  <tromey@redhat.com>
8422
8423         Fix for PR java/5365:
8424         * gjavah.c (process_file): Turn class name into a file name.
8425
8426 2002-01-14  Matthias Klose  <doko@debian.org>
8427
8428         * gcj.texi: Fix whitespace and formatting errors in the
8429         synopsis of the man pages. Update copyright.
8430
8431 2002-01-14  Tom Tromey  <tromey@redhat.com>
8432
8433         For PR libgcj/5303:
8434         * Make-lang.in (java.install-man): Handle jv-convert man page.
8435         (java.generated-manpages): Added jv-convert.1.
8436         (java.uninstall): Remove jv-convert.1.
8437         (java.maintainer-clean): Likewise.
8438         ($(srcdir)/java/jv-convert.1): New target.
8439         * gcj.texi (Top): Link to jv-convert node.
8440         (Individual utilities): Likewise.
8441         (Invoking jv-convert): New node.
8442
8443 2001-01-10  Jeff Sturm  <jsturm@one-point.com>
8444             Martin Kahlert  <martin.kahlert@infineon.com>
8445
8446         * jcf-parse.c (get_constant): Don't swap lo/hi for big
8447         endian targets when HOST_BITS_PER_WIDE_INT >= 64.
8448
8449 2002-01-03  Graham Stott  <grahams@redhat.com>
8450
8451         * class.c (compile_resource_file): Update copyright date.
8452         Constify filename parameter.
8453         (java-tree.h): Update copyright date.
8454         (compile_resource_file): Constify filename parameter.
8455
8456 2002-01-03  Graham Stott  <grahams@redhat.com>
8457
8458         * gcc/jcf-parse.c: Update copyright date.
8459         (yyparse): Constify resource_filename.
8460
8461 2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8462
8463         * parse.y (src_parse_roots): Don't needlessly zero init.
8464
8465 2001-12-31  Tom Tromey  <tromey@redhat.com>
8466
8467         * parse.y (dump_java_tree): New function.
8468         (source_end_java_method): Call it.
8469         (end_class_declaration): Likewise.
8470         * lang.c (java_decode_option): Call dump_switch_p.
8471
8472 2001-12-28  Tom Tromey  <tromey@redhat.com>
8473
8474         * gen-table.pl: Don't process characters after \uffff.  Added
8475         comment pointing to input file.
8476
8477 2001-12-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8478
8479         * gen-table.pl: Const-ify output.  Document the location of a
8480         suitable unicode input file.
8481
8482         * chartables.h: Regenerate.
8483
8484 2001-12-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8485
8486         * chartables.h: Const-ify.
8487         * gjavah.c (options): Likewise.
8488         * jcf-dump.c (options): Likewise.
8489         * jv-scan.c (options): Likewise.
8490         * lex.c (java_start_char_p, java_part_char_p): Likewise.
8491         * parse.y (binop_lookup): Likewise.
8492
8493 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8494
8495         * Make-lang.in (keyword.h): Pass -C to gperf to const-ify
8496         the static arrays that are output.
8497         * jvspec.c (jvgenmain_spec): Make static.
8498         * keyword.gperf (struct java_keyword, java_keyword): Const-ify.
8499         * keyword.h: Regenerate.
8500         * lang.c (string_option, process_option_with_no, lang_f_options,
8501         lang_W_options): Const-ify.
8502         * lex.c (java_lex): Likewise.
8503
8504 2001-12-21  Richard Henderson  <rth@redhat.com>
8505
8506         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into ..
8507         (get_boehm_type_descriptor): ... here.  Arrange for the
8508         TREE_TYPE to get set properly.
8509
8510 2001-12-21  Richard Henderson  <rth@redhat.com>
8511
8512         * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor
8513         only if the target requires collect2.
8514
8515         * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL.
8516
8517 2001-12-20  Tom Tromey  <tromey@redhat.com>
8518
8519         For PR java/4509:
8520         * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
8521         CAN_COMPLETE_NORMALLY for the node.
8522         * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
8523         generate code for second branch if first branch can't complete
8524         normally.
8525         (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
8526         the loop head if the loop body can't complete normally.
8527
8528 2001-12-20  Tom Tromey  <tromey@redhat.com>
8529
8530         For PR java/4766:
8531         * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle
8532         case where `finally' clause can't complete normally.
8533
8534 2001-12-20  Tom Tromey  <tromey@redhat.com>
8535
8536         Fixes PR java/5057:
8537         * parse.y (analyze_clinit_body): Added this_class parameter.
8538         Check for more cases where we must keep <clinit>.
8539         (maybe_yank_clinit): Cleaned up flow control.
8540
8541 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8542
8543         * decl.c (java_init_decl_processing): Don't initialize
8544         finit_leg_identifier_node.
8545         * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE.
8546         (finit_leg_identifier_node): Remove.
8547         (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE.
8548
8549 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8550
8551         * mangle.c (mangle_member_name): Don't special-case for
8552         NO_DOLLAR_IN_LABEL.
8553         * mangle_name.c (unicode_mangling_length): Likewise.
8554         (append_unicode_mangled_name): Likewise.
8555         * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL
8556         code.
8557
8558 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8559
8560         * expr.c (build_java_array_length_access): Don't force null pointer
8561         check unless flag_check_references is set.
8562
8563 2001-12-20  Tom Tromey  <tromey@redhat.com>
8564
8565         Fix for PR java/3417:
8566         * parse.y (patch_assignment): Added special processing for
8567         `return'.
8568         (patch_return): Don't convert booleans to integers, and don't
8569         special-case `null'.
8570
8571 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
8572
8573         * config-lang.in (diff_excludes): Remove.
8574
8575 2001-12-17  Joseph S. Myers  <jsm28@cam.ac.uk>
8576
8577         * gcj.texi: Update link to GCC manual.
8578
8579 2001-12-17  Tom Tromey  <tromey@redhat.com>
8580
8581         * parse.y (link_nested_class_to_enclosing): Removed useless
8582         statement.
8583
8584 2001-12-16  Tom Tromey  <tromey@redhat.com>
8585
8586         * mangle.c (mangle_method_decl): Never emit `C2' constructor.
8587         Fixes PR java/5088.
8588
8589 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
8590
8591         * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h,
8592         jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix
8593         spelling errors.
8594
8595 2001-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8596
8597         * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value.
8598
8599 2001-12-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8600
8601         * decl.c (java_init_decl_processing): Build otable_type correctly.
8602         otable_decl is an otable_type.
8603
8604 2001-12-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8605
8606         * java-tree.h (otable_methods, otable_decl, otable_syms_decl,
8607         otable_type, otable_ptr_type, method_symbol_type,
8608         method_symbols_array_type, method_symbols_array_ptr_type): New
8609         field/global tree definitions.
8610         (flag_indirect_dispatch): New flag.
8611         * decl.c (java_init_decl_processing): Initialize new otable and
8612         otable_syms type nodes and decls. Add new field "index" to
8613         method_type_node.
8614         * class.c (build_method_symbols_entry): New function.
8615         (make_method_value): Set "index" to to method's vtable index for
8616         virtual methods when indirect-dispatch is not used.
8617         (make_class_data): For indirect-dispatch, don't emit the dtable_decl,
8618         and set vtable_method_count to -1. Set otable and otable_syms field
8619         if indirect-dispatch is used and there was something to put in them.
8620         (build_method_symbols_entry): New function.
8621         (emit_offset_symbol_table): New function.
8622         * expr.c (get_offset_table_index): New function.
8623         (build_invokevirtual): Build array reference to otable at the index
8624         returned by get_offset_table_index, and use the result as the vtable
8625         offset.
8626         (build_invokeinterface): Similar.
8627         * jcf-parse.c (yyparse): If indirect-dispatch, call
8628         emit_offset_symbol_table at the end of compilation, after all classes
8629         have been generated.
8630         * jvspec.c: Don't pass findirect-dispatch to jvgenmain.
8631         * lang.c (flag_indirect_dispatch): Define.
8632         (lang_f_options): Add indirect-dispatch flag.
8633
8634 2001-12-14  Matthias Klose  <doko@debian.org>
8635
8636         * gcj.texi: Markup for man page generation. Document missing
8637         options printed by <tool> --help.
8638         Terminate description of gij's -ms option with a dot.
8639         * Make-lang.in ($(srcdir)/java/*.1): New targets.
8640         (java.generated-manpages java.install-man, java.uninstall,
8641         java-maintainer-clean) Updated.
8642
8643 2001-12-14  Hans Boehm  <Hans_Boehm@hp.com>
8644
8645         * class.c (get_dispatch_table): Fix java vtable layout
8646         for TARGET_VTABLE_USES_DESCRIPTORS.
8647         * decl.c (java_init_decl_processing): Initialize
8648         alloc_no_finalizer_node, finalize_identifier_node.
8649         * expr.c (class_has_finalize_method): New function.
8650         (expand_java_NEW): Generate calls for finalizer-free allocation.
8651         (build_invokevirtual): Fix java vtable layout for
8652         TARGET_VTABLE_USES_DESCRIPTORS.
8653         * java-tree.h (enum java_tree_index): New entries:
8654         JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
8655         (alloc_no_finalizer_node, finalize_deintifier_node): New macros.
8656         (class_has_finalize_method): declare.
8657         (HAS_FINALIZER_P): New macro.
8658         * parse.y (patch_invoke): Generate calls for finalizer-free
8659         allocation.
8660
8661 2001-12-12  Matthias Klose  <doko@debian.org>
8662
8663         * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove
8664         whitespace at end of line.
8665
8666 2001-12-11  Tom Tromey  <tromey@redhat.com>
8667
8668         * lex.c (java_init_lex): Define wfl_to_string as
8669         gnu.gcj.runtime.StringBuffer unless generating bytecode.
8670
8671 2001-12-11  Jeff Sturm  <jsturm@one-point.com>
8672
8673         * class.c (make_method_value): Use null_pointer_node to
8674         represent empty exception table.
8675
8676 2001-12-10  Tom Tromey  <tromey@redhat.com>
8677
8678         * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT.
8679
8680 2001-12-10  Douglas B. Rupp  <rupp@gnat.com>
8681
8682         * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION).
8683
8684 2001-12-09  Per Bothner  <per@bothner.com>
8685
8686         * check-init.c (current_switch_has_default):  New static field.
8687         (check_init):  Case DEFAULT_EXPR: Set current_switch_has_default.
8688         Case SWITCH_EXPR:  Save/restore current_switch_has_default.  If no
8689         DEFAULT_EXPR seen, simulate a default alternative that copies state.
8690
8691 2001-12-09  Tom Tromey  <tromey@redhat.com>
8692
8693         * check-init.c (check_init): Don't allow pre- or post- increment
8694         or decrement of final variable.
8695         (final_assign_error): Minor error message rewording.
8696
8697 2001-12-08  Tom Tromey  <tromey@redhat.com>
8698
8699         * java-tree.h: Fixed typo.
8700
8701         * gjavah.c (decompile_method): Don't decompile to `return this'
8702         for static methods.
8703
8704         * gjavah.c (cxx_keywords): Re-sorted.
8705         * lex.c (cxx_keywords): Re-sorted.
8706
8707         * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything
8708         else.
8709
8710         * gjavah.c (print_namelet): Clear subnamelets.
8711         (HANDLE_METHOD): Set `method_printed' earlier.
8712
8713 2001-12-07  Tom Tromey  <tromey@redhat.com>
8714
8715         * lang.c (lang_f_options): Added
8716         optimize-static-class-initialization.
8717         (java_decode_option): Removed special case.
8718
8719 2001-12-07  Per Bothner  <per@bothner.com>
8720
8721         * check-init.c (check_init):  Fix typo freeing memory twice.
8722
8723 2001-12-05  Per Bothner  <per@bothner.com>
8724
8725         Restore support for static class initialization optimization.
8726         * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable.
8727         * check-init.c (check_int):  At end of BLOCK handle initialization
8728         blocks, which used to be done in java_complete_expand_method but did
8729         not handle the case where check_for_initialization might allocate
8730         more than a word of bits.
8731         * decl.c (lang_make_tree):  The smic field is now a tree.
8732         * expr.c (build_class_init):  Set DECL_FUNCTION_INIT_TEST_CLASS field.
8733         * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE):  New macro.
8734
8735         * parse.y (emit_test_initialization):  Combine hash_lookup calls.
8736
8737         * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND):
8738         Change from a hash table to a list.
8739         (struct_lang_decl):  Change field 'smic' to match.
8740         * class.c (add_method_1):  Initialize
8741         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list.
8742         * parse.y (adjust_init_test_initialization):  Removed - inlined into -
8743         (java_expand_method_bodies): -here, since 'smic' is now a list.
8744         (patch_invoke):  Add to 'smic' list, instead of hash_lookup.
8745
8746         * check-init.c (WORD_SIZE):  Use BITS_PER_UNIT.
8747
8748         * class.c (java_hash_compare_tree_node):  Fix casts.
8749
8750 2001-12-04  Per Bothner  <per@bothner.com>
8751
8752         * check-init.c:   Handle definite unassignment to finals in addition
8753         to definite assignment.
8754         (loop_current_locals):  New field.
8755         (num_current_locals, int start_current_locals, num_current_words):
8756         Make static.
8757         (SET_P, CLEAR_P, SET_BIT):  Add needed but missing parentheses.
8758         (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED,
8759         CLEAR_ASSIGNED, CLEAR_UNASSIGNED):  New macros.
8760         (get_variable_decl, check_final_reassigned):  New functions.
8761         (check_init, check_bool_init):  Modify as needed for checking finals.
8762         (check_for_initialization):  Take extra parameter and return void.
8763         Do extra start-up logic to check final fields for assignment.
8764         * parse.y (check_static_final_variable_assignment_flag,
8765         reset_static_final_variable_assignment_flag, check_final_assignment,
8766         check_final_variable_local_assignment_flag,
8767         reset_final_variable_indirect_assignment_flag,
8768         reset_final_variable_global_assignment_flag):  Remove functions.
8769         (java_complete_expand_methods, outer_field_access_fix,
8770         patch_assignment): Remove no-longer used logic.
8771         * java-tree.h (DECL_FIELD_FINAL_IUD):  Change usage and comments.
8772         * parse.y (register_fields, java_complete_tree):  Update accordingly.
8773
8774         * check-init.c (ALLOC_WORDS/FREE_WORDS):  Use xmalloc/free, not alloca.
8775         (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER):  New.
8776         (check_cond_init, check_bool2_init):  Use DECLARE_BUFFERS.
8777
8778         * java-tree.h (STATIC_CLASS_INIT_OPT_P):  Temporarily turn off.
8779
8780         * java-tree.h (DECL FINAL):  New bit-field.
8781         (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL):  Define as DECL_FINAL.
8782         (LOCAL_FINAL_P):  Use DECL_FINAL rather than old LOCAL_FINAL.
8783         (DECL_INIT_CALLS_THIS):  New macro.
8784         (struct lang_decl):  New bit-field init_calls_this.
8785         (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC,
8786         DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE
8787         (DECL_BIT_INDEX):  Change to use pointer_alias_set since we now
8788         use it for both local variables and final fields.
8789         (struct lang_decl_var):  Remove bit-fields final_liic, final_ierr,
8790         and local_final.
8791         (struct lang_type):  Remove hfv bit-field.
8792         (check_for_initialization):  Change to return void.
8793
8794         * java-tree.h (IS_ARRAY_LENGTH_ACCESS):  New macros.
8795         * expr.c (build_java_array_length_access):  Set IS_ARRAY_LENGTH_ACCESS.
8796         * check-init.c (final_assign_error):  New helper function.
8797         (check_final_reassigned, check_init):  Use it.
8798         (check_init):  Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length.
8799
8800         * java-tree.h (struct lang_decl, struct lang_decl_var):  Change all
8801         bit-fields to unsigned.
8802
8803 2001-12-03  Per Bothner  <per@bothner.com>
8804
8805         * parse.y (patch_binop):  Minor constant folding.
8806
8807         * parse.y (build_current_thisn):  Shorter 'buffer'.
8808
8809 2001-12-03  Per Bothner  <per@bothner.com>
8810
8811         * decl.c (complete_start_java_method):  Now generate TRY_FINALLY_EXPR
8812         instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR.
8813         * jcf-write.c (generate_bytecode_insns):  Remove support for
8814         CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used.
8815         * check-init.c (check_init):  Likewise.
8816
8817 2001-12-03  Per Bothner  <per@bothner.com>
8818
8819         * verify.c (subroutine_nesting):  New function.
8820         (verify_jvm_instructions):  Use it to fix logic for checking that
8821         we're done with the current subroutine.
8822
8823         * verify.c (verify_jvm_instruction): For OPCODE_checkcast and
8824         OPCODE_instanceof use POP_TYPE macro for better diagnostics.
8825
8826 2001-12-03  Per Bothner  <per@bothner.com>
8827
8828         * jcf.h:  Fix obvious typo in comment.
8829         * typeck.c (build_null_signature):  Add comment.
8830
8831 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
8832
8833         * expr.c: Remove leading capital from diagnostic messages, as
8834         per GNU coding standards.
8835         * jcf-io.c: Similarly.
8836         * jcf-parse.c: Similarly.
8837         * jv-scan.c: Similarly.
8838         * jvspec.c: Similarly.
8839         * mangle.c: Similarly.
8840
8841 2001-12-02  Tang Ching-Hui  <nicholas@cs.nthu.edu.tw>
8842             Alexandre Petit-Bianco  <apbianco@redhat.com>
8843
8844         * expr.c (build_java_arrayaccess): Call save_expr on array for
8845         correct evaluation order, modified comment, fixed indentation.
8846         * parse.y: (patch_assignment): Correctly extract the array base
8847         from the tree generate by build_java_arrayaccess, added comments.
8848         (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF.
8849         Fixes PR java/3096, PR java/3803, PR java/3965.
8850
8851 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
8852
8853         * expr.c (expand_byte_code): Remove trailing periods from messages.
8854         * jcf-parse.c (load_class, jcf_parse): Similarly.
8855         * jcf-write.c (generate_classfile): Similarly.
8856         * lex.c (java_lex): Similarly.
8857
8858 2001-11-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8859
8860         * class.c (add_interface_do): Set BINFO_VPTR_FIELD.
8861
8862 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
8863
8864         * Make-lang.in (java.generated-manpages): New dummy target.
8865
8866 2001-11-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
8867
8868         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
8869         ASM_FINAL_SPEC.
8870         (lang_specific_pre_link): Use set_input to set input_filename.
8871         Append `main' here.
8872         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
8873         (main): Fix definition.
8874         Strip `main' from classname.
8875         Fixes PR java/227.
8876
8877 2001-11-18  Roger Sayle <roger@eyesopen.com>
8878
8879         * parse.h (java_expand_switch): Remove old prototype.
8880
8881 2001-11-18  Tom Tromey  <tromey@redhat.com>
8882
8883         Fix for PR java/1401:
8884         * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where
8885         arg0 is null.
8886         (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case
8887         correctly.
8888
8889 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
8890
8891         * lang.c (finish_parse): Rename to java_finish.
8892         (LANG_HOOKS_FINISH, java_finish): New.
8893
8894 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
8895
8896         * decl.c (init_decl_processing): Rename java_init_decl_processing.
8897         * java-tree.h: New prototype.
8898         * lang.c (java_init): Update prototype.  Combine with old init_parse.
8899
8900 2001-11-13  Tom Tromey  <tromey@redhat.com>
8901
8902         * gjavah.c (method_signature): New global.
8903         (HANDLE_METHOD): Set it.
8904         (decompile_return_statement): New function.
8905         (decompile_method): Use it.
8906         (print_method_info): Removed `synth' argument.
8907
8908 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
8909
8910         * java-tree.h (java_set_yydebug): New.
8911         * jcf-parse.c (set_yydebug): Rename java_set_yydebug.
8912         * lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
8913         (print_lang_decl, print_lang_type, print_lang_identifier,
8914         print_lang_statistics, lang_print_xnode): Remove.
8915
8916 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
8917
8918         * jcf-parse.c (init_lex): Remove.
8919         * lang.c (language_string, lang_identify): Remove.
8920         (struct lang_hooks): Constify.
8921         (LANG_HOOKS_NAME): Override.
8922         (init_parse): Update.
8923
8924 2001-11-08  Andreas Franck  <afranck@gmx.de>
8925
8926         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle
8927         program_transform_name the way suggested by autoconf.
8928         (java.install-common): Also transform auxiliary program names with
8929         program_transform_name.
8930
8931 2001-11-08  Tom Tromey  <tromey@cygnus.com>
8932
8933         * parse.y (trap_overflow_corner_case): New rule.
8934         (unary_expression): Use it.
8935         * lex.c (java_init_lex): Don't set minus_seen.
8936         (yylex): Don't use minus_seen.  Communicate overflow to parser for
8937         it to handle.
8938         (error_if_numeric_overflow): New function.
8939         * parse.h (minus_seen): Removed field.
8940         (JAVA_RADIX10_FLAG): New define.
8941
8942 2001-11-07  Tom Tromey  <tromey@redhat.com>
8943
8944         Patch for PR java/1414:
8945         * parse.y (case_label_list): New global.
8946         (goal): Register case_label_list with GC.
8947         (java_complete_lhs): Save new case on case_label_list.
8948         (patch_switch_statement): Check for duplicate case labels.
8949
8950 2001-11-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
8951
8952         * parse.y (patch_assignment): Removed unused third argument.
8953         (java_complete_lhs): Removed unused third argument to patch_assignment.
8954
8955 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
8956
8957         * lang.c: Include langhooks-def.h.
8958         * Make-lang.in: Update.
8959
8960 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
8961
8962         * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
8963
8964 2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8965
8966         * mangle.c (find_compression_record_match): Don't match compression
8967         records for package name elements unless they occur at the start of
8968         the name. Fix for PR java/4717.
8969
8970 2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8971
8972         * expr.c (expand_java_field_op): Don't special-case references to
8973         java.lang.PRIMTYPE.TYPE.
8974         (build_primtype_type_ref): Removed.
8975         * java-tree.h (build_primtype_type_ref): Remove prototype.
8976         * parse.y (maybe_build_primttype_type_ref): Removed.
8977         (complete_function_arguments): Don't special-case references to
8978         java.lang.PRIMTYPE.TYPE.
8979         (patch_assignment): Likewise.
8980         (array_constructor_check_entry): Likewise.
8981
8982 2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
8983
8984         * mangle.c (static tree compression_table): Fixed leading comment.
8985         * parse.h (struct parser_ctxt): Fixed field comment.
8986         * parse.y (check_pkg_class_access): New prototype, fixed leading
8987         comment, new parameter used to emit error only if passed as true.
8988         (parse_check_super): Pass extra argument to check_pkg_class_access.
8989         (do_resolve_class): Likewise.
8990         (process_imports): Likewise.
8991         (read_import_dir): Fixed indentation.
8992         (find_in_imports_on_demand): New local class_type_name. Local
8993         node_to_use deleted. while loop changed into for loop. Report
8994         multiple definition only for accessible classes. Improved error
8995         message.
8996         (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
8997         assigned to parameter list, fixed indentation. while loop changed
8998         into for loop, restore TREE_CHAIN on local `tem' before the next
8999         iteration.
9000
9001 2001-10-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9002
9003         * lang.c (lang_get_alias_set): Deleted.
9004
9005 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9006
9007         * gjavah.c (jni_print_char): Fix thinko in last change.
9008
9009         * gjavah.c (jni_print_char, decode_signature_piece): Use
9010         safe-ctype macros and/or fold extra calls into fewer ones.
9011         * lex.c (java_read_unicode, java_lex): Likewise.
9012         * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
9013         JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
9014         * mangle_name.c (append_unicode_mangled_name,
9015         unicode_mangling_length): Likewise.
9016
9017 2001-10-17  Richard Henderson  <rth@redhat.com>
9018
9019         * Make-lang.in (java/lang.o): Depend on langhooks.h.
9020
9021 2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
9022
9023         * lang.c (langhooks.h): Included.
9024         (LANG_HOOKS_INIT): Redefined.
9025         (LANG_HOOKS_INIT_OPTIONS): Likewise.
9026         (LANG_HOOKS_DECODE_OPTION): Likewise.
9027         (struct lang_hooks lang_hooks): New initialization.
9028
9029 2001-10-11  Per Bothner  <per@bothner.com>
9030
9031         * parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
9032         rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
9033         The former is simpler, and jcf-write.c handles it better.
9034         (java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
9035         or WITH_CLEANUP_EXPR.
9036         * jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
9037         longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
9038
9039         * parse.y (patch_if_else_statement):  If the condition is constant,
9040         optimize away the test.
9041
9042 2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9043
9044         * parse.y (patch_cast): Call patch_string on the first operand of
9045         the incoming node, update it if necessary. Fixes PR java/4510.
9046
9047 2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
9048
9049         * parse.y (find_as_inner_class): Don't disregard the enclosing scope
9050         when name qualifier matches a package name.
9051
9052 2001-10-08  Tom Tromey  <tromey@redhat.com>
9053
9054         Fix for PR java/4489:
9055         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
9056         force a new label when computing `body_block'.
9057
9058 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9059
9060         * jcf-io.c (format_uint): Const-ify.
9061         * lang.c (java_tree_code_type, java_tree_code_length): Likewise.
9062         * lex.c (java_get_line_col): Likewise.
9063         * parse.y (build_incdec): Likewise.
9064
9065 2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
9066
9067         * parse.y (register_incomplete_type): Set JDEP_SUPER to be given
9068         a NULL enclosing context if appropriate. Fixes PR java/4466.
9069
9070 2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
9071
9072         * parse.y (patch_assignment): Use lvalue's original TYPE when
9073         building the final COMPOUND_EXPR.
9074         (try_reference_assignconv): Fixed leading comment.
9075
9076 2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
9077
9078         * parse.y (check_final_variable_indirect_assignment): For
9079         COMPOUND_EXPR, return only if finals were found initialized
9080         properly, if not, keep on checking.
9081         (check_final_variable_global_assignment_flag): New local
9082         error_found, set when appropriate and used to decide whether to
9083         report uninitialized finals. Fixed typo in comment.
9084
9085 2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
9086
9087         * decl.c (init_decl_processing): Fixed typo in predef_filenames
9088         last three initializations. Fixes PR java/4360.
9089
9090 2001-09-21  Richard Henderson  <rth@redhat.com>
9091
9092         * class.c (get_dispatch_table): Handle function descriptors.
9093         (build_dtable_decl): Likewise.
9094         * expr.c (build_invokevirtual): Likewise.
9095
9096 2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
9097
9098         * parse.y (patch_method_invocation): Build class initialization
9099         when static finals are used to qualify method invocation.
9100         Fixes PR java/4366.
9101
9102 2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>
9103
9104         * parse.h: (WFL_STRIP_BRACKET): Re-written using
9105         build_type_name_from_array_name.
9106         (STRING_STRIP_BRACKETS): New macro.
9107         * parse.y (build_type_name_from_array_name): New function.
9108         (array_creation_expression:): Accumulate []s instead of [s.
9109         (cast_expression:): Accumulate []s instead of [s after cast type
9110         name.
9111         (build_array_from_name): Local string deleted, use
9112         build_type_name_from_array_name.
9113         (build_unresolved_array_type): Accumulate []s instead of [s after
9114         type name.
9115         (register_fields): Fixed comment.
9116         (resolve_class): Local name, base deleted, new locals tname and
9117         array_dims. Use build_type_name_from_array_name. Use array_dims to
9118         build array type.
9119         (purify_type_name): Use STRING_STRIP_BRACKETS.
9120
9121 2001-09-18  Andreas Jaeger  <aj@suse.de>
9122
9123         * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
9124         * jv-scan.c: Likewise.
9125
9126 2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
9127
9128         * parse.y (patch_method_invocation): Inner class creation context
9129         check not enforced within constructors. Fixes PR java/1873.
9130
9131 2001-09-16  Tom Tromey  <tromey@redhat.com>
9132
9133         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
9134         NOTE_PUSH for single-case push.  Fixes PR java/4189.
9135
9136 2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
9137
9138         * java-tree.h (TYPE_IMPORT_LIST): New macro.
9139         (TYPE_IMPORT_DEMAND_LIST): Likewise.
9140         (struct lang_type): New fields import_list and import_demand_list.
9141         * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
9142         TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
9143         (do_resolve_class): New local saved_enclosing_type, initialized,
9144         passed as parameter to find_in_imports and find_in_imports_on_demand.
9145         (find_in_imports): Added paramater enclosing_type, use its
9146         TYPE_IMPORT_LIST when applicable.
9147         (find_in_imports_on_demand): Added parameter enclosing_type, use
9148         its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
9149         declaration and initialization.
9150         (fold_constant_for_init): Switch/restore current_class to the
9151         appropriate context.
9152
9153 2001-09-13  Mark Mitchell  <mark@codesourcery.com>
9154
9155         * verify.c (verify_jvm_instructions): Fix typo.
9156
9157 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9158
9159         * expr.c (expand_invoke): Const-ification.
9160         * parse.y (patch_method_invocation): Likewise.
9161
9162 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9163
9164         * gjavah.c (cxx_keywords): Const-ification.
9165         * keyword.gperf (java_keyword): Likewise.
9166         * lang.c (java_tree_code_name): Likewise.
9167         * lex.c (cxx_keywords): Likewise.
9168         * parse.y (java_parser_context_suspend, merge_string_cste): Likewise.
9169
9170 2001-09-11  Richard Henderson  <rth@redhat.com>
9171
9172         * parse.h (ctxp_for_generation): Mark extern.
9173
9174 2001-09-10  Richard Henderson  <rth@redhat.com>
9175
9176         * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.
9177
9178 2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
9179
9180         * typeck.c (java_array_type_length, build_prim_array_type):
9181         Represent empty arrays by NULL index.
9182
9183 2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>
9184
9185         * java-tree.h (compile_resource_file): Grouped with other prototypes.
9186         * jvspec.c (lang_specific_driver): Removed unused local `ptr.'
9187
9188 2001-09-06  Anthony Green  <green@redhat.com>
9189
9190         * class.c (O_BINARY): Define if necessary.
9191         (registerResource_libfunc): Declare.
9192         (init_class_processing): Initilize registerResource_libfunc.
9193         (compile_resource_file): New function.
9194         * java-tree.h (resource_name): Declare.
9195         (compile_resource_file): Declare.
9196         * jcf-parse.c (yyparse): Handle compiling java resource files.
9197         * lang.c (java_decode_option): Handle -fcompile-resource option.
9198         * jvspec.c (lang_specific_driver): Handle -R flag for compiling
9199         resource files.
9200         * gcj.texi (Code Generation): Add documentation for -R flag.
9201
9202 2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>
9203
9204         * jcf-write.c (generate_classfile): Issue an error in case of
9205         field/initial value mismatch.
9206         * parse.y (analyze_clinit_body): Keep <clinit> if an array is
9207         being initialized and we're generating bytecode.
9208         (java_complete_lhs): In MODIFY_EXPR section: added comments,
9209         set DECL_INITIAL properly when appropriate.
9210         Fixes PR java/4230
9211         Fixes PR java/4204
9212
9213 2001-09-01  Per Bothner  <per@bothner.com>
9214
9215         * parse.y (maybe_yank_clinit):  A field without an initializer is not
9216         relevant.  All initializers except static final and constant require
9217         <clinit>, regardless of flag_emit_class_files.
9218
9219 2001-08-31  Per Bothner  <per@bothner.com>
9220
9221         * class.c (set_constant_value):  When not emitting class files, then a
9222         String ConstantValue is a utf8const_ptr_type.
9223
9224 2001-08-30  Per Bothner  <per@bothner.com>
9225
9226         * jcf-write.c (generate_classfile):  Check that field is primitive
9227         or string before emitting ConstantValue attribute.
9228
9229 2001-08-30  Per Bothner  <per@bothner.com>
9230
9231         * parse.y (resolve_qualified_expression_name):  If creating a
9232         COMPOUND_EXPR, set it's type correctly.
9233
9234 2001-08-30  Per Bothner  <per@bothner.com>
9235
9236         * jcf-io.c (open_class):  Set filename field.
9237
9238         * jcf-parse,c (parse_class_file):  Set current_function_decl
9239         for better error message when Code attribute is missing.
9240
9241         * lang.c (put_decl_node, lang_print_error):  Re-arrange for
9242         better diagnostics, especially for constructors.
9243
9244 2001-08-30  Per Bothner  <per@bothner.com>
9245
9246         * jcf-write.c (generate_classfile):  Don't write ConstantValue
9247         attribute if field is not final, for compatibility with jdk.
9248
9249         * jcf-write.c (generate_classfile):  Convert ConstantValue values
9250         to correct type.  Work-around for front-end bug.
9251         * class.c (set_constant_value):  Error if constant has wrong type.
9252
9253 2001-08-30  Per Bothner  <per@bothner.com>
9254
9255         * jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
9256         "Double" are printed at verbosity 1.
9257
9258         * jcf-dump.c (main):  Disable flag_print_attributes if --javap.
9259
9260         * jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.
9261
9262 2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
9263
9264         * parse.y (patch_assignment): Don't verify final re-assignment here.
9265         (java_complete_lhs): Verify assignments to finals calling
9266         patch_assignment. Verify re-assignments to finals before calling
9267         patch_assignment.
9268
9269 2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>
9270
9271         * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
9272         Fixes PR java/1413
9273
9274 2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
9275
9276         * lex.c (java_lex): new local found_hex_digits. Set and then used
9277         in test to reject invalid hexadecimal numbers.
9278         * parse.y (java_complete_tree): Prevent unwanted cast with
9279         initialized floating point finals.
9280         (patch_binop): Emit a warning when detecting a division by zero,
9281         mark result not constant, don't simplify non integer division.
9282
9283 2001-08-28  Per Bothner  <per@bothner.com>
9284
9285         * jcf-write.c  (generate_bytecode_insns):  For increments and
9286         decrements just recurse to push constant.  Improvement on Mark's patch.
9287
9288 2001-08-28  Mark Mitchell  <mark@codesourcery.com>
9289
9290         * jcf-write.c (generate_bytecode_insns): Generate an integer to
9291         real conversion for increments and decrements of reals.
9292
9293 2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9294
9295         * parse.y (resolve_qualified_expression_name): Handle unresolved
9296         qualified expressions, prevent numerical qualifiers, fixed typo.
9297         Fixes PR java/4141
9298
9299 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
9300
9301         * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
9302         don't report anything but deprecated class when marked so. Handle
9303         VAR_DECL.
9304         (patch_method_invocation): Check deprecation on methods and types.
9305         (patch_binop): code becomes an enum tree_code, added default: to
9306         switch to handle that. Detect division by zero, try to fold and
9307         return before using a subroutine.
9308
9309 2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
9310
9311         * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
9312         file smaller than 4 bytes.
9313         * parse.y (check_inner_circular_reference): New function.
9314         (check_circular_reference): Likewise.
9315         (array_initializer:): Accept {,}.
9316         (java_check_circular_reference): Rewritten using
9317         check_circular_reference and check_inner_circular_reference.
9318         (java_complete_expand_method): Unconditionally save and restore
9319         the unpurged exception list.
9320         (build_dot_class_method_invocation): Unmangle signature parameter.
9321
9322 2001-08-21  Tom Tromey  <tromey@redhat.com>
9323
9324         * decl.c (init_decl_processing): Add `throws' field to method
9325         descriptor.
9326         * class.c (make_method_value): Compute `throws' field for method.
9327
9328 2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
9329
9330         * parse.y (resolve_inner_class): Keep local_enclosing to NULL if
9331         circularity is detected.
9332         (ctors_unchecked_throws_clause_p): Fixed leading comment.
9333
9334 2001-08-17  Richard Henderson  <rth@redhat.com>
9335
9336         * class.c (emit_register_classes): Add align parameter to
9337         call to assemble_integer.
9338
9339 2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>
9340
9341         * jcf-parse.c (load_class): New locals saved and class_loaded. If
9342         loading a class_or_name fails, try considering an innerclass name
9343         and load the enclosing context.
9344         * parse.y (resolve_inner_class): New function.
9345         (find_as_inner_class): Added leading comment.
9346         (register_incomplete_type): Keep the current context as enclosing
9347         context for JDEP_FIELD dependencies.
9348         (do_resolve_class): Locals new_class_decl and super initialized to
9349         NULL. Call resolve_inner_class, explore the enclosing context
9350         superclass if necessary.
9351         Fixes PR java/4007
9352
9353 2001-08-16  Tom Tromey  <tromey@redhat.com>
9354
9355         * jcf-dump.c (main): Updated for change to jcf_path_seal.
9356         * gjavah.c (main): Updated for change to jcf_path_seal.
9357         * lang.c (version_flag): New global.
9358         (java_decode_option): Recognize `-version'.
9359         (java_init): Update for change to jcf_path_seal.
9360         * jcf.h (jcf_path_seal): Added `print' argument.
9361         * jcf-path.c (jcf_path_seal): Added `print' argument.
9362
9363 2001-08-13  Zack Weinberg  <zackw@panix.com>
9364
9365         * Make-lang.in (java/decl.o): Update dependencies.
9366         * decl.c: Include libfuncs.h, don't include toplev.h.
9367
9368 2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
9369
9370         * decl.c (init_decl_processing): exception_type_node,
9371         class_not_found_type_node, and no_class_def_found_type_node
9372         initialized. predef_filenames augmented accordingly.
9373         instinit_identifier_node initialized.
9374         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
9375         * java-tree.h (enum java_tree_index): New entries
9376         JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
9377         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
9378         (exception_type_node): New macro.
9379         (class_not_found_type_node): Likewise.
9380         (no_class_def_found_type_node): Likewise.
9381         (instinit_identifier_node): Likewise.
9382         (PREDEF_FILENAMES_SIZE): Adjusted.
9383         (TYPE_HAS_FINAL_VARIABLE): Fixed typo.
9384         (struct lang_type): Fixed typo in bitfield name.
9385         (DECL_INSTINIT_P): New macro.
9386         (ID_INSTINIT_P): Likewise.
9387         * jcf-write.c (generate_classfile): instinit$ bears the Synthetic
9388         attribute.
9389         * parse.y (encapsulate_with_try_catch): New function.
9390         (generate_instinit): Likewise.
9391         (build_instinit_invocation): Likewise.
9392         (ctors_unchecked_throws_clause_p): Likewise.
9393         (add_instance_initializer): Deleted.
9394         (build_instance_initializer): Likewise.
9395         (in_instance_initializer): Likewise.
9396         (check_method_redefinition): instinit$ not to be verified.
9397         (java_complete_expand_methods): Generate instinit$, simplified code.
9398         (build_dot_class_method): Eliminated unnecessary locals. Use
9399         encapsulate_with_try_catch, removed unnecessary code.
9400         (fix_constructors): New local iii. Use build_instinit_invocation.
9401         (patch_method_invocation): Added comment.
9402         (maybe_use_access_method): Don't consider instinit$.
9403         (find_applicable_accessible_methods_list): Shorten the search for
9404         instinit$ too.
9405         (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
9406         (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
9407         (patch_throw_statement): Likewise. Fixed typo.
9408
9409 2001-08-12  David Edelsohn  <edelsohn@gnu.org>
9410
9411         Revert:
9412         2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9413         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
9414         ASM_FINAL_SPEC.
9415         (lang_specific_pre_link): Use set_input to set input_filename.
9416         Append `main' here.
9417         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
9418         (main): Fix definition.
9419         Strip `main' from classname.
9420         Fixes PR java/227.
9421
9422 2001-08-11  Zack Weinberg  <zackw@panix.com>
9423
9424         * lex.h: Don't include setjmp.h.  Don't define
9425         SET_FLOAT_HANDLER or prototype set_float_handler.
9426
9427 2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9428
9429         * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
9430         `poplevel' in the right order.
9431
9432 2001-08-09  Richard Henderson  <rth@redhat.com>
9433
9434         * Make-lang.in (class.o): Depend on TARGET_H.
9435         * class.c (emit_register_classes): Use target hooks instead of
9436         assemble_constructor and assemble_destructor.
9437
9438 2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>
9439
9440         * check-init.c (flags.h): Include
9441         (check_init): Don't report uninitialized static class
9442         initialization flags, don't free bit index when doing static class
9443         initialization optimization.
9444         (check_for_initialization): Return type changed to `unsigned int.'
9445         (attach_initialized_static_class): New function.
9446         * class.c (add_method_1): Create the initialized static class
9447         table if necessary.
9448         (finish_class): Always emit deferred inline methods.
9449         * decl.c (emit_init_test_initialization): Moved to expr.c
9450         (complete_start_java_method): Don't traverse
9451         DECL_FUNCTION_INIT_TEST_TABLE.
9452         (lang_mark_tree): Mark hash tables in function decls.
9453         * expr.c (emit_init_test_initialization): Moved from decl.c.
9454         (build_class_init): Create LAG_DECL_SPECIFIC for the static class
9455         initialization flag, set DECL_CONTEXT and
9456         LOCAL_CLASS_INITIALIZATION_FLAG.
9457         (java_lang_expand_expr): Emit initialization code for static class
9458         initialized flags when entering block, if necessary.
9459         * gcj.texi (-fno-optimize-static-class-initialization): Documented.
9460         * java-tree.h (flag_optimize_sci): New global variable declaration.
9461         (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
9462         (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
9463         (LOCAL_FINAL_P): Fixed typo in comment.
9464         (FINAL_VARIABLE_P): Likewise.
9465         (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
9466         (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
9467         (struct lang_decl): New fields `ict', `smic' and `cif.'
9468         (check_for_initialization): New returned value for global.
9469         (attach_initialized_static_class): New global function.
9470         (STATIC_CLASS_INIT_OPT_P): New macro.
9471         * lang-options.h (-fno-optimize-static-class-initialization): New flag.
9472         * lang.c (java_decode_option): Handle
9473         `-fno-optimize-static-class-initialization'
9474         * parse.y (start_complete_expand_method): New function.
9475         (java_expand_method_bodies): Likewise.
9476         (attach_init_test_initialization_flags): Likewise.
9477         (adjust_init_test_initialization): Likewise.
9478         (emit_test_initialization): Likewise.
9479         (java_complete_expand_methods): Nullify abstract and native method
9480         bodies.
9481         (java_complete_expand_method): New locals `fbody', `block_body'
9482         and `exception_copy.' Reorganized: directly return on empty method
9483         bodies, call `start_complete_expand_method', remember definitely
9484         initialized static class in function, don't expand method bodies.
9485         (java_expand_classes): Call `java_expand_method_bodies' before
9486         `finish_class' when compiling to native.
9487         (resolve_expression_name): Use `orig' after building outer class
9488         field access.
9489         (patch_invoke): Remember static method invocations.
9490
9491 2001-08-06  Richard Henderson  <rth@redhat.com>
9492
9493         * class.c (emit_register_classes): Pass a symbol_ref and priority
9494         to assemble_constructor.
9495
9496 2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>
9497
9498         * java-tree.h (all_class_filename): New macro.
9499         (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
9500         (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
9501         newly created IDENTIFIER_NODE to `all_class_filename.'
9502
9503 2001-08-01  Jeff Sturm  <jsturm@one-point.com>
9504
9505         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
9506         Use ggc_add_tree_root to register roots.
9507
9508 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
9509
9510         * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
9511         second operand calling check_init.
9512         * decl.c (complete_start_java_method): Swaped second and third
9513         arguments while creating WITH_CLEANUP_EXPR node.
9514         * jcf-write.c (generate_bytecode_insns): Use second operand
9515         instead of third when handling WITH_CLEANUP_EXPR.
9516         * parse.y (java_complete_lhs): Expand second operand of
9517         WITH_CLEANUP_EXPR nodes.
9518         (patch_synchronized_statement): Swaped second and third arguments
9519         while creating WITH_CLEANUP_EXPR node.
9520
9521 2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
9522
9523         * parse.y (create_interface): Avoid cyclic inheritance report when
9524         syntax error encountered during class definition.
9525         Fixes PR java/2956
9526
9527 2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9528
9529         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
9530         ASM_FINAL_SPEC.
9531         (lang_specific_pre_link): Use set_input to set input_filename.
9532         Append `main' here.
9533         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
9534         (main): Fix definition.
9535         Strip `main' from classname.
9536         Fixes PR java/227.
9537
9538 2001-07-18  Tom Tromey  <tromey@redhat.com>
9539
9540         For PR java/2812:
9541         * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
9542         * lex.c (java_new_lexer): Use ICONV_CONST.
9543         (java_read_char): Likewise.
9544         * Make-lang.in (jc1$(exeext)): Link against LIBICONV.
9545         (jv-scan$(exeext)): Likewise.
9546
9547 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
9548
9549         * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
9550         * parse.y (check_class_interface_creation): Allow `private' if the
9551         enclosing is not an interface.
9552         (create_interface): Interface tagged public if the enclosing
9553         context is an interface.
9554         (create_class): Class tagged public if the enclosing context
9555         is an interface.
9556         Fixes PR java/2959
9557
9558 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
9559
9560         * class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
9561         Fixes PR java/2665
9562
9563 2001-07-14  Tim Josling  <tej@melbpc.org.au>
9564
9565         * check-init.c (check_init): Remove references to EXPON_EXPR.
9566
9567 2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
9568
9569         * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
9570         TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
9571         Fixes PR java/3602
9572
9573 2001-07-13  Tom Tromey  <tromey@redhat.com>
9574
9575         * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
9576         invocation.
9577
9578 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
9579
9580         * parse.y (patch_method_invocation): Don't override primary if one
9581         is already provided, but let this$<n> be built. Fixed comment.
9582
9583 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
9584
9585         * parse.y (empty_statement:): Report empty statement error only
9586         when found at class declaration level.
9587         Fixes PR java/3635
9588
9589 2001-07-12  Tom Tromey  <tromey@redhat.com>
9590
9591         * expr.c (expand_load_internal): New function.
9592         (LOAD_INTERNAL): Use it.
9593
9594 2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>
9595
9596         * parse.y (verify_constructor_super): Compare anonymous class ctor
9597         args with `valid_method_invocation_conversion_p.'
9598         Fixes PR java/3285
9599
9600 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
9601
9602         * lang-specs.h: Forbit the use if `-femit-class-file{s}' without
9603         `-fsyntax-only.' Fixes PR java/3248
9604
9605 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
9606
9607         * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
9608
9609 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
9610
9611         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
9612         current function is static. Fixes PR java/1970
9613
9614 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9615
9616         * parse.y (patch_method_invocation): Add enclosing context to ctor
9617         calls if necessary. Fixes PR java/2953
9618
9619 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9620
9621         * parse.y (resolve_package): Abort if qualified expression member
9622         isn't right.
9623         (qualify_ambiguous_name): Don't qualify as type if `this' in use.
9624         Fixes PR java/1391
9625
9626 2001-07-07  Zack Weinberg  <zackw@stanford.edu>
9627
9628         * verify.c: Don't use // comments.
9629
9630 2001-07-05  Tom Tromey  <tromey@redhat.com>
9631
9632         * lang.c (flag_assume_compiled): Removed.
9633         * java-tree.h (flag_assume_compiled): Removed.
9634         * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
9635         -fhash-synchronization, -fuse-divide-subroutine,
9636         -fcheck-references, -femit-class-file, -femit-class-files,
9637         -fassume-compiled.  Updated --encoding information.  Changed
9638         -foutput-class-dir to `-d'.
9639
9640 2001-07-04  Daniel Berlin  <dan@cgsoftware.com>
9641
9642         * jcf-parse.c (parse_class_file): Add lineno parameter to
9643         debug_start_source_file call.
9644
9645 2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>
9646
9647         * gcj.texi: Use gpl.texi.
9648         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
9649         dependencies and use doc/include in search path.
9650
9651 2001-07-03  Jeff Sturm  <jsturm@one-point.com>
9652
9653         * parse.y (fix_constructors): Test if a CALL_EXPR invokes
9654         `this'.  If so, don't build instance initializers.
9655
9656 2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
9657
9658         * parse.y (resolve_expression_name): Improved error message for
9659         inner class cases. Fixes PR java/1958
9660
9661 2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>
9662
9663         * lang.c: #include diagnostic.h
9664         (lang_print_error): Add a `diagnostic_context *' parameter.
9665         (java_dummy_print): Likewise.
9666         * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h
9667
9668 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9669
9670         * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
9671         * jcf.h (typedef struct JCF): New bitfield `finished.'
9672         (JCF_FINISH): Set `finished.'
9673         (JCF_ZERO): Reset `finished.'
9674         Fixes PR java/2633
9675
9676 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9677
9678         * parse.y (class_body_declaration:): Don't install empty instance
9679         initializers.
9680         Fixes PR java/1314
9681
9682 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
9683
9684         * class.c (set_super_info): Call `set_class_decl_access_flags.'
9685         (set_class_decl_access_flags): New function.
9686         * java-tree.h (set_class_decl_access_flags): New prototype.
9687         * jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
9688         (parse_class_file): New local `decl_max_locals.' Take wide types
9689         into account to compute DECL_MAX_LOCALS.
9690         * parse.y (type_import_on_demand_declaration:): Ignore duplicate
9691         imports on demand.
9692
9693 2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>
9694
9695         * zipfile.h: Use GCC_JCF_H instead of JCF_H.
9696
9697 2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
9698
9699         * class.c (java_hash_tree_node): Fixed indentation in leading comment.
9700         * parse.y (do_resolve_class): Moved comments out to leading comment
9701         section. Removed local `start', New local `_ht' and
9702         `circularity_hash.'  Record `enclosing' in hash table and search
9703         it to detect circularity.  Use `enclosing' as an argument to
9704         `lookup_cl.' Free the hash table when done.
9705
9706 2001-06-19  Tom Tromey  <tromey@redhat.com>
9707
9708         * lex.c (java_read_char): Disallow invalid and overlong
9709         sequences.  Fixes PR java/2319.
9710
9711 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
9712
9713         * decl.c (create_primitive_vtable): Don't call make_decl_rtl.
9714
9715 2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
9716
9717         * expr.c (force_evaluation_order): Match wrapped ctor calls, locate
9718         arguments accordingly.
9719
9720 2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>
9721
9722         * gcj.texi: Move contents to just after title page.
9723
9724 2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>
9725
9726         * parse.y (type_literals:): Use `build_incomplete_class_ref' with
9727         builtin type.
9728         (patch_incomplete_class_ref): Build the class ref, build the class
9729         init if necessary, complete the tree.
9730         Fixes PR java/2605
9731
9732 2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
9733
9734         * parse.y (lookup_field_wrapper): Test `name' code.
9735         (resolve_qualified_expression_name): Test `qual_wfl' code.
9736         (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
9737         handle `qual_wfl' by code.
9738         (maybe_build_primttype_type_ref): Test `wfl' code.
9739
9740 2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
9741
9742         * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
9743         fdl.texi.
9744         (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
9745         the dvi file in the java directory.
9746
9747 2001-05-25  Sam TH  <sam@uchicago.edu>
9748
9749         * gen-table.pl javaop.h jcf.h lex.h,
9750         parse.h: Fix header include guards.
9751
9752 2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>
9753
9754         * jv-scan.c (version): Update copyright year.
9755
9756 2001-05-21  Per Bothner  <per@bothner.com>
9757
9758         * jcf-parse.c (read_class):  If class is from .class or .zip file
9759         and it's already been read, don't push/pop parser context.
9760
9761 2001-05-18  Per Bothner  <per@bothner.com>
9762
9763         * jvspec.c (lang_specific_pre_link):  Re-arrange the linker
9764         command line so the jvgenmain-generated main program comes first.
9765
9766 2001-05-15  Tom Tromey  <tromey@redhat.com>
9767
9768         * class.c (build_utf8_ref): Don't generate identifier based on
9769         utf8const contents.
9770
9771 2001-05-12  Richard Henderson  <rth@redhat.com>
9772
9773         * java-tree.def (JAVA_EXC_OBJ_EXPR): New.
9774         * expr.c (java_lang_expand_expr): Expand it.
9775         (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
9776         calling build_exception_object_ref.
9777         * parse.y (catch_clause_parameter): Likewise.
9778         (build_dot_class_method): Likewise.
9779         (try_reference_assignconv): Likewise.
9780         * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
9781         * jcf-write.c (generate_bytecode_insns): Likewise.
9782
9783 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
9784
9785         * parse.y (build_unresolved_array_type): Set
9786         EXPR_WFL_QUALIFICATION on the newly created wfl.
9787         Fixes PR java/2538. Fixes PR java/2535.
9788
9789 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
9790
9791         * parse.y (fix_constructors): Removed unnecessary assignment to
9792         local. Moved assignment to `this$<n>', fixed comments and
9793         indentation.
9794         (build_wfl_wrap): Fixed indentation.
9795         Fixes PR java/2598, java/2579 and java/2658.
9796
9797 2001-05-03  Mo DeJong  <mdejong@redhat.com>
9798
9799         * lex.c (java_new_lexer): Call iconv_close on temp handle used to
9800         check for byte swap.
9801
9802 2000-05-02  Jeff Sturm  <jsturm@one-point.com>
9803
9804         * expr.c (build_class_init): Move MODIFY_EXPR
9805         outside of COND_EXPR.  Remove variable `call'.
9806
9807 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9808
9809         * decl.c: NULL_PTR -> NULL.
9810         * jcf-write.c: Likewise.
9811
9812 2001-05-01  Tom Tromey  <tromey@redhat.com>
9813
9814         * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
9815         (java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
9816         * gcj.texi: Updated copyright text.  Include fdl.texi.
9817         (Top): Link to new node.
9818
9819 2001-05-01  Per Bothner  <per@bothner.com>
9820
9821         * parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.
9822
9823 2001-05-01  Per Bothner  <per@bothner.com>
9824
9825         * parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
9826         import_list contains the name, not the TREE_PURPOSE.
9827
9828 2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9829
9830         * jcf-io.c (read_zip_member): Cast to long in comparison with
9831         signed value.
9832
9833         * jvspec.c (lang_specific_driver): Initialize variables.
9834
9835         * mangle.c (find_compression_record_match): Likewise.
9836
9837         * typeck.c (build_null_signature): Provide static prototype.  Mark
9838         parameter with ATTRIBUTE_UNUSED.
9839
9840         * verify.c (verify_jvm_instructions): Initialize variable.
9841
9842 2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
9843
9844         * parse.y (do_resolve_class): Check for cyclic inheritance during
9845         inner class resolution.
9846
9847 2001-04-27  Per Bothner  <per@bothner.com>
9848
9849         * parse.y (java_expand_classes):  Don't change ctxp_for_generation
9850         while iterating, since that could cause gc to lose stuff.
9851
9852 2001-04-26  Per Bothner  <per@bothner.com>
9853
9854         Fix method search wrt scope of inner classes to match JLS2.
9855         * typeck.c (build_null_signature):  New static function.
9856         (has_method):  New function.  Uses build_null_signature and lookup_do.
9857         * java-tree.h (has_method):  New declaration.
9858         * parse.y (find_applicable_accessible_methods_list):  Do not search
9859         context of inner classes here.
9860         (patch_method_invocation):  Search scope, ie. current and outer clases,
9861         for method matching simple name, to find class.
9862
9863 2001-04-26  Per Bothner  <per@bothner.com>
9864
9865         * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
9866         Fix thinko:  If a single case, use if_icmpeq, not ifeq.
9867
9868         * constants.c (find_methodref_with_class_index):  New function.
9869         (find_methodref_index):  Use find_methodref_with_class_index.
9870         * java-tree.h (find_methodref_with_class_index):  New declaration.
9871         * jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
9872         DECL_CONTEXT, instead use new find_methodref_with_class_index function.
9873         If context changed from interface to class, don't use invokeinterface.
9874
9875 2001-04-25  Per Bothner  <per@bothner.com>
9876
9877         * verify.c (verify_jvm_instructions):  For field instructions,
9878         check that field index is valid.  For invoke instructions, check that
9879         method index is valid.
9880
9881 2001-04-25  Alexandre Oliva  <aoliva@redhat.com>
9882
9883         * config-lang.in (target_libs): Copy from $libgcj_saved.
9884
9885 2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
9886
9887         * decl.c (init_decl_processing): Add new class "protectionDomain"
9888         field.
9889         * class.c (make_class_data): Set initial value for "protectionDomain".
9890
9891 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9892
9893         * jvspec.c (lang_specific_driver): Fix memory allocation
9894         deficit, by using concat in lieu of xmalloc/sprintf.
9895
9896 2001-04-20  Per Bothner  <per@bothner.com>
9897
9898         Fixes to compile multiple .class files at once.
9899         * decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
9900         * java-tree.h (CLASS_PARSED_P):  New macro.
9901         (CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
9902         * jcf-parse.c (jcf_parse_source):  Inline into read_class.
9903         (read_class):  Avoid some code duplication.
9904         Don't call JCF_FINISH for a .class file - might be needed later.
9905         (jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
9906         rather than CLASS_LOADED_P, since latter implies class laid out.
9907         (yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
9908         * parse.y:  Don't need to set CLASS_LOADED_P for array types.
9909
9910 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9911
9912         * Make-lang.in (java/boehm.o): Depend on toplev.h.
9913
9914         * boehm.c: Include toplev.h.
9915
9916 2001-04-06  Tom Tromey  <tromey@redhat.com>
9917             Alexandre Petit-Bianco  <apbianco@redhat.com>
9918
9919         Fix for PR gcj/1404 and PR gcj/2332:
9920         * parse.y (build_array_from_name): If we use the type_wfl then
9921         accumulate dimensions from the original type as well.
9922         (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
9923
9924 2001-04-06  Tom Tromey  <tromey@redhat.com>
9925
9926         * parse.y (analyze_clinit_body): Return true if the second operand
9927         of a METHOD_EXPR is nonzero.
9928
9929 2001-04-06  Tom Tromey  <tromey@redhat.com>
9930
9931         * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
9932         directory.
9933         ($(srcdir)/java/parse.c): Likewise.
9934
9935 2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
9936
9937         * gcj.texi: Use `which-gcj' instead of `which-g77.'
9938         (version-gcc): Initialized.
9939         (which-gcj): Likewise.
9940
9941 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
9942
9943         * java-tree.h (struct lang_decl): New macro
9944         `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
9945         * parse.y (build_instance_initializer): New function.
9946         (add_instance_initializer): Use it.
9947         (java_fix_constructors): Set `current_class' before fix pass.
9948         (fix_constructors): Just return if already fixed. Move `super()'
9949         invocation ahead. Use `build_instance_initializer.'
9950         Fixes PR java/1315.
9951
9952 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
9953
9954         * parse.y (resolve_qualified_expression_name): Pass field's
9955         DECL_CONTEXT to `not_accessible_p.'
9956         (not_accessible_p): Changed parameters order in `inherits_from_p'
9957         invocation.
9958
9959 2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>
9960
9961         * lang-options.h: Add flag_check_references.
9962
9963 2001-04-04  Per Bothner  <per@bothner.com>
9964
9965         * java-tree.h (CONSTANT_VALUE_P):  New macro.
9966         * jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
9967         * parse.y (maybe_build_class_init_for_field):  New static function.
9968         (resolve_expression_name, resolve_field_access):  Use
9969         maybe_build_class_init_for_field instead of build_class_init
9970         This does not do the init if the field is compile-time-constant.
9971         (resolve_field_access):  Simplify.
9972
9973         * parse.y (fold_constant_for_init):  Merge test into switch.
9974
9975 2001-04-03  Zack Weinberg  <zackw@stanford.edu>
9976
9977         * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
9978         on gansidecl.h.
9979         * buffer.c, jvgenmain.c: Don't include gansidecl.h.
9980
9981 2001-04-02  Zack Weinberg  <zackw@stanford.edu>
9982
9983         * expr.c (pop_type_0): Save the result of the first
9984         lang_printable_name call in a scratch buffer, so it
9985         won't be clobbered by the second call.
9986
9987 2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
9988
9989         * parse-scan.y (array_type:): Rewritten.
9990         (type_declaration:): `empty_statement' replaces `SC_TK.'
9991         (class_member_declaration:): `empty statement' added.
9992         (method_body:): Simplified.
9993         (static_initializer:): Likewise.
9994         (primary_no_new_array:): Use `type_literals.'
9995         (type_literals:): New rule.
9996         (dims:): Set and update `bracket_count.'
9997         Fixes PR java/1074. Fixes PR java/2412.
9998
9999 2001-03-28  Hans Boehm  <boehm@acm.org>
10000
10001         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
10002         (get_boehm_type_descriptor): Set type on returned value to be a
10003         pointer length integer.
10004
10005 2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10006
10007         * expr.c (pop_type_0): Call `concat' rather than building the
10008         string manually.
10009         (pop_type): Add format specifier in call to `error'.
10010
10011         * parse.y (patch_method_invocation): Avoid casting away
10012         const-ness.
10013
10014 2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>
10015
10016         * jvgenmain.c (do_mangle_classname): End string constant with '\0'.
10017
10018 2001-03-28  Richard Henderson  <rth@redhat.com>
10019
10020         IA-64 ABI Exception Handling:
10021         * Make-lang.in (except.o): Don't depend on eh-common.h.
10022         * check-init.c (check_init): Handle EXC_PTR_EXPR.
10023         * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
10024         [soft_exceptioninfo_call_node]: Remove.
10025         [eh_personality_libfunc, lang_eh_runtime_type]: New.
10026         (end_java_method): No emit_handlers.
10027         * except.c (java_set_exception_lang_code): Remove.
10028         (method_init_exceptions): Don't call it.
10029         (prepare_eh_table_type): No CATCH_ALL_TYPE.
10030         (build_exception_object_ref): New.
10031         (expand_end_java_handler): Update for except.h name changes.
10032         (emit_handlers, expand_resume_after_catch): Remove.
10033         * expr.c (java_lang_expand_expr): Update for except.h name changes.
10034         (process_jvm_instruction): Use build_exception_object_ref.
10035         * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
10036         (soft_exceptioninfo_call_node): Remove.
10037         (build_exception_object_ref): Declare.
10038         * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
10039         soft_exceptioninfo_call_node.  Move processing ...
10040         [EXC_PTR_EXPR]: ... here.
10041         * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
10042         * parse.y (catch_clause_parameter): Use build_exception_object_ref.
10043         (source_end_java_method): No java_set_exception_lang_code or
10044         emit_handlers.
10045         (build_dot_class_method): Use build_exception_object_ref.
10046         (try_reference_assignconv): Check EXC_PTR_EXPR not
10047         soft_exceptioninfo_call_node.
10048
10049 2001-03-28  Richard Henderson  <rth@redhat.com>
10050
10051         * java-tree.h (throw_node): Define as a single member of
10052         java_global_trees instead of a separate array.
10053         (JTI_THROW_NODE): New.
10054         * decl.c (throw_node): Don't declare.
10055         (init_decl_processing): Init a scalar throw_node.
10056         Don't register it for gc.
10057         * check-init.c (check_init): Reference scalar throw_node.
10058         * expr.c (build_java_athrow): Likewise.
10059         * jcf-write.c (generate_bytecode_insns): Likewise.
10060         * parse.h (BUILD_THROW): Likewise.
10061
10062 2001-03-28  Richard Henderson  <rth@redhat.com>
10063
10064         * decl.c (end_java_method): Do not save and restore
10065         flag_non_call_exceptions.
10066         * parse.y (source_end_java_method): Likewise.
10067         * lang.c (flag_exceptions): Don't declare.
10068         (java_init_options): Set flag_non_call_exceptions.  Set
10069         flag_exceptions here ...
10070         (java_init): ... not here.
10071
10072 2001-03-27  Richard Henderson  <rth@redhat.com>
10073
10074         * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
10075         exceptions_via_longjmp.
10076
10077         * lang.c (flag_new_exceptions): Don't declare it.
10078         (java_init_options): Or set it.
10079
10080 2001-03-27  Richard Henderson  <rth@redhat.com>
10081
10082         * decl.c (end_java_method): Rename asynchronous_exceptions to
10083         flag_non_call_exceptions.
10084         * parse.y (source_end_java_method): Likewise.
10085
10086 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10087
10088         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
10089
10090 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
10091
10092         * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.
10093
10094 2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
10095
10096         * parse.y (find_as_inner_class): Follow current package
10097         indications not to mistakingly load an unrelated class.
10098
10099 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10100
10101         * constants.c (PUTN): Use memcpy, not bcopy.
10102
10103         * lex.c (java_read_char): Use memmove, not bcopy.
10104
10105         * parse.y (java_parser_context_resume): Use memcpy, not bcopy.
10106
10107 2001-03-23  Per Bothner  <per@bothner.com>
10108
10109         * verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
10110         macro for better error pin-pointing.
10111         * java-tree.h:  Fix typo in comment.
10112
10113         * jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
10114         Don't include jsr/goto in exception range.
10115         Check if start and end of exception range are the same (also TRY_EXPR).
10116         Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
10117         However, do emit the following goto even if try_block is empty.
10118         Defer freeing exception_decl until after the finalizer, to make
10119         sure the local isn't reused in the finalizer.  Fixes PR java/1208.
10120
10121         * parse.y (java_complete_lhs):  If the try-clause is empty, just
10122         return the finally-clause and vice versa.
10123
10124 2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
10125
10126         * gcj.texi (Input Options): documented the check for attribute
10127         `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
10128         * java-tree.h (flag_force_classes_archive_check): Declared extern.
10129         * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
10130         (jcf_parse): Check for the right classes archive if necessary.
10131         * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
10132         (jcf_parse_fields): Fixed indentation.
10133         * jcf-write.c (append_gcj_attribute): New function.
10134         (generate_classfile): Compute the attribute count, invoke
10135         `append_gcj_attribute'.
10136         * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
10137         turned into bit-fields. New bit-field `right_zip.'
10138         (JCF_ZERO): Set `right_zip' to zero.
10139         * lang-options.h (-fforce-classes-archive-check): Added flag.
10140         * lang.c (flag_force_classes_archive_check): New flag.
10141         (lang_f_options): New entry `force-classes-archive-check.'
10142         Fixes PR java/1213.
10143
10144 2001-02-07  Andrew Haley  <aph@redhat.com>
10145
10146         * gcj.texi (Configure-time Options): Add -fcheck-references.
10147         * expr.c (build_java_indirect_ref): New function.
10148         (java_check_reference): New function.
10149         (build_java_array_length_access): Use build_java_indirect_ref to
10150         check for null references.
10151         (build_java_arrayaccess): Likewise.
10152         (build_get_class): Likewise.
10153         (build_field_ref): Likewise.
10154         (invoke_build_dtable): Likewise.
10155         (build_invokeinterface): Likewise.
10156         * lang.c (lang_f_options): Add flag_check_references.
10157         * jvspec.c (jvgenmain_spec): Add flag_check_references.
10158         * java-tree.h (flag_check_references): New variable.
10159         * lang.c (flag_check_references): Likewise.
10160         * parse.y (patch_invoke): Use java_check_reference.
10161         (patch_assignment): Allow for extra nesting in
10162         _Jv_CheckArrayStore.
10163
10164 2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>
10165
10166         * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
10167         * lex.c (cxx_keywords): Likewise.
10168
10169 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
10170
10171         * parse.y (qualify_ambiguous_name): Broaden `length'
10172         recognition. Help MODIFY_EXPR be resolved as expression names.
10173         Fixes PR java/2066. Fixes PR java/2400.
10174
10175 2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>
10176
10177         * gjavah.c (process_file): Mark interface definitions with
10178         "__attribute__ ((java_interface))".
10179
10180 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
10181
10182         * class.c (layout_class): Fixed push_super_field's second
10183         argument. Fixes PR java/2333.
10184         (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
10185         too early to lay innerclasses out.
10186
10187 2001-03-20  Tom Tromey  <tromey@redhat.com>
10188             Alexandre Petit-Bianco <apbianco@redhat.com>
10189
10190         * parse.y (patch_assignment): Handle the case of a SAVE_EXPR
10191         inside an array reference. Insertion of the array store check
10192         rewritten. Fixes PR java/2299.
10193
10194 2001-03-20  Tom Tromey  <tromey@redhat.com>
10195
10196         * lex.c (java_read_unicode): Only accept leading `u's.
10197
10198 2001-03-20  Tom Tromey  <tromey@redhat.com>
10199
10200         * jcf-parse.c (read_class): Initialize `class'.
10201
10202 2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
10203
10204         * jcf_parse.c (jcf_parse): Eliminate unused variable.
10205
10206 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
10207
10208         * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
10209         (layout_class): Likewise.
10210         (layout_class_method): Likewise.
10211         (emit_register_classes): Likewise.
10212         * decl.c (builtin_function): Likewise.
10213         (give_name_to_locals): Likewise.
10214
10215 2001-03-19  Per Bothner  <per@bothner.com>
10216
10217         * jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
10218         before trying to load an inner class.
10219
10220         Fixes to process to command-line .class files in two passes.
10221         * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
10222         (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
10223         (CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
10224         * class.c (is_compiled_class):  Fix for renamed flag.
10225         * parse.y (maybe_create_class_interface_decl):  Likewise.
10226         * jcf-parse.c (yyparse):  Also set if compiling .class files.
10227         * jcf-parse.c (read_class);  Read current_class.
10228         (jcf_parse):  Make static.
10229         (load_inner_classes):  New function, with code moved from jcf_parse,
10230         because we need to inner classes after the command-line files are read.
10231         (yyparse):  Set finput to NULL when it doesn't need to be closed.
10232         Reduce use of main_jcf (basically only for archive) and
10233         use finput instead of main_jcf->read_state.
10234         Inline jcf_figure_file_type into yyparse.
10235         Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
10236         Defer load_inner_classes and parse_class_file to a second pass,
10237         after we've correctly mapped command-line .clas fiels to classes.
10238         (jcf_figure_file_type):  Removed.
10239         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
10240         (JCF_ZERO):  Also clear zipd field.
10241         * zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.
10242
10243 2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
10244
10245         * jcf-parse.c (yyparse): Change ch from char * to char.
10246
10247 2001-03-19  Per Bothner  <per@bothner.com>
10248
10249         * jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
10250         Add constructed filelist-file at end, following -xjava.  Thus any .o
10251         and library files are not affected by the -xjava.  Also wrap
10252         explicit @FILE with -xjava and -xnone.
10253
10254 2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>
10255
10256         * class.c (build_static_field_ref): Call make_decl_rtl() after
10257         setting the DECL_EXTERNAL flag.
10258
10259 2001-03-17  Per Bothner  <per@bothner.com>
10260
10261         * decl.c (clear_binding_level):  Fix initializer (broke 03-15).
10262
10263         * jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
10264         when result is is needed (target is STACK_TARGET).
10265
10266         * parse.h (JDEP_SOLV):  Removed.
10267         * parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.
10268
10269         * parse.y (incomplete_class_list): Removed.
10270         (obtain_incomplete_type): Don't use or set incomplete_class_list.
10271         It doesn't work if resolve_class changes the name of an array type
10272         that is on the list and then someone else looks for the modified name.
10273         Also, seems liable to break when compiling multiple source files at
10274         once.  So the simplest is to just remove incomplete_class_list -
10275         it is only a minor space win and it is not even clear it saves time.
10276
10277         * parse.y (resolve_class):  Remove unneeded promote_type.
10278
10279 2001-03-15  Per Bothner  <per@bothner.com>
10280
10281         * java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
10282         * parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
10283         * parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
10284         Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.
10285
10286         * jcf-parse.c (yyparse):  Set/reset input_filename for source file.
10287         * parse.y (java_expand_classes):  Likewise.
10288
10289         * parse.y (expand_start_java_method):  Was only called once and had a
10290         misleading name, so inline in caller java_complete_expand_method.
10291         (enter_a_block):  Likewise inline in enter_block and remove.
10292
10293         Remove junk from when gcc/java was created (by copying from C/C++).
10294         * decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
10295         (struct binding_level):  Remove fields keep, keep_if_subblocks,
10296         more_cleanups_ok, have_cleanups (which have never been used).
10297         (pushlevel, poplevel):  Remove related useless code.
10298
10299         * class.c (make_class_data):  The class_dtable_decl (i.e. the
10300         vtable for Class) should be external, except when compiling Class.
10301
10302         * jvspec.c (lang_specific_driver):  Fix -C handling.
10303         Check -save-temps to see if temp @FILE should be deleted.
10304         Follow-up to/fix for February 16 patch.
10305
10306         * verify.c (verify_jvm_instructions):  Better error msgs for dup.
10307         (type_stack_dup):  Remove no-longer neded error check.
10308
10309 2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>
10310
10311         * mangle.c (mangle_record_type): Rename 'from_pointer' argument
10312         to 'for_pointer'. If this type is for a pointer (argument) mangling,
10313         don't surround the element with 'N..E' if the type name is
10314         unqualified.
10315
10316 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
10317
10318         * class.c (build_static_field_ref): Use COPY_DECL_RTL,
10319         DECL_RTL_SET_P, etc.
10320         (make_method_value): Likewise.
10321         (get_dispatch_table): Likewise.
10322
10323         * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
10324
10325 2001-03-07  Tom Tromey  <tromey@redhat.com>
10326
10327         * config-lang.in (lang_requires): Define.
10328
10329 2001-03-07  Brad Lucier  <lucier@math.purdue.edu>
10330
10331         * typeck.c (convert): Check flag_unsafe_math_optimizations,
10332         not flag_fast_math.
10333
10334 2001-03-05  Per Bothner  <per@bothner.com>
10335
10336         Fix a problem where rest_of_decl_compilation applied to
10337         class_dtable_decl causes problems because it was done too early,
10338         before output file was opened.
10339         * decl.c (init_decl_processing):  Remove init of class_dtable_decl.
10340         * class.c (class_dtable_decl):  Add macro - element of class_roots.
10341         (make_class_data):  Define class_dtable_decl.
10342         * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.
10343
10344 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
10345
10346         * java/class.c, java/decl.c, java/java-tree.h: Replace all
10347         uses of 'boolean' with 'bool'.
10348
10349 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
10350
10351         * lang-specs.h: Add zero initializer for cpp_spec field to all
10352         array elements.
10353
10354 2001-02-16  Per Bothner  <per@bothner.com>
10355
10356         Handle compiling multiple input files at once, and @FILE syntax.
10357         * gcj.texi:  Updated documentation to match.
10358         * java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
10359         * jcf-parse.c (parse_source_file):  Split into ...
10360         (parse_source_file_1):  New function - and:
10361         (parse_source_file_2):  New function.
10362         (yyparse):  On -ffilelist-file, open and scan named file.
10363         On first pass over files, only do parse_source_file_1.
10364         A new second pass calls parse_source_file_2 for each file to compile.
10365         (init_jcf_parse):  Call init_src_parse.
10366         * jvspec.c (INDIRECT_FILE_ARG):  New flag.
10367         (lang_specific_driver):  Support @FILELIST-FILE syntax, as well
10368         as multiple input file combined in one compilation.
10369         * lang-options.h:  Add -ffilelist-file
10370         * lang.c (flag_filelist_file):  New flag variable.
10371         (lang_f_options):  Handle -ffilelist-file.
10372         * lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
10373         * parse.h (struct parse_ctxt):  Remove fields incomplete_class and
10374         gclass_list - use global fields of src_parse_roots instead.
10375         * parse.y (src_parse_roots):  New array.
10376         (incomplete_class_list, gclass_list):  New macros.
10377         (push_parser_context, java_pop_parser_context,
10378         java_parser_context_resume):  Don't fiddle with deleted fields.
10379         (various):  Use incomplete_class gclass_list and global macros
10380         instead of parse_ctxt fields - the lists are global.
10381         (init_src_parse):  New function.
10382
10383 2001-02-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10384
10385         * decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
10386
10387 2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
10388
10389         * parse.y (check_inner_class_access): Moved declaration of local
10390         `enclosing_decl_type' to the right location.
10391
10392 2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>
10393
10394         * parse.y (parser_check_super_interface): Don't call
10395         check_pkg_class_access for an inner interface.
10396         (parser_check_super): Don't call check_pkg_class_access for inner
10397         class.
10398         (do_resolve_class): Simplify enclosing type loop. Don't call
10399         check_pkg_class_access if CL and DECL are not set.
10400         (find_in_imports_on_demand): Set DECL if class_type needed to be
10401         loaded. Don't call check_pkg_class_access for an inner class.
10402         (check_inner_class_access): Rewritten to implement member access
10403         rules as per spec 6.6.1.
10404         (check_pkg_class_access): Handle the empty package correctly.
10405         (in_same_package): New function. Determine if two classes are in the
10406         same package.
10407
10408 2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>
10409
10410         * typeck.c (build_java_array_type): Don't try to poke a public `clone'
10411         method into array types.
10412         * parse.y (patch_method_invocation): Bypass access check on clone call
10413         to array instance.
10414
10415 2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
10416
10417         * expr.c (build_instanceof): Check for arrays when trying fold to
10418         false.
10419
10420 2001-02-15  Jim Meyering  <meyering@lucent.com>
10421
10422         * Make-lang.in (java.install-common): Depend on `installdirs'.
10423         (java.install-info): Likewise.
10424
10425 2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>
10426
10427         * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.
10428
10429 2001-02-14  Tom Tromey  <tromey@redhat.com>
10430             Alexandre Petit-Bianco  <apbianco@cygnus.com>
10431
10432         Fix for PR java/1261.
10433         * typeck.c (build_java_array_type): Add public `clone' method to
10434         arrays.
10435         * parse.y (resolve_qualified_expression_name): Use current_class
10436         when checking for inaccessibility.
10437         (patch_method_invocation): Fixed error message when accessibility
10438         denied.  Added `from_super' argument.
10439
10440 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
10441
10442         * parse.y (resolve_class): Don't build a fake decl. Use the one
10443         already built.
10444         * typeck.c (build_java_array_type): Build and assign decl to array
10445         type.
10446
10447 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
10448
10449         * parse.y (not_accessible_p): Changed leading comment. Added extra
10450         `where' argument. Use it to enforce protected access rules.
10451         (resolve_qualified_expression_name): Added extra argument to
10452         not_accessible_p.
10453         (patch_method_invocation): Use argument `primary' to provide
10454         not_accessible_p with an extra argument.
10455         (lookup_method_invoke): Added extra argument to not_accessible_p.
10456         (search_applicable_method_list): Likewise.
10457
10458 2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
10459
10460         * parse.y (resolve_qualified_expression_name): Try to resolve as
10461         an inner class access only if `decl' is a TYPE_DECL.
10462
10463 2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10464
10465         * decl.c (classdollar_identifier_node): Initialize.
10466         * java-tree.h (enum java_tree_index): New entry
10467         `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
10468         (classdollar_identifier_node): New macro.
10469         (ID_CLASSDOLLAR_P): Likewise.
10470         * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
10471         (build_dot_class_method_invocation): Likewise.
10472         (find_applicable_accessible_methods_list): `class$' can't be
10473         inherited.
10474
10475 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
10476
10477         * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
10478
10479 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
10480
10481         * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
10482         * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
10483         gone.
10484
10485 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
10486
10487         * mangle_name (append_unicode_mangled_name): Emit `_' or `U'
10488         outside of the `__U' sequence too.
10489         (unicode_mangling_length): Count `_' or `U' outside of the `__U'
10490         sequence too.
10491
10492 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
10493
10494         * jvgenmain.c (error): Reversed 2001-02-01 deletion.
10495
10496 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10497
10498         * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
10499         (JVGENMAIN_OBJS): Likewise.
10500         * java-tree.h (append_gpp_mangled_name): New prototype.
10501         * jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
10502         Removed cast calling `gcc_add_root.'
10503         * jvgenmain.c (mangle_obstack): New global, initialized.
10504         (main): Use it.
10505         (do_mangle_class): Constify local `ptr.'
10506         Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
10507         append_gpp_mangle_name and update `count' if necessary.
10508         Use `mangle_obstack.'
10509         * mangle.c (append_unicode_mangled_name): Removed.
10510         (append_gpp_mangled_name): Likewise.
10511         (unicode_mangling_length): Likewise.
10512         (mangle_member_name): Return type set to `void.'
10513         (mangle_field_decl): Don't append `U' in escaped names.
10514         (mangle_method_decl): Likewise.
10515         (mangle_member_name): Just use `append_gpp_mangled_name.'
10516         * mangle_name.c: New file.
10517
10518 2001-02-07  Per Bothner  <per@bothner.com>
10519
10520         * check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.
10521
10522         * check-init.c (check_init):  Don't call done_alternative after
10523         processing loop code, as a LOOP_EXPR never terminates normally.
10524
10525 2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
10526
10527         * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.
10528
10529 2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10530
10531         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
10532         DECLs.
10533
10534 2001-02-06  Tom Tromey  <tromey@redhat.com>
10535
10536         * lex.c (java_new_lexer): Longer error message.
10537
10538 2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
10539             Alexandre Petit-Bianco  <apbianco@cygnus.com>
10540
10541         * typeck.c (build_prim_array_type): Added leading comment.
10542         (build_java_array_type): Moved locals out of
10543         block. Always create the `data' field, fixed alignment to match
10544         C++.
10545
10546 2001-02-04  Tom Tromey  <tromey@redhat.com>
10547
10548         * expr.c (java_lang_expand_expr): Don't bother recomputing
10549         `length'.  Use rest_of_decl_compilation, not make_decl_rtl.
10550         Fixes PR java/1866.
10551
10552 2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10553
10554         * parse.y (process_imports): Save the original name of the import
10555         for better error report.
10556
10557 2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>
10558
10559         * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
10560         of macros used when compiling jvspec.c.
10561         * jvspec.c (lang_specific_driver): Link with the shared
10562         libgcc by default.
10563
10564 2001-02-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10565
10566         * check-init.c (check_init): Call internal_error instead of fatal.
10567         * expr.c (java_lang_expand_expr): Likewise.
10568         * jcf-parse.c (get_constant): Likewise.
10569         * mangle.c (java_mangle_decl): Likewise.
10570         * parse.y (make_nested_class_name, java_complete_lhs): Likewise.
10571         (operator_string): Likewise.
10572         * check-init.c (check_init): Call abort instead of fatal.
10573         * class.c (build_class_ref): Likewise.
10574         * constants.c (write_constant_pool): Likewise.
10575         * decl.c (start_java_method): Likewise.
10576         * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
10577         (java_stack_dup, encode_newarray_type): Likewise.
10578         (build_java_array_length_access): Likewise.
10579         (build_java_check_indexed_type, expand_java_pushc): Likewise.
10580         (build_java_soft_divmod, build_invokeinterface): Likewise.
10581         * java-tree.h (INNER_CLASS_P): Likewise.
10582         * jcf-parse.c (parse_signature, get_name_constant): Likewise.
10583         (give_name_to_class, get_class_constant): Likewise.
10584         * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
10585         (find_constant_index, generate_bytecode_conditional): Likewise.
10586         (generate_bytecode_insns, perform_relocations): Likewise.
10587         * lex.c (java_unget_unicode, java_lex): Likewise.
10588         * mangle.c (mangle_type, mangle_record_type): Likewise.
10589         (mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
10590         (finish_mangling): Likewise.
10591         * parse.h (MARK_FINAL_PARMS): Likewise.
10592         * parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
10593         (obtain_incomplete_type, java_complete_class): Likewise.
10594         (java_check_regular_methods, java_complete_expand_method): Likewise.
10595         (cut_identifier_in_qualified, check_deprecation): Likewise.
10596         (patch_invoke, find_applicable_accessible_methods_list): Likewise.
10597         (java_complete_lhs, lookup_name_in_blocks): Likewise.
10598         (check_final_variable_indirect_assignment, build_unaryop): Likewise.
10599         * typeck.c (set_local_type, parse_signature_type): Likewise.
10600         (parse_signature_string, build_java_signature): Likewise;
10601         (set_java_signature): Likewise.
10602         * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
10603         * class.c (add_method): Call fatal_error instead of fatal.
10604         (build_static_field_ref): Likewise.
10605         * expr.c (build_known_method_ref, expand_invoke): Likewise.
10606         * jcf-parse.c (get_constant, jcf_parse): Likewise.
10607         * lex.c (java_new_new_lexer): Likewise.
10608         * jv-scan.c (main): Likewise.
10609         (fatal_error): Renamed from fatal.
10610         * jcf-parse.c (yyparse): Call fatal_io_error instead of
10611         pfatal_with_name.
10612         * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
10613         (yyparse): Likewise.
10614         * jcf-write.c (make_class_file_name, write_classfile): Likewise.
10615         * lex.c (java_get_line_col): Likewise.
10616         * jcf-parse.c (load_class): Make errors non-fatal.
10617         * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
10618
10619 2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>
10620
10621         * jvgenmain.c (class_mangling_suffix): Remove unused string.
10622         (error): Remove unused function.
10623         (main): Don't use "__attribute__ alias" on generated class symbol.
10624
10625 2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10626
10627         * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
10628         argument.
10629         * parse.y (finish_method_declaration): Code accounting for WFLed
10630         method DECL_NAMEs deleted.
10631         (check_abstract_method_definitions): Likewise.
10632         (resolve_type_during_patch): Layout resolved type.
10633         * typeck.c (lookup_do): Removed unused local.
10634
10635 2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>
10636
10637         * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
10638         * decl.c (init_decl_processing): Use integer_minus_one_node, not
10639         integer_negative_one_node.
10640         * expr.c (build_java_binop): Likewise.
10641
10642 2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>
10643
10644         * zextract.c (read_zip_archive): Read file_offset before writing
10645         zipd and consequently clobbering the header contents.
10646
10647 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10648
10649         * Make-lang.in: Remove all dependencies on defaults.h.
10650         * decl.c: Don't include defaults.h.
10651         * expr.c: Likewise.
10652         * parse.y: Likewise.
10653
10654 2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10655
10656         * ChangeLog (2001-01-21): Fixed typo.
10657         * class.c (layout_class_method): Code accounting for WFLed
10658         method DECL_NAMEs deleted.
10659         * constant.c (find_methodref_index): Likewise.
10660         * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
10661         * java-tree.h (DECL_FUNCTION_WFL): New macro.
10662         (struct lang_decl): New field `wfl'.
10663         (java_get_real_method_name): Prototype deleted.
10664         * mangle.c (mangle_method_decl): Code accounting for WFLed
10665         method DECL_NAMEs deleted.
10666         * parse.h (GET_METHOD_NAME): Macro deleted.
10667         * parse.y (reset_method_name): Deleted.
10668         (method_header): Set DECL_FUNCTION_WFL.
10669         (check_abstract_method_header): Code accounting for WFLed method
10670         DECL_NAMEs deleted.
10671         (java_get_real_method_name): Deleted.
10672         (check_method_redefinition): Code accounting for WFLed method
10673         DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
10674         (java_check_regular_methods): Likewise.
10675         (java_check_abstract_methods): Likewise.
10676         (java_expand_classes): Don't call `reset_method_name.'
10677         (search_applicable_method_list): Use DECL_NAMEs instead of
10678         GET_METHOD_NAME.
10679         * typeck.c (lookup_do): Code accounting for WFLed method
10680         DECL_NAMEs deleted.
10681
10682 2001-01-25  Richard Earnshaw  <rearnsha@arm.com>
10683
10684         * lex.c (java_read_char): Check for EOF from getc first.
10685
10686 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10687
10688         * class.c (layout_class): Don't lay the superclass out if it's
10689         already being laid out.
10690         * jcf-parse.c (handle_innerclass_attribute): New function.
10691         (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
10692         handle_innerclasses_attribute.
10693         (jcf_parse): Don't load an innerclasses if it's already being
10694         laid out.
10695         * jcf-write.c (append_innerclass_attribute_entry): Static
10696         `anonymous_name' and its initialization deleted. `ocii' and `ini'
10697         to be zero for anonymous classes.
10698
10699 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10700
10701         * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
10702         necessary.
10703         * jcf-parse.c (set_source_filename): Use
10704         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
10705
10706 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10707
10708         * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
10709         gets a unique asm name.
10710
10711 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10712
10713         * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
10714         (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
10715         if necessary.
10716         (HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
10717         * jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
10718         * parse.y (lookup_package_type_and_set_next): Deleted.
10719         (resolve_package): Removed unnecessary code.
10720         (find_applicable_accessible_methods_list): `finit$' can't be
10721         inherited.
10722         * verify.c (pop_argument_types): Added missing prototype.
10723
10724 2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>
10725
10726         * config-lang.in: Disable java by default.
10727
10728 2001-01-23  Tom Tromey  <tromey@redhat.com>
10729
10730         * gcj.texi (Copying): New node.
10731         Added copyright information.
10732
10733 2001-01-21  Per Bothner  <per@bothner.com>
10734
10735         Various fixes to allow compiling a compressed .jar/.zip archive.
10736         * zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
10737         (struct ZipFile):  Add fields name and next (from  ZipFileCache).
10738         (struct ZipDirectory):  New field zipf points to owning ZipFile.
10739         * jcf.h (struct ZipDirectory):  Add forward declaration.
10740         (struct JCF):   Declare zipd field to have type struct ZipDirectory.
10741         Remove seen_in_zip and zip_offset fields.
10742         (JCF_SEEN_IN_ZIP):  New macro.
10743         * zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
10744         * jcf-io.c:  Change all ZipFileCache to ZipFile.
10745         (read_zip_member):  New function.
10746         (open_in_zip):  Call read_zip_member.
10747         * jcf-parse.c (find_in_current_zip):  Remove function.
10748         (read_class):  Merge in find_in_current_zip functionality.
10749         Call read_zip_member if needed.
10750         (parse_zip_file_entries):  Use read_zip_member.
10751         (process_zip_dir):  Update for removed and added JCF fields.
10752         (jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.
10753
10754 2001-01-21  Per Bothner  <per@bothner.com>
10755
10756         Minor optimization of static ggc roots.
10757         * jcf-parse.c (parse_roots):  New static field.
10758         (current_field, current_method, current_file_list):  Replace by macros
10759         naming fields of parse_roots.
10760         (init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
10761         * class.c (class_roots):  New static field.
10762         (registered_class, fields_ident, info_ident, class_list):
10763         New macros naming fields of parse_roots.
10764         (build_static_field_ref):  Don't register roots here.
10765         (layout_class):  Static field list replaced by macro class_list.
10766         (init_class_processing):  Call ggc_add_tree_root for 4 roots.
10767         Initialize fields_ident and info_ident here.
10768
10769 2001-01-21  Per Bothner  <per@bothner.com>
10770
10771         * jcf-parse.c (ggc_mark_jcf):  New function.
10772         (init_jcf_parse):  Register current_jcf as ggc root.
10773
10774 2001-01-21  Per Bothner  <per@bothner.com>
10775
10776         * lang.c (put_decl_node):  Print method's name.
10777
10778 2001-01-21  Per Bothner  <per@bothner.com>
10779
10780         * verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
10781         (verify_jvm_instructions):  Use it, for better error messages on loads.
10782
10783 2001-01-21  Per Bothner  <per@bothner.com>
10784
10785         * verify.c (merge_type_state):  Still may have to merge even if
10786         LABEL_VERIFIED (label).
10787
10788 2001-01-21  Per Bothner  <per@bothner.com>
10789
10790         * parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
10791         to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
10792
10793 2001-01-19  Per Bothner  <per@bothner.com>
10794
10795         * expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
10796         if expeting an interface type.  Refines Tom's change of 2000-09-12.
10797
10798 2001-01-18  Per Bothner  <per@bothner.com>
10799
10800         * gcj.texi (Input Options): Mention .java files.
10801
10802 2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10803
10804         * lang-options.h (-Wunsupported-jdk11): Removed.
10805         * lang.c (flag_not_overriding): Deleted.
10806         (flag_static_local_jdk1_1): Likewise.
10807         (lang_W_options): Removed "unsupported-jdk11" entry.
10808         * parse.y (java_check_methods): Removed dead code.
10809
10810 2001-01-17  Tom Tromey  <tromey@redhat.com>
10811
10812         Changes suggested by Per Bothner:
10813         * gcj.texi (Input Options): Don't mention input files.
10814         (Code Generation): Updated --main information.
10815         (Invoking jcf-dump): Mention that --javap is incomplete.
10816         From Alexandre Petit-Bianco:
10817         (Warnings): Don't mention -Wunsupported-jdk11.
10818         My stuff:
10819         (Compatibility): Mention JDK 1.2-ness of libraries.
10820         (Resources): Mention resources used when writing gcj.
10821
10822 2001-01-17  Tom Tromey  <tromey@redhat.com>
10823
10824         * gcj.texi: New file.
10825         * Make-lang.in ($(srcdir)/java/gcj.info): New target.
10826         (java.info): Depend on gcj.info.
10827         (java/gcj.dvi): New target.
10828         (java.dvi): Depend on gcj.dvi.
10829         (java.install-info): Wrote.
10830
10831 2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>
10832
10833         * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
10834         having called make_decl_rtl.
10835
10836 2001-01-14  Per Bothner  <per@bothner.com>
10837
10838         Various patches to emit better messages on verification errors.
10839         * expr.c (push_type_0):  Return error indication on stack overflow,
10840         instead of callinfg fatal.
10841         (push_type):  Now just call push_type_0 (nd fatal on overflow).
10842         (pop_type_0):  Return detailed error message (in a char** argument).
10843         (pop_type):  If pop_type_0 fails, print error message.
10844         (pop_argument_types):  Moved to verify.c.
10845         * verify.c (pop_argument_types):  Moved from expr.c.
10846         Return a (possible) error message, rather than void.
10847         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
10848         (verify_jvm_instruction):  Use new macros, improving error messages.
10849         For case OPCODE_astore use object_ptr_type_node.
10850         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
10851         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
10852
10853         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
10854         constant, return body without wrapper.  (Improves constant folding.)
10855         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
10856
10857 2001-01-13  Per Bothner  <per@bothner.com>
10858
10859         * expr.c (expand_java_field_op):  Assigning to a final field outside
10860         an initializer does not violate JVM spec, so should be warning, not
10861         error.  (Sun's verifier does not complain - though MicroSoft's does.)
10862
10863 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
10864
10865         * gjavah.c (version), jcf-dump.c (version): Update copyright year
10866         to 2001.
10867
10868 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
10869
10870         * parse.y (resolve_expression_name): Permit instance variables from
10871         enclosing context in super constructor call.
10872         (resolve_qualified_expression_name): Permit enclosing class's qualified
10873         "this" in super constructor call.
10874
10875 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
10876
10877         * class.c (build_utf8_ref): Remove last argument in call to
10878         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
10879         (build_class_ref): Likewise.
10880         (build_static_field_ref): Likewise.
10881         (get_dispatch_table): Likewise.
10882         (layout_class_method): Likewise.
10883         (emit_register_classes): Likewise.
10884         * constants.c (build_constant_data_ref): Likewise.
10885         * decl.c (builtin_function): Likewise.
10886         (create_primitive_vtable): Likewise.
10887         * expr.c (build_known_method_def): Likewise.
10888         (build_jni_stub): Likewise.
10889         (java_lang_expand_expr): Likewise.
10890
10891 2001-01-10  Tom Tromey  <tromey@redhat.com>
10892
10893         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
10894
10895 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10896
10897         * java-tree.h (lang_printable_name_wls): New prototype.
10898         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
10899         rather than `current_class' to print type name. Don't prepend type
10900         names when printing constructor names.
10901         (lang_printable_name_wls): New function.
10902         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
10903         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
10904         * parse.y (patch_method_invocation): Message tuned for constructors.
10905         (not_accessible_p): Grant `private' access from within
10906         enclosing contexts.
10907
10908 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10909
10910         All files with updated copyright when applicable.
10911         * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
10912         * class.c (mangle_class_field): Function removed.
10913         (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
10914         (utf8_cmp, cxx_keyword_p): Moved to lex.c.
10915         (build_class_ref): Call `java_mangle_class_field' instead of
10916         `mangle_class_field.'
10917         (build_dtable_decl): Rewritten to call `java_mangle_vtable.'
10918         (layout_class): Call `java_mangle_decl' instead of
10919         `mangle_static_field.'
10920         (cxx_keywords): Initialized static array moved to `lex.c.'
10921         (layout_class_method): Changed leading comment. Simplified to
10922         call `java_mangle_decl.' Local `ptr' moved in for loop body.
10923         * decl.c (lang_mark_tree): Mark field `package_list.'
10924         * java-tree.h (TYPE_PACKAGE_LIST): New macro.
10925         (struct lang_type): New field `package_list.'
10926         (unicode_mangling_length): Prototype removed.
10927         (append_gpp_mangled_name, append_gpp_mangled_classtype,
10928         emit_unicode_mangled_name): Likewise.
10929         (cxx_keyword_p): New prototype.
10930         (java_mangle_decl, java_mangle_class_field,
10931         java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
10932         * jcf-parse.c (jcf_parse_source): Constify `file' argument to
10933         `build_expr_wfl.'
10934         * jvgenmain.c (main_method_prefix): Global variable removed.
10935         (main_method_suffix): Likewise.
10936         (do_mangle_classname): New function.
10937         (main): Call it. Format changed to accommodate new mangling scheme.
10938         * lex.c: (utf8_cmp): Conditionally prototyped.
10939         (cxx_keywords): Moved from class.c, conditionally defined.
10940         (utf8_cmp, cxx_keyword_p): Likewise.
10941         * mangle.c (obstack.h, ggc.h): Included.
10942         (mangle_field_decl): New function.
10943         (mangle_method_decl, mangle_type, mangle_pointer_type,
10944         mangle_array_type, mangle_record_type,
10945         find_compression_pointer_match, find_compression_array_match,
10946         find_compression_record_match,
10947         find_compression_array_template_match, set_type_package_list,
10948         entry_match_pointer_p, emit_compression_string, init_mangling,
10949         finish_mangling, compression_table_add, mangle_member_name): Likewise.
10950         (mangle_obstack): New global.
10951         (MANGLE_RAW_STRING): New macro.
10952         (unicode_mangling_length): Turned static.
10953         (append_unicode_mangled_name): Renamed from
10954         `emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
10955         replaces `obstack', removed from the parameter list.
10956         (append_gpp_mangled_name): Turned static. `mangle_obstack'
10957         replaces parameter `obstack', removed from the parameter list. Call
10958         `append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
10959         (append_gpp_mangled_classtype): Removed.
10960         (compression_table, compression_next): New static variables.
10961         * parse.y (temporary_obstack): Extern declaration removed.
10962
10963 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10964
10965         * parse.y (patch_binop): Compute missing type in error situations.
10966
10967 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
10968
10969         * class.c (make_class_data): Push initial value for "arrayclass".
10970         * decl.c (init_decl_processing): Add new class field "arrayclass".
10971
10972 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
10973
10974         From patha@softlab.ericsson.se:
10975         * parse.y (switch_label): Use build, not build1, to construct
10976         DEFAULT_EXPR.
10977
10978 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
10979
10980         * lang.c (lang_decode_option): Change -MA to -MP.
10981         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
10982         Update to new prototype; do quote targets.
10983         (jcf_dependency_write): Update.
10984
10985 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
10986
10987         Shorten primitive array allocation path:
10988         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
10989         to create new primitive arrays.
10990         * expr.c (build_newarray): If generating native code, call
10991         soft_newarray_node with a reference to the primitive TYPE identifier
10992         instead of type_value.
10993
10994 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
10995
10996         Fix for PRs gcj/312 and gcj/253:
10997         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
10998         dest if they arn't already.
10999         * class.c (layout_class): Call maybe_layout_super_class on
11000         superinterfaces also, but only if compiling from bytecode.
11001
11002         Fix for PR gcj/373:
11003         * parse.y (create_class): Set ACC_STATIC if class is declared in an
11004         interface.
11005
11006 2000-12-15  Tom Tromey  <tromey@redhat.com>
11007
11008         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
11009         set.
11010
11011 2000-12-14  Andrew Haley  <aph@redhat.com>
11012
11013         * boehm.c (mark_reference_fields): Change test to correctly detect
11014         bitmap overflow.
11015
11016 2000-12-15  Andreas Jaeger  <aj@suse.de>
11017
11018         * config-lang.in (lang_dirs): Added.
11019
11020 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11021
11022         * parse.y (end_artificial_method_body): Fixed undefined behavior.
11023         Credits go to rth for finding it.
11024
11025 2000-12-13  Mike Stump  <mrs@wrs.com>
11026
11027         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
11028
11029 2000-11-07  Tom Tromey  <tromey@cygnus.com>
11030
11031         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
11032         * lex.c (java_ignorable_control_p): Removed.
11033         (java_letter_or_digit_p): Removed.
11034         (java_start_char_p): New function.
11035         (java_read_char): Return `int', not `unicode_t'.  Changed
11036         callers.
11037         (java_read_unicode): Likewise.
11038         (java_read_unicode_collapsing_terminators): Likewise.
11039         (java_get_unicode): Likewise.
11040         (java_new_lexer): Initialize hit_eof.
11041         (java_parse_end_comment): Take `int' argument.
11042         (java_parse_doc_section): Likewise.
11043         (java_parse_escape_sequence): Don't allow backlash-newline.
11044         Return `int'.
11045         * lex.h (JAVA_DIGIT_P): Removed.
11046         (_JAVA_LETTER_OR_DIGIT_P): Removed.
11047         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
11048         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
11049         (JAVA_PART_CHAR_P): New macro.
11050         (UEOF): Now -1.
11051         (JAVA_CHAR_ERROR): Now -2.
11052         (java_lexer): New field `hit_eof'.
11053         * chartables.h: New file.
11054         * gen-table.pl: new file.
11055
11056 2000-11-20  Tom Tromey  <tromey@cygnus.com>
11057             Alexandre Petit-Bianco  <apbianco@cygnus.com>
11058
11059         * parse.y (java_complete_lhs): Only allow compound assignment of
11060         reference type if type is String.
11061
11062 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11063
11064         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
11065         jcf-path.c: Likewise.
11066
11067 2000-12-09  Anthony Green  <green@redhat.com>
11068
11069         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
11070         filestart and filename_length as int values.
11071
11072 2000-12-07  Mo DeJong  <mdejong@redhat.com>
11073
11074         * jcf-io.c (find_class): Correct the logic that tests to see if a
11075         .java file is newer than its .class file. The compiler was
11076         incorrectly printing a warning when file mod times were equal.
11077
11078 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
11079
11080         * jvgenmain.c: Use ISPRINT not isascii.
11081
11082 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11083
11084         * parse.y (end_artificial_method_body): Fixed typo.
11085
11086 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11087
11088         * parse.y (patch_method_invocation): Pick the correct enclosing
11089         context when creating inner class instances.
11090         Fixes gcj/332.
11091
11092 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
11093
11094         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
11095         Update copyright year to 2000.
11096
11097 2000-11-23  Anthony Green  <green@redhat.com>
11098
11099         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
11100         Move current_file_list out of yyparse and make it static.
11101
11102         * expr.c: Declare quick_stack and tree_list_free_list as static
11103         (init_expr_processing): Register quick_stack and
11104         tree_list_free_list roots.
11105
11106 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11107
11108         * parse.y (build_outer_field_access): New local `decl_ctx', use
11109         it. Check for field's context and current class immediate outer
11110         context inheritance.
11111         (outer_field_access_p): Consider fields inherited from the last
11112         enclosing context.
11113         (build_access_to_thisn): Stop at the last enclosing context if
11114         necessary.
11115         Fixes gcj/367.
11116
11117 2000-11-23  J"orn Rennecke <amylaar@redhat.com>
11118
11119         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
11120
11121 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
11122
11123         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
11124         scratch buffer.
11125
11126 2000-11-20  Tom Tromey  <tromey@cygnus.com>
11127
11128         * jv-scan.c (help): Document --complexity.
11129         (options): Added --complexity.
11130         (flag_complexity): New global.
11131         (main): Call `report'.
11132         * parse-scan.y (complexity): New global.
11133         (if_then_statement, if_then_else_statement,
11134         if_then_else_statement_nsi, switch_block_statement_group,
11135         while_expression, do_statement, for_begin, continue_statement,
11136         throw_statement, catch_clause, finally, method_invocation,
11137         conditional_and_expression, conditional_or_expression,
11138         conditional_expression): Update complexity.
11139         (reset_report): Reset complexity.
11140         (report): New function.
11141
11142 2000-11-20  Tom Tromey  <tromey@cygnus.com>
11143
11144         * lex.c (yylex): Added STRICT_TK case.
11145         * parse.y (STRICT_TK): Added.
11146         * parse-scan.y (STRICT_TK): Added.
11147         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
11148         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
11149         file.
11150         * keyword.h: Rebuilt.
11151         * keyword.gperf (strictfp): Added.
11152
11153 2000-11-20  Tom Tromey  <tromey@cygnus.com>
11154
11155         * lex.c (yylex): Recognize floating point constants with leading
11156         0.
11157
11158 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11159
11160         * java-tree.h (cyclic_inheritance_report): Constify.
11161         * parse.y (cyclic_inheritance_report): Likewise.
11162
11163 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
11164
11165         * parse.y (goal): Remove call to ggc_add_string_root.
11166
11167 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
11168
11169         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
11170         Create string in scratch buffer, then pass to build_string.
11171
11172 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
11173
11174         * parse.y (issue_warning_error_from_context): Add
11175         ATTRIBUTE_PRINTF.
11176
11177 2000-11-11  Anthony Green  <green@redhat.com>
11178
11179         * jcf-parse.c (process_zip_dir): Add finput parameter.
11180         (jcf_figure_file_type): Call process_zip_dir with appropriate
11181         argument.
11182
11183 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11184
11185         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
11186         * jcf-parse.c (jcf_figure_file_type): Likewise.
11187
11188 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
11189
11190         * parse.y (create_new_parser_context): Use memset () instead of
11191         bzero ().
11192
11193 2000-11-08  Tom Tromey  <tromey@cygnus.com>
11194
11195         * gjavah.c (process_file): Only include gcj/cni.h when generating
11196         CNI stubs.
11197
11198 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
11199
11200         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
11201         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
11202         instead of bzero ().
11203
11204 2000-11-05  Tom Tromey  <tromey@cygnus.com>
11205
11206         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
11207         * lex.c (IS_ZERO): New define.
11208         (java_perform_atof): Error on floating point underflow.
11209
11210 2000-11-04  Tom Tromey  <tromey@cygnus.com>
11211
11212         * lex.c (java_parse_escape_sequence): Only read two octal
11213         characters if the first one is greater than 3.  Don't allow
11214         "octal" numbers to include the digits 8 or 9.
11215
11216 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
11217
11218         * Make-lang.in (java.distdir): Remove.
11219
11220 2000-11-03  Tom Tromey  <tromey@cygnus.com>
11221
11222         * Make-lang.in (java.dvi): New target.
11223         Partial fix for PR other/567.
11224
11225         * lang-options.h: Mention -Wout-of-date.
11226         * jcf-dump.c (flag_newer): New global.
11227         * gjavah.c (flag_newer): New global.
11228         * jcf-io.c (find_class): Only warn when flag_newer set.
11229         * lang.c (flag_newer): New global.
11230         (struct string_option): New declaration.
11231         (lang_W_options): New global.
11232         (process_option_with_no): New function.
11233         (lang_decode_option): Use it.
11234
11235         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
11236         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
11237         `$'.
11238
11239         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
11240         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
11241         * lex.c (java_read_unicode): Removed `term_context' argument.
11242         Recognize any number of `u' in `\u'.
11243         (java_read_unicode_collapsing_terminators): New function.
11244         (java_get_unicode): Use it.
11245         (java_lineterminator): Removed.
11246         (yylex): Produce error if character literal is newline or single
11247         quote.  Return if eof found in middle of `//' comment.  EOF in
11248         `//' comment is only an error if pedantic.
11249         (java_ignorable_control_p): New function.
11250         (java_parse_end_comment): Return if eof found in middle of
11251         comment.
11252         Include flags.h.
11253         * jv-scan.c (pedantic): New global.
11254
11255 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11256
11257         * parse.y (outer_field_access_p): Inherited fields aren't
11258         consider outer fields.
11259         (maybe_build_thisn_access_method): Use
11260         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
11261         (resolve_expression_name): Trigger an error if a static field
11262         is being accessed as an outer field.
11263
11264 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11265
11266         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
11267         Fixes gcj/365.
11268
11269 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
11270
11271         * Make-lang.in: Move all build rules here from Makefile.in,
11272         adapt to new context.  Wrap all rules that change the current
11273         directory in parentheses.  Expunge all references to $(P).
11274         When one command depends on another and they're run all at
11275         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
11276         all object-file generation rules.  Delete obsolete variables.
11277
11278         * Makefile.in: Delete.
11279         * config-lang.in: Delete outputs= line.
11280
11281 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11282
11283         * parse.y (patch_method_invocation): NULLify this_arg when already
11284         inserted.
11285         (maybe_use_access_method): Handle call to methods unrelated to the
11286         current class. Fixed comment.
11287         Fixes gcj/361.
11288
11289 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11290
11291         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
11292         scope.
11293
11294 2000-10-24  Tom Tromey  <tromey@cygnus.com>
11295
11296         * lex.c (java_new_lexer): Initialize new fields.  Work around
11297         broken iconv() implementations.
11298         (java_read_char): Swap bytes if required.  Use fallback decoder if
11299         required.
11300         (byteswap_init, need_byteswap): New globals.
11301         (java_destroy_lexer): Only close iconv handle if it is in use.
11302         * lex.h (java_lexer): New fields read_anything, byte_swap,
11303         use_fallback.
11304         Made out_buffer unsigned.
11305
11306 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11307
11308         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
11309         where an enclosing context can be set on the jdep.
11310         (do_resolve_class): Fixed identation.
11311
11312 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11313
11314         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
11315
11316         * jcf-reader.c (peek_attribute, skip_attribute): Only define
11317         when requested.
11318
11319         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
11320
11321         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
11322
11323 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11324
11325         * jcf-write.c (OP1): Update `last_bc'.
11326         (struct jcf_block): Fixed indentation and typo in comments.  New
11327         field `last_bc'.
11328         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
11329         follows `monitorenter'.
11330         * parse.y (patch_synchronized_statement): New local `tmp'. Call
11331         `patch_string'.
11332         Fixes gcj/232.
11333
11334 2000-10-16  Tom Tromey  <tromey@cygnus.com>
11335
11336         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
11337         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
11338         * lang-options.h: Added -MA, -MT, -MF..
11339         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
11340         (DEPEND_TARGET_SET): New macro.
11341         (DEPEND_FILE_ALREADY_SET): Likewise.
11342         (init_parse): Handle new flags.
11343         * jcf.h (jcf_dependency_print_dummies): Declare.
11344         * Make-lang.in (s-java): Added mkdeps.o.
11345         * Makefile.in (BACKEND): Added mkdeps.o.
11346         (../gcjh$(exeext)): Added mkdeps.o.
11347         (../jcf-dump$(exeext)): Added mkdeps.o.
11348         * jcf-depend.c: Include mkdeps.h.
11349         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
11350         add_entry): Removed.
11351         (jcf_dependency_reset): Rewrote.
11352         (dependencies): New global.
11353         (jcf_dependency_set_target): Rewrote.
11354         (jcf_dependency_add_target): Likewise.
11355         (jcf_dependency_add_file): Likewise.
11356         (munge): Removed.
11357         (print_ents): Removed.
11358         (jcf_dependency_write): Rewrote.
11359         (print_dummies): New global.
11360         (jcf_dependency_print_dummies): New function
11361         (jcf_dependency_write): Call deps_dummy_targets if required.
11362
11363 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11364
11365         * gjavah.c (add_class_decl): Removed unused variables `tname',
11366         `tlen' and `name_index'.
11367         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
11368         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
11369         in `wfl_operator' with value.
11370         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
11371         (jcf_figure_file_type): Fixed identation.
11372         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
11373         * parse.y (analyze_clinit_body): New function.
11374         (static_initializer:): Reset `current_static_block'.
11375         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
11376         `wfl_operator' with new value.
11377         (lookup_cl): Use EXPR_WFL_FILENAME.
11378         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
11379         analyze_clinit_body.
11380         (build_outer_field_access): Access to this$<n> built from
11381         current_class, not its outer context.
11382         (build_access_to_thisn): Fixed leading comment. Tidied things up.
11383         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
11384         (patch_method_invocation): Use `is_static_flag' when already
11385         initialized.
11386         (patch_newarray): Removed assignment in ternary operator.
11387
11388 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11389
11390         * except.c (free_eh_ranges): Don't free `whole_range'.
11391
11392 2000-10-15  Anthony Green  <green@redhat.com>
11393
11394         * decl.c (init_decl_processing): Call init_class_processing before
11395         anything else.
11396
11397 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11398
11399         * check-init.c (check_init): Fixed leading comment. Use
11400         LOCAL_FINAL_P.
11401         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
11402         (give_name_to_locals): Likewise.
11403         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
11404         fields in lang_decl_var.
11405         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
11406         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
11407         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
11408         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
11409         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
11410         (LOCAL_FINAL): Rewritten.
11411         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
11412         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
11413         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
11414         `init_final' fields.
11415         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
11416         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
11417         (TYPE_HAS_FINAL_VARIABLE): New macro.
11418         (struct lang_type): Added `afv' field.
11419         * parse.y (check_static_final_variable_assignment_flag): New function.
11420         (reset_static_final_variable_assignment_flag): Likewise.
11421         (check_final_variable_local_assignment_flag): Likewise.
11422         (reset_final_variable_local_assignment_flag): Likewise.
11423         (check_final_variable_indirect_assignment): Likewise.
11424         (check_final_variable_global_assignment_flag): Likewise.
11425         (add_inner_class_fields): Use LOCAL_FINAL_P.
11426         (register_fields): Handle local finals and final variables.
11427         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
11428         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
11429         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
11430         on local finals.
11431         (java_complete_expand_methods): Loop to set
11432         TYPE_HAS_FINAL_VARIABLE. Call
11433         `reset_final_variable_local_assignment_flag' and
11434         `check_final_variable_local_assignment_flag' accordingly before
11435         and after constructor expansion. Call
11436         `reset_static_final_variable_assignment_flag'
11437         before expanding <clinit> and after call
11438         `check_static_final_variable_assignment_flag' if the
11439         current_class isn't an interface. After all methods have been
11440         expanded, call `check_final_variable_global_assignment_flag' and
11441         `check_static_final_variable_assignment_flag' if the current class
11442         is an interface.
11443         (maybe_yank_clinit): Fixed typo in comment.
11444         (build_outer_field_access_methods): Removed old sanity check. Use
11445         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
11446         Don't create access methods for finals.
11447         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
11448         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
11449         existing DECL_INIT has been processed.
11450         (java_complete_lhs): Likewise.
11451         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
11452         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
11453         logic.
11454         (patch_assignment): Use LOCAL_FINAL_P.
11455         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
11456         DECL_INITIAL is nullified.
11457         Fixes gcj/163.
11458
11459 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11460
11461         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
11462
11463         * Makefile.in (parse.c, parse-scan.c): Likewise.
11464
11465 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
11466
11467         * class.c (temporary_obstack): Remove.
11468         (make_class): Don't mess with obstascks.
11469         (push_class): Likewise.
11470         (set_super_info): Likewise.
11471         (add_method_1): Likewise.
11472         (add_method): Likewise.
11473         (add_field): Likewise.
11474         (build_utf8_ref): Likewise.
11475         (build_class_ref): Likewise.
11476         (build_static_field_ref): Likewise.
11477         (finish_class): Likewise.
11478         (push_super_field): Likewise.
11479         (layout_class): Likewise.
11480         (layout_class_methods): Likewise.
11481         (init_class_processing): Likewise.
11482         * constants.c (get_tag_node): Likewise.
11483         (build_constant_data_ref): Likewise.
11484         * decl.c (ggc_p): Remove.
11485         (copy_lang_decl): Use ggc_alloc.
11486         (complete_start_java_method): Don't mess with obstacks.
11487         (start_java_method): Likewise.
11488         (end_java_method): Likewise.
11489         * except.c (link_handler): Use xmalloc.
11490         (free_eh_ranges): New function.
11491         (method_init_exceptions): Use it.
11492         (add_handler): Use xmalloc.
11493         (expand_start_java_handler): Don't mess with obstacks.
11494         (prepare_eh_table_type): Likewise.
11495         (expand_end_java_handler): Likewise.
11496         * expr.c (push_value): Likewise.
11497         (create_label_decl): Likewise.
11498         (build_jni_stub): Likewise.
11499         (java_lang_expand_expr): Likewise.
11500         (note_instructions): Use xrealloc.
11501         (java_push_constant_from_pool): Don't mess with obstacks.
11502         (process_jvm_instruction): Likewise.
11503         * java-tree.h (cyclic_inheritance_report): Remove duplicate
11504         declaration.
11505         * jcf-parse.c (get_constant): Don't mess with obstacks.
11506         (read_class): Likewise.
11507         (jcf_parse): Likewise.
11508         * lex.c (expression_obstack): Remove.
11509         (java_lex): Don't use obstack_free.
11510         * parse.h (exit_java_complete_class): Don't mess with obstacks.
11511         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
11512         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
11513         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
11514         * parse.y (gaol): Add more GC roots.
11515         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
11516         (lookup_field_wrapper): Likewise.
11517         (obtain_incomplete_type): Don't mess with obstacks.
11518         (build_alias_initializer_parameter_list): Adjust calls to MANGLE_*
11519         macros.
11520         (craft_constructor): Don't mess with obstacks.
11521         (safe_layout_class): Likewise.
11522         (java_complete_class): Likewise.
11523         (source_end_java_method): Likewise.
11524         (build_outer_field_access_methods): Likewise.
11525         (build_outer_method_access_method): Likewise.
11526         (maybe_build_thisn_access_method): Likewise.
11527         (build_dot_class_method_invocation): Likewise.
11528         (java_complete_tree): Likewise.
11529         (java_complete_lhs): Likewise.
11530         (do_merge_string_cste): Likewise.
11531         (patch_string_cst): Likewise.
11532         (array_constructor_check_entry): Likewise.
11533         * typeck.c (build_java_array_type): Likewise.
11534         (parse_signature_string): Likewise.
11535         (build_java_signature): Likewise.
11536
11537 2000-10-12  Tom Tromey  <tromey@cygnus.com>
11538
11539         Fix for PR gcj/356:
11540         * gjavah.c (add_class_decl): Don't special-case inner classes.
11541         (add_namelet): Likewise.
11542
11543 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
11544
11545         * java-tree.h: Constify current_encoding.
11546         * lang.c: Constify current_encoding.
11547
11548 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
11549
11550         * jvgenmain.c (class_mangling_suffix): Omit `.'.
11551         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
11552
11553 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11554
11555         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
11556         patch. Fixes gcj/340.
11557
11558 2000-10-10  Tom Tromey  <tromey@cygnus.com>
11559
11560         * lex.c (java_new_lexer): Initialize out_first and out_last
11561         fields.
11562         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
11563
11564 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11565
11566         * parse.y (pop_current_osb): New function.
11567         (array_type:): Use `dims:', changed actions
11568         accordingly. Suggested by Anthony Green.
11569         (array_creation_expression:): Used pop_current_osb.
11570         (cast_expression:): Likewise.
11571         (search_applicable_method_list): Fixed indentation.
11572
11573 2000-10-08  Anthony Green  <green@redhat.com>
11574
11575         * parse.y (array_type_literal): Remove production.
11576         (type_literals): Refer to array_type, not array_type_literal.
11577
11578 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11579
11580         Patch contributed by Corey Minyard.
11581         * decl.c (check_local_named_variable): New function.
11582         (tree check_local_unnamed_variable): Likewise.
11583         (find_local_variable): Splitted. Call check_local_{un}named_variable.
11584
11585 2000-10-07  Anthony Green  <green@redhat.com>
11586
11587         * class.c (layout_class): Handle case where superclass can't be
11588         layed out yet.
11589
11590 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
11591
11592         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
11593         gperf.
11594
11595 2000-10-05  Tom Tromey  <tromey@cygnus.com>
11596
11597         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
11598         * jvgenmain.c (class_mangling_prefix): Removed.
11599         (class_mangling_suffix): New global.
11600         (main): Use it.
11601         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
11602         `$'.
11603         (print_method_info): Handle overrides for static and final
11604         methods.
11605         (process_file): Generate declaration for class object field.
11606         * class.c (cxx_keywords): New array.
11607         (utf8_cmp): New function.
11608         (cxx_keyword_p): New function.
11609         (layout_class_method): Mangle C++ keywords by appending `$'.
11610         (mangle_field): New function.
11611         (mangle_class_field): Use mangle_field.  Mangle class name as
11612         `class$'.
11613         (mangle_static_field): Use mangle_field.
11614
11615 2000-10-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11616
11617         * decl.c (find_local_variable): Removed uncessary type check and
11618         fixed range check typo. From Corey Minyard.
11619
11620 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11621
11622         * decl.c (give_name_to_locals): New local `code_offset'. Call
11623         `maybe_adjust_start_pc'.
11624         * expr.c (note_instructions): New function.
11625         (expand_byte_code): Don't collect insn starts here.
11626         (peek_opcode_at_pc): New function.
11627         (maybe_adjust_start_pc): Likewise.
11628         * java-tree.h (maybe_adjust_start_pc): Declare.
11629         (note_instructions): Likewise.
11630         * jcf-parse.c (parse_class_file): Call `note_instructions'.
11631
11632 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11633
11634         * parse.y (field_access:): Fixed indentation.
11635         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
11636
11637 2000-09-07  Tom Tromey  <tromey@cygnus.com>
11638
11639         Fix for PR gcj/307:
11640         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
11641         JPRIMITIVE_TYPE_P, for arithmetic operators.
11642         (patch_method_invocation): Indentation fix.
11643         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
11644         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
11645         (do_unary_numeric_promotion): Cleaned up code.
11646         (valid_cast_to_p): Handle boolean correctly.
11647
11648 2000-09-27  Tom Tromey  <tromey@cygnus.com>
11649
11650         * lex.c (java_read_unicode): Reset bs_count when finished with
11651         `\u' sequence.
11652
11653 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
11654
11655         Convert to GC.
11656         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
11657         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
11658         (typeck.o): Depend on ggc.h.
11659         * class.c (add_method_1): Use GC functions for allocation.
11660         (init_class_processing): Register roots.
11661         * decl.c (ggc_p): Set to 1.
11662         (pending_local_decls): Make it static.
11663         (push_jvm_slot): Use GC functions for allocation.
11664         (init_decl_processing): Register roots.
11665         (give_name_to_locals): Use GC functions for allocation.
11666         (lang_mark_tree): New function.
11667         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
11668         functions for allocation.
11669         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
11670         * lex.c (java_lex): Use build_string, rather than replicating it
11671         inline.
11672         * parse.y (goal): Add more roots.
11673         (mark_parser_ctxt): New function.
11674         * typeck.c: Include ggc.h.
11675
11676 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11677
11678         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
11679         contains something else than MODIFY_EXPR.
11680
11681 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
11682
11683         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
11684         * Makefile.in (parse.o): Depend on ggc.h.
11685         (class.o): Likewise.
11686         (constants.o): Likewise.
11687         (decl.o): Likewise.
11688         (expr.o): Likewise.
11689         (jcf-parse.o): Likewise.
11690         (jcf-write.o): Likewise.
11691         (mangle.o): Likewise.
11692         * class.c: Include ggc.h.
11693         (build_static_field_ref): Register GC roots.
11694         (layout_class): Likewise.
11695         (init_class_processing): Likewise.
11696         * constants.c: Include ggc.h.
11697         (current_constant_pool_data_ref): Remove.
11698         (tag_nodes): Move it to ...
11699         (get_tag_node): ... here.  Register GC roots.
11700         * decl.c: Include ggc.h.  Remove many global tree definitions.
11701         (throw_node): Define.
11702         (java_global_trees): Likewise.
11703         (predef_filenames): Make the size a constant.
11704         (init_decl_processing): Adjust accordingly.
11705         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
11706         * expr.c: Include ggc.h.
11707         (init_expr_processing): Register GC roots.
11708         (build_invokeinterface): Likewise.
11709         * java-tree.h: Replace extern tree declarations with macros.
11710         (java_global_trees): New variable.
11711         (java_tree_index): New enumeration.
11712         (init_jcf_parse): Declare.
11713         * jcf-parse.c: Include ggc.h.
11714         (current_class): Remove declaration.
11715         (main_class): Likewise.
11716         (all_class_list): Likewise.
11717         (predefined_filename_p): Adjust for constant size of
11718         predef_filenames.
11719         (init_jcf_parse): New function.
11720         * jcf-write.c: Include ggc.h.
11721         (generate_classfile): Register GC roots.
11722         (append_synthetic_attribute): Likewise.
11723         (append_innerclass_attribute_entry): Likewise.
11724         * lang.c: Include ggc.h.
11725         (lang_print_error): Register GC roots.
11726         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
11727         with macros.
11728         * parse.y: Include ggc.h.
11729         (wfl_operator): Remove.
11730         (goal): Register GC roots.
11731         (java_pop_parser_context): Adjust for new field names.
11732         (java_parser_context_save_global): Likewse.
11733         (java_parser_context_restore_global): Likewise.
11734         (java_parser_context_suspend): Likewise.
11735         (java_parser_context_resume): Likewise.
11736         (verify_constructor_circularity): Register GC roots.
11737         (lookup_cl): Likewise.
11738         (java_reorder_fields): Likewise.
11739         (build_current_this): Likewise.
11740         (class_in_current_package): Likewise.
11741         (argument_types_convertible): Likewise.
11742         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
11743
11744 2000-09-14  Tom Tromey  <tromey@cygnus.com>
11745
11746         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
11747
11748 2000-09-13  Tom Tromey  <tromey@cygnus.com>
11749
11750         * jcf-parse.c: Include <locale.h>.
11751         * jv-scan.c: Include <locale.h>.
11752
11753 2000-09-12  Tom Tromey  <tromey@cygnus.com>
11754
11755         * expr.c (pop_type_0): Return `Object' if trying to merge two
11756         interface types.
11757         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
11758         interface types; `Object' is always a valid supertype.
11759
11760 2000-09-12  Tom Tromey  <tromey@cygnus.com>
11761
11762         Fix for PR gcj/33:
11763         * jv-scan.c (help): Document --encoding.
11764         (options): Added `encoding' entry.
11765         (OPT_ENCODING): New define.
11766         (main): Handle --encoding.
11767         Include <langinfo.h> if nl_langinfo exists.
11768         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
11769         --encoding.
11770         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
11771         (parse_source_file): Correctly call java_init_lex.  Added `finput'
11772         argument.  Use nl_langinfo to determine default encoding.
11773         * java-tree.h (current_encoding): Declare.
11774         * parse.y (java_parser_context_restore_global): Don't restore
11775         `finput'.
11776         (java_parser_context_save_global): Don't set `finput' field.
11777         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
11778         if required.
11779         * lang.c (current_encoding): New global.
11780         (lang_decode_option): Recognize `-fencoding='.
11781         (finish_parse): Don't close finput.
11782         * parse.h (struct parser_ctxt): Removed `finput' and
11783         `unget_utf8_value' fields.  Added `lexer' field.
11784         (java_init_lex): Fixed declaration.
11785         * lex.c (java_new_lexer): New function.
11786         (java_destroy_lexer): Likewise.
11787         (java_read_char): Added `lex' argument.  Handle iconv case.
11788         (java_read_unicode): Added `lex' argument.  Count backslashes in
11789         lexer structure.
11790         (java_init_lex): Added `finput' and `encoding' arguments.  Set
11791         `lexer' field in ctxp.
11792         (BAD_UTF8_VALUE): Removed.
11793         (java_lex): Handle seeing UEOF in the middle of a string literal.
11794         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
11795         (java_lexer): New structure.
11796         (UNGETC): Removed.
11797         (GETC): Removed.
11798         (DEFAULT_ENCODING): New define.
11799         (java_destroy_lexer): Declare.
11800
11801 2000-09-12  Tom Tromey  <tromey@cygnus.com>
11802
11803         Fix for PR gcj/343:
11804         * lex.c (java_init_lex): Initialize java_io_serializable.
11805         * parse.y (java_io_serializable): New global.
11806         (valid_ref_assignconv_cast_p): An array can be cast to
11807         serializable.
11808
11809 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
11810
11811         * decl.c, expr.c: Include defaults.h if not already included.
11812         Don't define the *_TYPE_SIZE macros.
11813
11814 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
11815
11816         * typeck.c (build_java_array_type): Correct first parameter
11817         in ADJUST_FIELD_ALIGN invocation.
11818
11819 2000-09-06  Tom Tromey  <tromey@cygnus.com>
11820
11821         * lang-specs.h: Also recognize `-femit-class-files'.
11822
11823 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11824
11825         * verify.c (merge_types): Load the types to merge if necessary.
11826
11827 2000-09-02  Anthony Green  <green@redhat.com>
11828
11829         * jcf-io.c: Include zlib.h.
11830         (open_in_zip): Read compressed class file archives.
11831         * zipfile.h (ZipDirectory): Add uncompressed_size and
11832         compression_method fields.
11833         * zextract.c (read_zip_archive): Collect file compression info.
11834
11835 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
11836
11837         * parse.y (do_resolve_class): Also explore superclasses of
11838         intermediate enclosing contexts when searching for inner classes.
11839
11840 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11841
11842         * parse.y (variable_declarator_id:): Better error message.
11843         (expression_statement:): Use YYNOT_TWICE.
11844         (cast_expression:): Likewise.
11845         (assignment:): Likewise.
11846
11847 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11848
11849         * parse.y (do_merge_string_cste): New locals. Create new
11850         STRING_CSTs each time, use memcpy. Fixes gcj/311.
11851
11852 2000-08-07  Hans Boehm  <boehm@acm.org>
11853
11854         * boehm.c (mark_reference_fields): Set marking bits for all words in
11855         a multiple-word record.
11856         (get_boehm_type_descriptor): Use the procedure marking descriptor for
11857         java.lang.Class.
11858
11859 2000-08-31  Mike Stump  <mrs@wrs.com>
11860
11861         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
11862         jcf-dump$(exeext)): Make parallel safe.
11863
11864 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
11865
11866         * jcf-parse.c (set_source_filename): Constify a char *.
11867         * jcf-write.c (append_innerclasses_attribute,
11868         make_class_file_name): Constify a char *.  Don't recycle a
11869         variable for an unrelated purpose.
11870         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
11871         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
11872
11873 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11874
11875         * expr.c (can_widen_reference_to): Fixed indentation.
11876         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
11877         * parse.y: `finit$' replaces `$finit$' in comments.
11878         (try_builtin_assignconv): Fixed leading comment.
11879
11880 2000-08-25  Greg McGary  <greg@mcgary.org>
11881
11882         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
11883
11884 2000-08-24  Greg McGary  <greg@mcgary.org>
11885
11886         * lang.c (lang_decode_option): Use ARRAY_SIZE.
11887         * parse.y (BINOP_LOOKUP): Likewise.
11888
11889 2000-08-22  Andrew Haley  <aph@cygnus.com>
11890
11891         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
11892         sign extending. Fixes gcj/321.
11893         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
11894         combining to make a jlong. Fixes gcj/321.
11895
11896 2000-08-21  Nix  <nix@esperi.demon.co.uk>
11897
11898         * lang-specs.h: Do not process -o or run the assembler if
11899         -fsyntax-only.
11900
11901 2000-08-16  Andrew Haley  <aph@cygnus.com>
11902
11903         * typeck.c (build_java_array_type): Rewrite code to do array
11904         alignment.  Take into account back-end macros when aligning array
11905         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
11906         user to set alignment. Fixes gcj/252 and 160.
11907
11908 2000-08-09  Tom Tromey  <tromey@cygnus.com>
11909
11910         * parse.y (check_abstract_method_definitions): Now return `int'.
11911         Check implemented interfaces.  Fixes PR gcj/305.
11912
11913         * parse.y (patch_switch_statement): Disallow `long' in switch
11914         expressions.  Fixes PR gcj/310.
11915
11916 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11917
11918         * decl.c (finit_leg_identifier_node): New global.
11919         (init_decl_processing): Use `finit$' to initialize
11920         finit_identifier_node. Use `$finit$' to initialize
11921         finit_leg_identifier_node.
11922         * expr.c (expand_java_field_op): Use ID_FINIT_P.
11923         * java-tree.h (finit_identifier_node): Changed attached comment.
11924         (finit_leg_identifier_node): New declaration.
11925         (ID_FINIT_P): Take finit_identifier_node and
11926         finit_leg_identifier_node into account. This is a backward
11927         compatibility hack.
11928
11929 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11930
11931         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
11932         Jan 6 2000 patch.
11933         (generate_bytecode_insns): Check `nargs' before emitting it.
11934         * verify.c (merge_type_state): Fixed typo.
11935         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
11936         generate_bytecode_{conditional,insns}.
11937
11938 2000-08-13  Anthony Green  <green@redhat.com>
11939
11940         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
11941         for -pg builds).
11942
11943 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11944
11945         * class.c (maybe_layout_super_class): Fixed indentation.
11946         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
11947         (java_check_methods): New function declaration.
11948         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
11949         instead of `str_ptr'.
11950         * jcf-write.c (generate_bytecode_insns): Emit number the of args
11951         of a `invokeinterface' at the right time.
11952         * parse.h (WFL_STRIP_BRACKET): New macro.
11953         (SET_TYPE_FOR_RESOLUTION): Use it.
11954         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
11955         (check_class_interface_creation): Don't check for cross package
11956         innerclass name clashes.
11957         (method_header): Behave properly if MDECL is `error_mark_node'.
11958         (method_declarator): Return `error_mark_node' if bogus current
11959         class.
11960         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
11961         (resolve_and_layout): New local `decl_type', set and used. Call
11962         java_check_methods.
11963         (java_check_methods): New method.
11964         (java_layout_classes): Use it.
11965         (resolve_qualified_expression_name): No EH check necessary in
11966         access$<n>.
11967         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
11968         `case' statement.
11969         (patch_assignment): Set DECL_INITIAL on integral final local.
11970
11971 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11972
11973         * java-tree.h (flag_extraneous_semicolon): New extern.
11974         * lang-options.h: (-Wextraneous-semicolon): New option.
11975         * lang.c (flag_redundant): Fixed typo in leading comment.
11976         (flag_extraneous_semicolon): New global.
11977         (lang_decode_option): Set `flag_extraneous_semicolon' when
11978         -Wall. Decode `-Wextraneous-semicolon'.
11979         * parse.y (type_declaration:): Removed `SC_TK' hack, added
11980         `empty_statement' rule.
11981         (class_body_declaration): Likewise.
11982         (method_body:): Accept `;' as a method body.
11983         (static_initializer:): Removed `SC_TK' hack.
11984         (constructor_block_end:): Likewise.
11985         (empty_statement:): Report deprecated empty declaration. Fixes
11986         gcj/295
11987
11988 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11989
11990         * parse.y (build_dot_class_method_invocation): Changed parameter
11991         name to `type'. Build signature from `type' and convert it to a
11992         STRING_CST if it's an array.
11993         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
11994         to use `ref_type' directly.
11995
11996 2000-08-06  Ovidiu Predescu  <ovidiu@cup.hp.com>
11997
11998         * lang-options.h: Added a comma after the last element to avoid
11999         syntax errors when other languages define additional options.
12000
12001 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
12002
12003         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
12004         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
12005         (jc1): Link with $(BACKEND).
12006         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
12007
12008 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
12009
12010         * jvspec.c: Adjust type of second argument to
12011         lang_specific_driver, and update code as necessary.
12012
12013         * class.c (build_dtable_decl): Initialize dummy.
12014
12015 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12016
12017         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
12018         method bodies not to rule out discarding `<clinit>'; don't use
12019         <clinit> to initialize static fields with constant initializers.
12020
12021 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12022
12023         * gjavah.c (print_method_info): Added `synth' parameter. Skip
12024         synthetic methods.
12025         (method_synthetic): New global.
12026         (HANDLE_METHOD): Recognize synthetic method and tell
12027         `print_method_info' about it.
12028         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
12029         processing a synthetic method.
12030         * jcf-reader.c (skip_attribute): New function.
12031         ( skip_attribute): Likewise.
12032
12033 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12034
12035         * parse.y (build_outer_field_access): Fixed comments.
12036         (fix_constructors): Emit the initialization of this$<n> before
12037         calling $finit$.
12038         (resolve_qualified_expression_name): Build an access to `decl' if
12039         necessary.
12040
12041 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12042
12043         * parse-scan.y (curent_class): Non longer const.
12044         (inner_qualifier, inner_qualifier_length): Deleted.
12045         (current_class_length): New global.
12046         (bracket_count): Fixed typo in leading comment.
12047         (anonymous_count): New global.
12048         (class_instance_creation_expression:): Handle anonymous classes.
12049         (anonymous_class_creation:): New rule.
12050         (push_class_context): Rewritten.
12051         (pop_class_context): Likewise.
12052         (INNER_QUALIFIER): Macro deleted.
12053         (report_class_declaration): call `push_class_context' when
12054         entering the function. `fprintf' format modified not to use
12055         INNER_QUALIFIER.
12056         (report_class_declaration): Assign `package_name' and
12057         `current_class' to NULL separately.
12058
12059 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12060
12061         * expr.c (build_invokeinterface): Call layout_class_methods on
12062         target interface.
12063
12064 2000-07-27  Tom Tromey  <tromey@cygnus.com>
12065             Anthony Green  <green@cygnus.com>
12066             Alexandre Petit-Bianco  <apbianco@cygnus.com>
12067
12068         * class.c (make_class_data): Create vtable for abstract classes.
12069         (get_dispatch_table): Changed to cope with abstract classes.
12070
12071 2000-07-27  Tom Tromey  <tromey@cygnus.com>
12072
12073         * parse.y (patch_method_invocation): Don't reverse the argument
12074         list when dealing with anonymous class constructors. Fixed typo in
12075         comment.
12076
12077 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12078
12079         * parse.y (build_alias_initializer_parameter_list): Reverse
12080         crafted list when building aliases for anonymous class
12081         constructors.
12082
12083 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12084
12085         * parse.y (jdep_resolve_class): Don't bother checking potential
12086         innerclass access if `decl' is NULL.
12087         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
12088         WFL.
12089
12090 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12091
12092         * parse.c: Remove (again.)
12093
12094 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12095
12096         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
12097         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
12098         outside the `if' statement, alias to innerclass removed, `decl'
12099         used to mark the class complete.
12100
12101 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12102
12103         * parse.y (simple_name:): Fixed typo in error message.
12104
12105 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12106
12107         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
12108         or its first operand can be error marks.
12109
12110 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12111
12112         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
12113         * parse.y (method_header): Likewise.
12114
12115 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12116
12117         * parse.y (process_imports): Consider that one might be trying to
12118         import an innerclass. Fixes gcj/254
12119
12120 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12121
12122         * parse.y (find_as_inner_class): Handle the case where the
12123         enclosing context of an innerclass has been loaded as bytecode.
12124
12125 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12126
12127         * parse.y (simple_name:): Reject `$' in type names.
12128         (resolve_type_during_patch): Use `type' as a second
12129         argument to resolve_no_layout. Fixes gcj/257.
12130
12131 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
12132
12133         * parse.y (find_most_specific_methods_list): Select the only
12134         non-abstract method even if max has been set.
12135         Fixes gcj/285, gcj/298.
12136
12137 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
12138
12139         * lang-specs.h: Added %(jc1) to java compiler options.
12140
12141 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
12142
12143         * .cvsignore: New file.
12144
12145 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12146
12147         * parse.y (not_accessible_p): Access granted to innerclasses
12148         (indirectly) extending the reference type. Fixes gcj/249.
12149
12150 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12151
12152         * parse.y (patch_method_invocation): Fixed comment.
12153         (maybe_use_access_method): Build this$<n>s to the context of the
12154         target method, or a type that extends it. Fixes gcj/242.
12155
12156 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
12157
12158         * parse.c: Remove.
12159
12160 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12161
12162         * parse.y (fold_constant_for_init): Avoid bullish conversion.
12163
12164 2000-07-13  Tom Tromey  <tromey@cygnus.com>
12165
12166         * lang-specs.h: Added %{I*}.
12167
12168 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
12169
12170         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
12171
12172 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
12173
12174         * parse-scan.c: Remove.
12175
12176 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12177
12178         * class.c (set_super_info): Handled protected inner classes.
12179         (common_enclosing_context_p): Bail early if arguments aren't both
12180         inner classes.
12181         (get_access_flags_from_decl): Handle private and protected inner
12182         classes.
12183         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
12184         (CLASS_PROTECTED): Likewise.
12185         (struct lang_type): New bitfield `poic'.
12186         * parse.y (jdep_resolve_class): Call check_inner_class_access on
12187         inner classes only.
12188         (check_inner_class_access): Renamed arguments, added
12189         comments. Handles protected inner classes (fixes gcj/225)
12190         (not_accessible_p): Fixed comments. Avoid handling inner classes.
12191
12192 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12193
12194         * parse.y (resolve_qualified_expression_name): Verify qualified
12195         access to `this'. Fixes gcj/239.
12196
12197 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12198
12199         * jcf-write.c (generate_classfile): Don't install ConstantValue
12200         for null pointers.
12201
12202 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12203
12204         * parse.y (resolve_qualified_expression_name): Handle inner class
12205         access. Fixes gcj/256.
12206
12207 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12208
12209         * jcf-write.c (generate_classfile): Properly install the
12210         ConstantValue attribute and the initial value constant pool index
12211         on string constants.
12212         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
12213         class files.
12214
12215 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12216
12217         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
12218         construct.
12219         * parse.y (find_as_inner_class): Fixed typo.
12220         (do_resolve_class): Explore enclosing contexts when searching for
12221         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
12222         (check_inner_class_access): Check `decl' which can be null in case
12223         of previous errors.
12224
12225 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12226
12227         * java-tree.h (java_debug_context): Declared `extern'.
12228         (safe_layout_class): Likewise.
12229         * parse.y (resolve_field_access): Field must be `static' in order
12230         to be replaced by its initial value. Added comments.
12231         (find_applicable_accessible_methods_list): Fixed typo.
12232         (find_most_specific_methods_list): Methods found in innerclasses
12233         take over methods founds in the enclosing contexts.
12234         (java_complete_tree): Loosen restrictions on the type of DECLs
12235         that can be replaced by their initialization values.
12236         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
12237
12238 2000-07-05  Tom Tromey  <tromey@cygnus.com>
12239
12240         * Make-lang.in (PARSE_DIR): New macro.
12241         (PARSE_RELDIR): Likewise.
12242         (PARSE_C): Likewise.
12243         (PARSE_SCAN_C): Likewise.
12244         ($(PARSE_C)): New target.
12245         ($(PARSE_SCAN_C)): Likewise.
12246         (SET_BISON): New macro.
12247         (BISONFLAGS): Likewise.
12248         (JAVABISONFLAGS): Likewise.
12249
12250 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
12251
12252         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
12253         argument on the first pass for CNI as well as JNI.
12254         (print_method_info): Set up method name on the first pass only.
12255
12256 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12257
12258         * parse.y (parser_qualified_classname): Removed parameter
12259         `is_static'.
12260         (create_interface): Removed first passed parameter to
12261         parser_qualified_classname.
12262         (create_class): Likewise. Don't install alias on static
12263         innerclasses. Fixes gcj/275.
12264
12265 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12266
12267         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
12268         debugable statement with empty_stmt_node. Fixes gcj/272
12269
12270 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12271
12272         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
12273         gcj/271.
12274
12275 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12276
12277         * jcf-write.c (push_long_const): Appropriately cast short negative
12278         constant to jword.
12279
12280 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12281
12282         * parse.y (verify_constructor_super): Use loop variable
12283         `m_arg_type' initialized with `mdecl_arg_type'.
12284
12285 2000-06-29  Tom Tromey  <tromey@cygnus.com>
12286
12287         * parse.y (resolve_field_access): Handle case where `type_found'
12288         is NULL.
12289
12290 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12291
12292         * expr.c (lookup_field): The same field can be found through two
12293         different interface. Don't declare it ambiguous in that case.
12294
12295 2000-06-27  Tom Tromey  <tromey@cygnus.com>
12296
12297         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
12298         follows \r, then unget it at a lower level.
12299
12300 2000-06-26  Tom Tromey  <tromey@cygnus.com>
12301
12302         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
12303         java_complete_tree.
12304
12305 2000-06-25  Tom Tromey  <tromey@cygnus.com>
12306
12307         * parse.y (for_statement): Wrap expression in a WFL if it is a
12308         constant.  For PR gcj/268.
12309
12310 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12311
12312         * parse.y (do_resolve_class): Minor optimiztion in the package
12313         list search. Removed unnecessary test and return statement.
12314         (valid_ref_assignconv_cast_p): Order of arguments to
12315         enclosing_context_p fixed.
12316
12317 2000-06-24  Tom Tromey  <tromey@cygnus.com>
12318
12319         * expr.c (lookup_field): Print error and return error_mark_node if
12320         field reference is ambiguous.
12321
12322         * parse.y (check_abstract_method_definitions): Also check if
12323         `other_method' is abstract.
12324
12325 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12326
12327         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
12328         classes.
12329         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
12330         (struct lang_type): New field `pic'.
12331         (CLASS_PRIVATE): New macro.
12332         * parse.y (check_inner_class_access): New function.
12333         (jdep_resolve_class): Call it.
12334
12335 2000-06-23  Tom Tromey  <tromey@cygnus.com>
12336
12337         * parse.y (patch_incomplete_class_ref): Initialize the returned
12338         class.  For PR gcj/260.
12339
12340 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12341
12342         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
12343
12344 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12345
12346         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
12347         Java specific checks.
12348         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
12349         screened by DECL_P.
12350         * java-tree.def (CASE_EXPR): Marked 'e'.
12351         (DEFAULT_EXPR): Likewise.
12352         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
12353         screened by DECL_P.
12354         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
12355         Java specific checks.
12356         (generate_bytecode_insns): Test try_block for BLOCK before using
12357         BLOCK_EXPR_BODY.
12358         * parse.y (build_wfl_wrap): Added `location' argument. Set
12359         EXPR_WFL_LINECOL accordingly.
12360         (dim_expr:): Wrap constants with WFLs.
12361         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
12362         (resolve_package): Check for `stmt' not being a BLOCK before
12363         building a debuggable statement with it.
12364         (make_qualified_primary): Added extra parameter to build_wfl_wrap
12365         invocation.
12366         (resolve_field_access): Make sure `decl' is a DECL before treating
12367         it as such.
12368         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
12369         IDENTIFIER_NODE before treating it as such.
12370         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
12371         treating it as such.
12372         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
12373         to be applied only on non array types.
12374
12375 2000-06-16  Per Bothner  <per@bothner.com>
12376
12377         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
12378         define in terms of DECL_RESULT, as that fails when --enable-checking.
12379
12380 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12381
12382         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
12383         types the same in comparison.
12384         (CHECK_OP): Add static prototype.
12385
12386 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
12387
12388         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
12389         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
12390         * parse.c: Rebuilt.
12391
12392 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12393
12394         * decl.c (create_primitive_vtable): Prototype.
12395
12396         * jcf-write.c (generate_bytecode_insns): Initialize variable
12397         `saved_context'.
12398
12399         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
12400
12401 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
12402
12403         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
12404         to track searched classes, and do not search the same class more than
12405         once. Call find_applicable_accessible_methods_list on immediate
12406         superclass, instead of search_applicable_method_list on all ancestors.
12407         Fix for PR gcj/238.
12408
12409 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
12410
12411         * parse.y (register_fields): Permit static fields in inner classes
12412         if they are final. Fix for PR gcj/255.
12413
12414 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12415
12416         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
12417         * parse.y (find_in_imports): Returned type changed to void,
12418         leading comment fixed.
12419         (register_package): New function.
12420         (qualify_and_find): Likewise.
12421         (package_declaration:): Use `register_package'.
12422         (single_type_import_declaration:): Removed local variable
12423         `node'. Added missing `;' for consistency.
12424         (type_import_on_demand_declaration:): Use `chainon' to link new
12425         entries.
12426         (lookup_field_wrapper): Lookup local variables defined in outer
12427         contexts first.
12428         (java_complete_class): Don't reverse the list of imported on demand.
12429         (do_resolve_class): Reorganized. Removed local variable
12430         `original_name'. Call `qualify_and_find' with the current package
12431         name, invoke `find_in_imports_on_demand' right after. Call
12432         `qualify_and_find' with the packages we've seen so far. Fixed
12433         operations numbering in comments.
12434         (java_expand_class): Don't reverse `package_list'.
12435         (find_most_specific_methods_list): New local variables `abstract'
12436         and `candidates'. Use them to pick the right method.
12437
12438 2000-06-06  Tom Tromey  <tromey@ferrule.cygnus.com>
12439
12440         * parse.y (check_modifiers_consistency): Don't subtract out
12441         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
12442
12443 2000-06-04  Philipp Thomas  <pthomas@suse.de>
12444
12445         * Makefile.in (INTLLIBS): New.
12446         (LIBS): Add above.
12447         (DEPLIBS): Ditto.
12448
12449 2000-06-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12450
12451         * class.c (get_dispatch_table): Build the vtable dummy entry list
12452         element with a null purpose. Fixed leading comment.
12453         (build_dtable_decl): Build an accurate dtable type when appropriate
12454         and use it.
12455
12456 2000-06-02  Richard Henderson  <rth@cygnus.com>
12457
12458         * lang.c (lang_get_alias_set): New.
12459
12460 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12461
12462         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
12463         before using it as the accessed field.
12464
12465 2000-05-31  Tom Tromey  <tromey@cygnus.com>
12466
12467         * java-tree.h (boolean_array_vtable, byte_array_vtable,
12468         char_array_vtable, short_array_vtable, int_array_vtable,
12469         long_array_vtable, float_array_vtable, double_array_vtable):
12470         Declare.
12471         * expr.c (get_primitive_array_vtable): New function.
12472         (create_primitive_vtable): New function.
12473         (java_lang_expand_expr): Enable code to statically generate
12474         arrays.
12475         * decl.c (init_decl_processing): Create primitive vtables.
12476         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
12477         short_array_vtable, int_array_vtable, long_array_vtable,
12478         float_array_vtable, double_array_vtable): Define.
12479
12480 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
12481
12482         * java/parse.y (find_applicable_accessible_methods_list):
12483         Don't add an uninitialized value to the list.
12484
12485 2000-05-25  Tom Tromey  <tromey@cygnus.com>
12486
12487         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
12488         when trying to see if field's class should be initialized.  Always
12489         initialize field's declaring class, not qualified class.
12490         For PR gcj/162.
12491
12492         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
12493         `wfl_operator', to maybe_build_primttype_type_ref.
12494         Fixes PR gcj/235.
12495
12496 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
12497
12498         * parse.y (patch_method_invocation): Don't try to lookup methods
12499         in primitive types.
12500
12501 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12502
12503         * parse.y (resolve_field_access): Call the appropriate <clinit>
12504         before accessing the length of a static array. Craft a decl for
12505         the field while its time. Fixes PR gcj/129.
12506
12507 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12508
12509         * parse.y (resolve_package): Correctly set `*next' (was off by
12510         one.)
12511         (resolve_qualified_expression_name): Fixed comment.
12512
12513 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12514
12515         * jcf-parse.c (jcf_parse_source): Reset current_class and
12516         current_function_decl to NULL before parsing a new file.
12517
12518 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12519
12520         * parse.y (block_end:): If the collected block doesn't feature a
12521         statement, insert an empty statement.
12522
12523 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12524
12525         * parse.y (maybe_yank_clinit): New function.
12526         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
12527         end of the list of methods belonging to a class.
12528         (java_complete_expand_method): Check whether <clinit> is really
12529         necessary and expand it accordingly.
12530
12531 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12532
12533         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
12534         processed by the method's switch statement.
12535
12536 2000-05-19  Tom Tromey  <tromey@cygnus.com>
12537
12538         * java-tree.h: Added init state enum.
12539         * decl.c (emit_init_test_initialization): Initialize class
12540         initialization check variable by looking at class' state.
12541
12542 2000-05-19  Tom Tromey  <tromey@cygnus.com>
12543
12544         * java-tree.h (build_instanceof): Declare.
12545         (build_get_class): Declare.
12546         * parse.y (patch_binop): Use build_instanceof.
12547         * expr.c (build_instanceof): New function.  If class is final,
12548         don't make a function call.
12549         (expand_java_INSTANCEOF): Use it.
12550         (build_get_class): New function.
12551
12552 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
12553
12554         * jcf-write.c (generate_classfile): Scan the source_file for
12555         slashes with the right pointer variable.
12556
12557 2000-05-17  Andrew Cagney  <cagney@b1.cygnus.com>
12558
12559         * lang.c (lang_decode_option): Update -Wunused flags by calling
12560         set_Wunused.
12561         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
12562
12563 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
12564
12565         * check_init.c (check_init): Constify local char *.
12566         * class.c (push_class): Constify local char *.
12567         * java_tree.h: Update prototypes.
12568         * jcf-io.c (open_class): Constify filename parameter and
12569         return value.
12570         (find_class): Remove redundant string copy.  Cast return from
12571         open_class.
12572         * jcf-parse.c (read_class, parse_class_file, yyparse):
12573         Constify local char *.
12574         * jcf-write.c (generate_bytecode_insns, generate_classfile):
12575         Constify local char *.
12576         * jcf.h (JCF): Constify filename and classname.
12577         (JCF_FINISH): Cast args to FREE to char * when appropriate.
12578         * lang.c (init_parse): Constify parameter and return value.
12579         * lex.c (java_get_line_col): Constify filename parameter.
12580         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
12581         * parse.y (java_parser_context_suspend,
12582         issue_warning_error_from_context, safe_layout_class): Constify
12583         local char *.
12584         * parse.c: Regenerate.
12585
12586 2000-05-08  Tom Tromey  <tromey@cygnus.com>
12587
12588         * expr.c (build_jni_stub): Cache the result of
12589         _Jv_LookupJNIMethod.
12590
12591 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12592
12593         * decl.c (predef_filenames_size): Now 7.
12594         (predef_filenames): New seventh entry.
12595
12596 2000-05-04  Tom Tromey  <tromey@cygnus.com>
12597
12598         * boehm.c (mark_reference_fields): Don't mark RawData fields.
12599         Keep track of when we've seen a reference field after a
12600         non-reference field.
12601         (get_boehm_type_descriptor): Handle case where we see
12602         non-reference fields but no trailing reference field.
12603         * decl.c (rawdata_ptr_type_node): Define.
12604         (init_decl_processing): Initialize rawdata_ptr_type_node.
12605         * java-tree.h (rawdata_ptr_type_node): Declare.
12606
12607 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12608
12609         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
12610         specifiers in calls to fprintf.
12611
12612 2000-05-03  Andrew Haley  <aph@cygnus.com>
12613
12614         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
12615
12616         * javaop.h (WORD_TO_INT): New function.
12617         (IMMEDIATE_s4): Use WORD_TO_INT.
12618         * jcf.h (JPOOL_INT): Ditto.
12619
12620         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
12621         separator.
12622
12623 2000-04-19  Tom Tromey  <tromey@cygnus.com>
12624
12625         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
12626         on native function.
12627         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
12628         JNI methods.
12629         * expr.c (build_jni_stub): New function.
12630         * lang-specs.h: -fjni and -femit-class-file are incompatible.
12631         * parse.c: Rebuilt.
12632         * parse.y (java_complete_expand_methods): Expand a native method
12633         and call build_jni_stub if -fjni given.
12634         * lang-options.h: Document -fjni.
12635         * lang.c (flag_jni): New global.
12636         (lang_f_options): Added `jni' entry.
12637         * java-tree.h (soft_lookupjnimethod_node,
12638         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
12639         Declare.
12640         (flag_jni): Declare.
12641         (build_jni_stub): Declare.
12642         (struct lang_decl): Added `native' flag.
12643         (METHOD_NATIVE): Redefined to use `native' field of lang specific
12644         structure.
12645         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
12646         soft_jnipopsystemframe_node): New globals.
12647         (init_decl_processing): Set them.  _Jv_InitClass only takes one
12648         argument.
12649
12650         * java-tree.def: Put into `C' mode.
12651
12652 2000-04-27  Tom Tromey  <tromey@cygnus.com>
12653
12654         Fix for PR gcj/2:
12655         * expr.c (expand_invoke): Generate check to see if object pointer
12656         is null in nonvirtual invocation case.
12657         * java-tree.h (soft_nullpointer_node): Declare.
12658         * decl.c (soft_nullpointer_node): New global.
12659         (init_decl_processing): Initialize soft_nullpointer_node.
12660         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
12661         or `private' methods.
12662         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
12663
12664 2000-04-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12665
12666         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
12667         from <clinit>
12668
12669 2000-04-26  Tom Tromey  <tromey@cygnus.com>
12670
12671         * zextract.c (find_zip_file_start): New function.
12672         (read_zip_archive): Use it.
12673
12674 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12675
12676         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
12677
12678 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12679
12680         * class.c (common_enclosing_context_p): New function.
12681         * java-tree.h (common_enclosing_context_p): Added prototype.
12682         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
12683         classes sharing an outer context with the current instance.
12684         * parse.y (build_access_to_thisn): Fixed leading comment.
12685         (verify_constructor_super): New local `supper_inner'. Skip
12686         enclosing context argument in the case of inner class constructors.
12687         (patch_method_invocation): Insert proper context as second
12688         parameter to pure inner class constructor super invocations.
12689
12690 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12691
12692         * parse.y (end_class_declaration): Reset the interface number
12693         counter.
12694
12695 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12696
12697         * parse.y (source_start_java_method): Deleted unnecessary code.
12698         (patch_method_invocation): Fixed comment.
12699
12700 2000-04-24  Robert Lipe <robertlipe@usa.net>
12701
12702         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
12703
12704 2000-04-23  Tom Tromey  <tromey@cygnus.com>
12705
12706         * boehm.c (mark_reference_fields): Use int_byte_position.
12707
12708 2000-04-22  Tom Tromey  <tromey@cygnus.com>
12709
12710         * boehm.c (mark_reference_fields): Only call byte_position on
12711         non-static fields.
12712
12713 2000-04-22  Tom Tromey  <tromey@cygnus.com>
12714
12715         * boehm.c (mark_reference_fields): Added `last_view_index'
12716         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
12717
12718 2000-04-20  Mo DeJong  <mdejong@cygnus.com>
12719
12720         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
12721         * parse.y (check_class_interface_creation): Fixed comments. Select
12722         permitted modifiers for (inner) interfaces. Changed error message
12723         to report rejected modifiers used with local classes.
12724
12725 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12726
12727         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
12728         of directly inherited type considered in scope.
12729         * parse.y (do_resolve_class): Search inherited classes for inner
12730         classes.
12731
12732 2000-04-20  Tom Tromey  <tromey@cygnus.com>
12733
12734         * parse.y (not_accessible_p): Use member's class, not current
12735         class, when doing inheritance check for protected reference.
12736         Fixes PR gcj/124.
12737
12738 2000-04-20  Jason Schroeder  <shrode@subnature.com>
12739
12740         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
12741
12742 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12743
12744         * parse.y (lookup_field_wrapper): Search for final local aliases.
12745         (resolve_expression_name): Let lookup_field_wrapper search for
12746         final local aliases. Force the value of `name' if one is found.
12747         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
12748         an expression name. Fixed comments.
12749
12750 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12751
12752         * parse.y (yyerror): `msg' can be null, don't use it in that case.
12753
12754 2000-04-19  Tom Tromey  <tromey@cygnus.com>
12755
12756         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
12757
12758 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12759
12760         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
12761
12762 2000-04-18  Tom Tromey  <tromey@cygnus.com>
12763
12764         PR gcj/211:
12765         * gjavah.c (utf8_cmp): Changed return value.
12766         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
12767         result.
12768         (cxx_keywords): New global.
12769         (get_field_name): Handle new result of cxx_keyword_subst.
12770         (print_method_info): Likewise.
12771
12772 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
12773
12774         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
12775         with a newline, for CNI.
12776         (print_stub_or_jni): Print a space or newline before method name for
12777         CNI as well as JNI.
12778         (print_cxx_classname): Don't write leading "::" in CNI stub method.
12779         (process_file): Include gcj/cni.h if generating CNI stubs.
12780
12781 2000-04-16  Tom Tromey  <tromey@cygnus.com>
12782
12783         * gjavah.c (decompile_method): Use print_field_name.
12784         Fixes PR gcj/205.
12785
12786 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12787
12788         * parse.y (java_expand_classes): Reverse the package list once.
12789         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
12790         reduction.
12791         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
12792         the `==' and `!=' operators.
12793
12794 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12795
12796         * jcf-write.c (generate_bytecode_insns): At invocation time,
12797         always relate an interface method to the type of its selector.
12798
12799 2000-04-05  Tom Tromey  <tromey@cygnus.com>
12800
12801         Fix for PR gcj/2:
12802         * expr.c (expand_invoke): Generate check to see if object pointer
12803         is null in nonvirtual invocation case.
12804         * java-tree.h (soft_nullpointer_node): Declare.
12805         * decl.c (soft_nullpointer_node): New global.
12806         (init_decl_processing): Initialize soft_nullpointer_node.
12807         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
12808         or `private' methods.
12809         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
12810
12811 2000-04-05  Tom Tromey  <tromey@cygnus.com>
12812
12813         Fix for PR gcj/140:
12814         * parse.y (check_final_assignment): Recognize assignments to the
12815         `length' field of an array when generating class files.
12816
12817 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12818
12819         * class.c (decl_hash): Prototype removed.
12820         (decl_compare): Likewise.
12821
12822 2000-04-05  Tom Tromey  <tromey@cygnus.com>
12823
12824         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
12825         * parse.y (check_modifiers_consistency): Check for final/volatile
12826         clash.  Fixes PR gcj/164.
12827
12828 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12829
12830         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
12831         made global.
12832         (java_hash_compare_tree_node): Renamed from `decl_compare, made
12833         global.
12834         (add_method_1): Use `java_hash_hash_tree_node' and
12835         `java_hash_compare_tree_node'.
12836         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
12837         (java_hash_compare_tree_node): Likewise.
12838         * parse.y (find_applicable_accessible_methods_list): Create,
12839         delete and use a hash table to remember already searched interfaces.
12840
12841 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
12842
12843         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
12844         with latest entry.
12845
12846 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12847
12848         * boehm.c (mark_reference_fields, set_bit): Prototype.
12849         (set_bit): Un-ANSI-fy definition.
12850
12851         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
12852         Prototype.
12853
12854         * decl.c (emit_init_test_initialization): Likewise.
12855
12856         * gjavah.c (jni_print_char): Likewise.
12857
12858         * parse.y (create_new_parser_context): Likewise.
12859
12860 2000-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12861
12862         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
12863         patch missing hunk. Fixed indentation.
12864
12865 2000-03-30  Tom Tromey  <tromey@cygnus.com>
12866
12867         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
12868         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
12869
12870 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12871
12872         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
12873         when negative *before* using it as an array index.
12874         * ChangeLog: Fixed typo.
12875
12876 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12877
12878         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
12879         to 0 when it reaches -1.
12880
12881 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12882
12883         * jcf-parse.c (get_constant): Properly cast `num' during the
12884         invocation of `add_double'.
12885         * jcf-write.c (push_long_const): Properly cast `lo' before
12886         comparing it to short bounds.
12887         * parse-scan.y (interface_declaration:): Rule re-arrange so that
12888         `interface_body:' is reduced after the current interface is
12889         pushed.
12890
12891 2000-03-26  Tom Tromey  <tromey@cygnus.com>
12892
12893         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
12894         Java-specific `-f' option.
12895
12896 2000-03-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12897
12898         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
12899         Adjust order of making types.
12900         Make bitsize_*_node values.
12901
12902 2000-03-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12903
12904         * class.c (make_field_value): Use byte_position.
12905         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
12906         (java_array_data_offset): Likewise.
12907         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
12908         bzero call.
12909
12910 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12911
12912         * parse.y (check_abstract_method_definitions): New local
12913         `end_type_reached'. Make sure we also consider `end_type'.
12914         (java_check_abstract_method_definitions): Make sure we eventually
12915         consider `java.lang.Object'.
12916         (maybe_use_access_method): Don't use access method if not in the
12917         context of a pure inner class or if the method's context is right.
12918         (find_applicable_accessible_methods_list): New static flag
12919         `object_done'. Don't search abstract classes as interfaces. Fixed
12920         indentation. Fixed the `java.lang.Object' only search. Search
12921         class interface(s) first, then fully search enclosing contexts.
12922         (find_most_specific_methods_list): Pick the closest candidate when
12923         they're all abstract.
12924
12925 2000-03-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12926
12927         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
12928         properly initialize `finished_label'. Don't emit gotos for empty
12929         try statements.
12930
12931 2000-03-19  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
12932
12933         * except.c (emit_handlers): Clear catch_clauses_last.
12934
12935 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12936
12937         * parse.y (check_method_types_complete): New function.
12938         (create_class): Reset anonymous class counter only when seeing an
12939         non inner classe.
12940         (java_complete_class): JDEP_METHOD: Don't recompute signature
12941         if incomplete.
12942
12943 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12944
12945         * class.c (build_static_ref): Fixed indentation in comment.
12946         * java-tree.def (TRY_EXPR): Fixed typo in name.
12947         (CLASS_LITERAL): Likewise.
12948         * java-tree.h: (TYPE_DOT_CLASS): New macro.
12949         (struct lang_type): New field `dot_class'.
12950         * jcf-write.c (generate_bytecode_insns): Fixed error message.
12951         (generate_classfile): Method `class$' is synthetic.
12952         * parse.y (build_do_class_method): New function.
12953         (build_dot_class_method_invocation): Likewise.
12954         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
12955         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
12956         (qualify_ambiguous_name): Likewise.
12957         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
12958         (build_try_statement): Fixed leading comment.
12959
12960 2000-03-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12961
12962         * class.c (make_field_value): Properly handle sizes.
12963         (get_dispatch_vector): Use tree_low_cst and host_integerp.
12964         (layout_class_method): Count using trees.
12965         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
12966         * expr.c (java_array_data_offset): Use int_bit_position.
12967         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
12968         (build_invokevirtual): Use tree_low_cst and do computations with trees.
12969
12970 2000-03-16  Tom Tromey  <tromey@cygnus.com>
12971
12972         * lang.c (flag_hash_synchronization): New global.
12973         (lang_f_options): Added `hash-synchronization'.
12974         * lang-options.h: Mention -fhash-synchronization.
12975         * java-tree.h (flag_hash_synchronization): Declare.
12976         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
12977         hash table synchronization is disabled.
12978         * decl.c (init_decl_processing): Only push `sync_info' value when
12979         hash table synchronization is disabled.
12980         * class.c (make_class_data): Only push `sync_info' field when hash
12981         table synchronization is disabled.  Removed dead code.
12982
12983 2000-03-16  Tom Tromey  <tromey@cygnus.com>
12984
12985         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
12986
12987 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12988
12989         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
12990         classes.
12991         * parse.y (patch_method_invocation): Handle anonymous classes
12992         creation in static context.
12993
12994 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12995
12996         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
12997         * parse.y (resolve_qualified_expression_name): Use it.
12998         (patch_method_invocation): Likewise.
12999
13000 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13001
13002         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
13003         depending on the type of dependency which dictates what the
13004         current class is.
13005         (unresolved_type_p): Resolved types limited to the current class.
13006
13007 2000-03-15  Tom Tromey  <tromey@cygnus.com>
13008
13009         * decl.c (init_decl_processing): Set type of `sync_info' to be
13010         pointer to Object.
13011
13012         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
13013         Correctly compute bit number for current slot.  Zero `high' and
13014         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
13015         mark_reference_fields.
13016         (mark_reference_fields): New function.
13017
13018 2000-03-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13019
13020         * parse.y (register_incomplete_type): Fixed initialization of
13021         JDEP_ENCLOSING.
13022
13023 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13024
13025         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
13026         static globals.
13027         (push_class_context, pop_class_context): New function.
13028         (class_body:): Call pop_class_context.
13029         (interface_body:): Likewise.
13030         (INNER_QUALIFIER): New macro.
13031         (report_class_declaration): Changed output format and use
13032         INNER_QUALIFIER. Call push_class_context.
13033
13034 2000-02-14  Andrew Haley  <aph@cygnus.com>
13035
13036         * check-init.c (check_init): Add new cases for unary and binary
13037         tree nodes.
13038
13039 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13040
13041         * parse.y (resolve_package): Set `next' once a type name has been
13042         progressively discovered.
13043         (resolve_qualified_expression_name): Propagate resolution only if
13044         there are remaining qualifiers. Take into account `q' might have
13045         been cleared after re-qualification.
13046         * parse.y (patch_method_invocation): New local `resolved'.
13047         Section dealing with qualified expression rewritten to use
13048         resolve_field_access.
13049
13050 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13051
13052         * parse.h (PUSH_CPC): Fixed indentation.
13053         (DEBUG_CPC): New macro.
13054         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
13055         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
13056         * parse.y (class_body_declaration:): Use
13057         SET_CPC_INSTANCE_INITIALIZER_STMT.
13058         (method_declaration:): Check for null current_function_decl.
13059         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
13060         (java_parser_context_pop_initialized_field): Better handling of
13061         empty lists.
13062         (maybe_make_nested_class_name): Mark nested class name as
13063         qualified when necessary.
13064         (end_class_declaration): Don't call java_parse_context_resume when
13065         one or more error occurred.
13066         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
13067         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
13068         SET_CPC_INITIALIZER_STMT.
13069         (method_header): Check for inner classes declaring static methods.
13070         (resolve_qualified_expression_name): Handle situation where `this'
13071         is implied.
13072
13073 2000-03-13  Hans Boehm <boehm@acm.org>
13074
13075         * typeck.c (build_prim_array_type): Correctly set the high word too.
13076
13077 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13078
13079         * parse.y (java_complete_expand_methods): Leave <clinit> out of
13080         ordinary methods.
13081         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
13082         list of methods for interfaces.
13083
13084 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13085
13086         * parse.y (qualify_ambiguous_name): Properly handle expressions
13087         using `null'.
13088
13089 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13090
13091         * parse.y (check_final_assignment): Extended to process
13092         COMPOUND_EXPR.
13093         (patch_assignment): Have check_final_assignment called only once.
13094
13095 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13096
13097         * java-tree.h (IS_INIT_CHECKED): New flag.
13098         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
13099         * parse.y (patch_string): Call force_evaluation_order on the
13100         completed string concatenation tree.
13101         * expr.c (force_evaluation_order): Call force_evaluation_order on
13102         function's arguments too.
13103
13104 2000-03-06  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13105
13106         * decl.c (emit_init_test_initialization): Mark KEY as unused.
13107         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
13108         (build_anewarray): Likewise.
13109         * parse.y (patch_newarray): Likewise.
13110         * parse.c: Regenerated.
13111
13112 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
13113
13114         * decl.c (init_decl_processing): Added new class fields `depth',
13115         `ancestors', and `idt' to class_type_node. Use
13116         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
13117         * class.c (make_class_data): Push initial values for new fields.
13118         * java-tree.h: Updated prototype for `build_invokeinterface'.
13119         * expr.c (build_invokeinterface): Changed parameters to accept
13120         `method' tree. Calculate index of `method' in its declaring
13121         interface. Build call to _Jv_LookupInterfaceMethodIdx.
13122         (expand_invoke): Call `build_invokeinterface' with new parameters.
13123         * parse.y (patch_invoke): Call `build_invokeinterface' with new
13124         parameters.
13125
13126 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
13127
13128         * typeck.c (lookup_do): Search superinterfaces first
13129         when looking up an interface method. From Godmar Back
13130         <gback@cs.utah.edu>
13131
13132 2000-03-06  Tom Tromey  <tromey@cygnus.com>
13133
13134         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
13135
13136 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13137
13138         * java-tree.h (lookup_argument_method2): Declared.
13139         (safe_layout_class): Prototype moved from parse.h.
13140         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
13141         * parse.y (java_check_regular_methods): Local `super_class' gone.
13142         Call lookup_argument_method2 instead of lookup_argument_method.
13143         Perform modifier match for methods found declared in implemented
13144         interfaces. Fixed indentation problem. Overriding/hiding error
13145         report to take place only for methods found in classes.
13146         * typeck.c (lookup_argument_method): Changed leading
13147         comment. Re-written by calling lookup_do.
13148         (lookup_argument_method2): New function.
13149         (lookup_java_method): Re-written by calling lookup_do.
13150         (lookup_do): New function.
13151
13152 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13153
13154         * check-init.c (check_init): Removed dead code. Handle (blank)
13155         final variables.
13156         * parse.y (declare_local_variables): New local `final_p', set it
13157         and use it to initialize LOCAL_FINAL.
13158         (check_final_assignment): Only check FIELD_DECLs.
13159
13160 2000-02-17  Tom Tromey  <tromey@cygnus.com>
13161
13162         * Makefile.in (JAVA_OBJS): Added boehm.o.
13163         (boehm.o): New target.
13164         * Make-lang.in (JAVA_SRCS): Added boehm.c.
13165         * java-tree.h (flag_use_boehm_gc): Declare.
13166         (get_boehm_type_descriptor): Declare.
13167         * lang.c (lang_f_options): Added `use-boehm-gc'.
13168         (flag_use_boehm_gc): New global.
13169         * lang-options.h: Added -fuse-boehm-gc.
13170         * boehm.c: New file.
13171         * class.c (get_dispatch_table): If class uses a Boehm type
13172         descriptor, put it in the vtable.
13173         (make_class_data): Removed dead code.
13174
13175 2000-03-03  Per Bothner  <per@bothner.com>
13176
13177         * decl.c (init_decl_processing):  Initialize sizetype properly.
13178
13179 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13180
13181         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
13182         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
13183         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
13184         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
13185         (jcf_parse): New local `current'. Load innerclasses seen in outer
13186         context being processed.
13187         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
13188         * jcf-write.c (append_innerclasses_attribute): New function.
13189         (append_innerclasses_attribute_entry): Likewise.
13190         (get_access_flags): Handle static classes. Set anonymous and local
13191         classes to be private.
13192         (generate_classfile): Attribute count adjusted. Call
13193         append_innerclasses_attribute.
13194         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
13195         PURE_INNER_CLASS_TYPE_P.
13196         * parse.y (parser_qualified_classname): New parameter `is_static',
13197         produce non qualified name accordingly.
13198         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
13199         (create_interface): Added argument to parser_qualified_classname.
13200         (create_class): Added argument to parser_qualified_classname. Setup
13201         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
13202         (add_inner_class_fields): Fixed indentation.
13203         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
13204         (method_declarator): Fixed typo in comment.
13205         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
13206         (build_current_thisn): Likewise.
13207         (patch_method_invocation): Likewise.
13208
13209 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
13210
13211         * decl.c (current_function_decl): Move to toplev.c.
13212
13213 2000-02-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13214
13215         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
13216         (DECL_BIT_INDEX): Use underlying representation.
13217         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
13218
13219 2000-02-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13220
13221         * expr.c (build_java_ret): Pass proper type to size_binop.
13222
13223 2000-02-25  Anthony Green  <green@cygnus.com>
13224
13225         * expr.c (build_class_init): Mark the decl to be ignored by
13226         check_init.
13227         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
13228         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
13229         * class.c (init_test_hash_newfunc): New function.
13230         (decl_hash): New function.
13231         (decl_compare): New function.
13232         * decl.c (emit_init_test_initialization): New function.
13233         (complete_start_java_method): Traverse the init test hashtable,
13234         calling emit_init_test_initialization.
13235         (always_initialize_class_p): Define.
13236         * expr.c (build_class_init): Use initialization tests when
13237         emitting class initialization code.
13238         (always_initialize_class_p): Declare.
13239         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
13240         1.
13241         * java-tree.h: Include hash.h.
13242         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
13243         (struct lang_decl): Add init_test_table field.
13244         (init_test_hash_entry): Define.
13245
13246 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13247
13248         * gjavah.c (main): Avoid using `argi' to report unimplemented
13249         options.
13250
13251 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13252
13253         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
13254         initialize locals to avoid warnings. Local `exception_type' moved
13255         into if statement.
13256
13257 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13258
13259         * parse.y (resolve_expression_name): Use `orig' as a second
13260         argument to resolve_field_access.
13261         (resolve_field_access): Removed unnecessary code when dealing with
13262         static fields.
13263
13264 2000-02-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13265
13266         * class.c (push_super_field): Don't push the field twice.
13267         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
13268         * parse.h (java_reorder_fields): Prototyped.
13269         * parse.y (java_reorder_fields): New function.
13270         (java_layout_class): Simplified not to worry about re-ordering.
13271
13272 2000-02-23  Tom Tromey  <tromey@cygnus.com>
13273
13274         * gjavah.c (print_name): In JNI case, correctly quote string.
13275         (print_method_info): Don't handle overrides in JNI mode.
13276
13277 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13278
13279         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
13280         value type set to `boolean_type_node'.
13281
13282 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
13283
13284         * jcf-dump.c (main): Test for correct condition after
13285         output file creation.
13286
13287 2000-02-19  Anthony Green  <green@cygnus.com>
13288
13289         * jcf-depend.c (add_entry): Fix test for first list entry.
13290
13291 2000-02-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13292
13293         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
13294         * constants.c (build_constants_constructor): Likewise.
13295
13296 2000-02-19  Anthony Green  <green@cygnus.com>
13297
13298         * jcf-depend.c (add_entry): Add entries to the end of the list.
13299
13300 1999-11-03  Pekka Nikander  <pekka.nikander@hut.fi>
13301
13302         * decl.c (INT_TYPE_SIZE): Define if necessary.
13303         (expand_java_return): Handle the case of a native integer smaller
13304         than a JVM integer.
13305
13306 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
13307
13308         * gjavah.c (help): Use GCCBUGURL.
13309         * jv-scan.c (help): Likewise.
13310         * jcf-dump.c (help): Likewise.
13311
13312 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13313
13314         * jcf-write.c (generate_bytecode_insns): Don't generate empty
13315         `finally' clauses.
13316
13317 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13318
13319         * jcf-parse.c (load_class): Call `fatal' if no file containing
13320         the target class are found.
13321
13322 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
13323
13324         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
13325         lex.c, lex.h, and PARSE_H to...
13326         (parse.o, parse-scan.o): ...here, respectively.
13327
13328         * lex.c: Split out code that may trigger SIGFPE from yylex()
13329         to its own function.
13330         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
13331
13332 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13333
13334         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
13335
13336 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13337
13338         * parse.y (outer_field_access_p): Stop in time when outer contexts
13339         are exhausted.
13340         (resolve_qualified_expression_name): Properly qualify *everything*
13341         after a package.type to be resoled as expression names.
13342         (find_applicable_accessible_methods_list): Save/restore `class' to
13343         isolate it from a possible outer context search.
13344
13345 2000-02-15  Tom Tromey  <tromey@cygnus.com>
13346
13347         * gjavah.c (jni_print_char): New function.
13348         (print_full_cxx_name): Use it.
13349         (decode_signature_piece): Likewise.
13350         (print_cxx_classname): Likewise.
13351
13352 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13353
13354         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
13355         version.o.
13356         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
13357
13358         * gjavah.c: Include version.h.
13359
13360         * jcf-dump.c: Likewise.
13361
13362         * jv-scan.c: Likewise.
13363
13364 2000-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13365
13366         * parse.y (outer_field_access_fix): First parameter now a tree
13367         node. Check for assignment to final. First argument to
13368         build_outer_field_access_fix modified to accommodate prototype.
13369         (build_outer_field_access): Don't check for assignment to final
13370         here.
13371         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
13372         possibly returned by outer_field_access_fix. Changed
13373         outer_field_access_fix's first argument.
13374         (check_final_assignment): $finit$'s context is OK.
13375         (patch_unaryop): Use node instead of its line/column value when
13376         calling outer_field_access_fix.
13377
13378 2000-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13379
13380         * parse.y (interface_declaration:): No longer tagged
13381         <node>. Re-installed default action.
13382         (class_member_declaration:): Handle inner interfaces.
13383         (interface_member_declaration): Handle inner interfaces and
13384         classes.
13385         (create_interface): Push error if one seen. Suspend parsing
13386         context when processing an inner interface.
13387         (register_fields): Inner class static field limitations not to
13388         apply to inner interfaces.
13389
13390 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13391
13392         * jcf-parse.c (load_class): Update `java_error_count' when a
13393         class' file can't be found.
13394         (parse.y): Avoid (byte)code generation when errors seen.
13395
13396 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13397
13398         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
13399         decodes a valid node.
13400         (patch_binop): Handle TRUNC_DIV_EXPR.
13401
13402 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13403
13404         * parse.y (resolve_package): New local `acc'. Try to progressively
13405         build and guess a package and type name.
13406
13407 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13408
13409         * parse.y (find_applicable_accessible_methods_list): Load and
13410         layout the search class if necessary.
13411         (java_complete_tree): Keep to original type of the folded initial
13412         value.
13413
13414 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13415
13416         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
13417         Generate error message if circularity is detected. New static
13418         local `list'.
13419         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
13420         * jcf-write.c (generate_bytecode_insns): Very simply handle
13421         SAVE_EXPR.
13422         * parse.y (java_check_circular_reference): Use
13423         `cyclic_inheritance_report' during report, if necessary.
13424         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
13425         walking NEW_ARRAY_INIT twice.
13426
13427 2000-02-09  Tom Tromey  <tromey@cygnus.com>
13428
13429         * parse.y (check_class_interface_creation): Allow inner classes to
13430         be `private' or `protected', check modifiers' consistency. Prevent
13431         block local classes from bearing any modifiers.
13432
13433 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13434
13435         * except.c (check_start_handlers): Re-add prototype lost in last
13436         patch.
13437         (maybe_start_try): Remove excess argument to `check_start_handlers'.
13438
13439 2000-02-09  Andrew Haley  <aph@cygnus.com>
13440
13441         * decl.c (clear_binding_level): Remove excess initializer.
13442         (maybe_poplevels): Remove unused variable.
13443         (force_poplevels): Ditto.
13444         (struct binding_level): Add comment.
13445
13446 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13447
13448         * jcf-write.c (generate_classfile): Don't consider
13449         pre-initialization with reference value (use <clinit> instead.)
13450         * parse.y (java_fix_constructors): No generated constructor for
13451         interfaces.
13452         (build_outer_field_access): Removed debug message.
13453         (outer_field_expanded_access_p): Adapted to bytecode generation.
13454         (build_outer_field_access_method): Use fix_method_argument_names.
13455         (build_outer_method_access_method): Fixed indentation. Added
13456         comment. Handle access method generation for static and also void
13457         methods.
13458         (build_access_to_thisn): Inserted debug message.
13459         (maybe_build_thisn_access_method): Use fix_method_argument_names.
13460         (resolve_qualified_expression_name): Fixed comment.
13461         (not_accessible_p): Adapted to bytecode generation. Added comment.
13462         (patch_method_invocation): Added comment.
13463         (maybe_use_access_method): Fixed leading comment. Handle static
13464         methods.
13465         (java_complete_lhs): Don't shortcut handling of initialized upon
13466         declaration String type static fields when generating bytecode.
13467         (patch_unaryop): Handle outer field access when generating
13468         bytecode.
13469
13470 2000-02-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13471
13472         * java-tree.h (FIELD_THISN): New macro.
13473         * jcf-write.c (append_synthetic_attribute): New function.
13474         (generate_classfile): Set "Synthetic" attribute on this$<n>,
13475         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
13476         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
13477         this$<n> fields.
13478         (build_outer_field_access): Turned on access functions usage and
13479         generation when compiling to bytecode.
13480         (maybe_use_access_method): Likewise.
13481
13482 2000-01-25  Andrew Haley  <aph@cygnus.com>
13483
13484         * java-except.h (struct eh_range): Add `expanded' field.
13485         (maybe_start_try): Add end_pc arg.
13486         (maybe_end_try): Ditto.
13487         * java-tree.h (force_poplevels): new function.
13488         * expr.c (expand_byte_code): Don't call maybe_start_try or
13489         maybe_end_try.
13490         * except.c (add_handler): Reset expanded.
13491         (expand_start_java_handler): Set expanded.
13492         (check_start_handlers): Don't expand a start handler that's
13493         already been expanded.
13494         (maybe_start_try): Add end_pc arg.  Only expand a handler which
13495         ends after end_pc.
13496         (expand_end_java_handler): call force_poplevels.
13497         (force_poplevels): new function.
13498         * decl.c (binding_level): Add start_pc of binding level.
13499         (maybe_pushlevels): Call maybe_start_try when pushing binding
13500         levels.
13501         (maybe_poplevels): Call maybe_end_try when popping binding levels.
13502         (LARGEST_PC): Define.
13503         (clear_binding_level): Use LARGEST_PC.
13504
13505         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
13506         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
13507         (binding_depth, is_class_level, current_pc): new variables.
13508         (struct binding_level): ditto.
13509         (indent): new function.
13510         (push_jvm_slot): add debugging info.
13511         (maybe_pushlevels): ditto.
13512         (maybe_poplevels): ditto.
13513         (pushlevel): ditto.
13514         (poplevel): ditto.
13515         (start_java_method): ditto.
13516         (give_name_to_locals): comment only.
13517         * except.c (binding_depth, is_class_level, current_pc):
13518         new variables.
13519         (expand_start_java_handler): add debugging info.
13520         (expand_end_java_handler): ditto.
13521
13522 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13523
13524         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
13525         (print_name_for_stub_or_jni, process_file): Constify a char*.
13526
13527 2000-02-03  Tom Tromey  <tromey@cygnus.com>
13528
13529         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
13530
13531 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
13532
13533         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
13534         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
13535         defined to be 1.
13536
13537 2000-02-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13538
13539         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
13540         * java-tree.h (TYPE_II_STMT_LIST): New macro.
13541         (struct lang_type): New field `ii_block'.
13542         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
13543         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
13544         * parse.h (struct parser_ctxt): New field `instance_initializers'.
13545         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
13546         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
13547         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
13548         macros.
13549         * parse.y (add_instance_initializer): New function.
13550         (in_instance_initializer): New static global.
13551         (class_body_declaration:): Link instance initializer block.
13552         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
13553         (array_creation_expression:): Remove unused local.
13554         (java_parser_context_push_initialized_field): Fixed leading
13555         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
13556         CPC_INSTANCE_INITIALIZER_LIST.
13557         (java_parser_context_pop_initialized_field): Likewise.
13558         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
13559         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
13560         CPC_INITIALIZER_STMT.
13561         (fix_constructors): New local `class_type'. Use it. Call
13562         add_instance_initializer.
13563         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
13564         (patch_return): Forbid return in instance initializers.
13565         (patch_throw_statement): Enforce exception handling in the context
13566         of instance initializers.
13567
13568 2000-02-03  Tom Tromey  <tromey@cygnus.com>
13569
13570         * Make-lang.in (java.mostlyclean): Remove executables in
13571         `mostlyclean'.
13572
13573 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
13574
13575         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
13576         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
13577         (java_float_finite): Convert to use union Word from javaop.h.
13578         (java_double_finite): Convert to use union DWord from javaop.h.
13579
13580 2000-02-02  Tom Tromey  <tromey@cygnus.com>
13581
13582         * gjavah.c (options): Added `jni' entry.
13583         (help): Document -jni.
13584         (flag_jni): New global.
13585         (process_file): Handle JNI output.  Don't print text from
13586         -prepend, -add, etc, when generating stubs.  Only remove `.class'
13587         suffix if it actually exists.
13588         (main): Create a `.c' file when run with `--jni --stubs'.  Create
13589         correct output file name with `--jni'.
13590         (print_include): Mangle header name differently in JNI case.
13591         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
13592         method list.
13593         (print_method_info): Handle JNI case.  Put signature info into
13594         method name.  Handle case when STREAM is NULL.
13595         (print_name_for_stub_or_jni): New function.
13596         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
13597         (print_cxx_classname): Handle JNI.
13598         (print_full_cxx_name): Likewise.
13599         (decode_signature_piece): Likewise.
13600         (overloaded_jni_method_exists_p): New function.
13601         (struct method_name): Added `signature' and `sig_length' fields.
13602         (HANDLE_END_FIELD): Do nothing in JNI mode.
13603
13604 2000-02-02  Tom Tromey  <tromey@cygnus.com>
13605
13606         * jv-scan.c: Include version.c, <getopt.h>.
13607         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
13608         (options): New array.
13609         (usage): New function.
13610         (version): New function.
13611         (main): Use getopt_long to parse command line.
13612         * jcf-dump.c: Include version.c, <getopt.h>.
13613         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
13614         OPT_JAVAP): New macros.
13615         (options): New array.
13616         (usage): Return `void'.  Changed message.
13617         (help): New function.
13618         (version): New function.
13619         (main): Use getopt_long_only to parse command line.
13620         * gjavah.c: Include <getopt.h>.
13621         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
13622         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
13623         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
13624         (options): New array.
13625         (java_no_argument): Removed.
13626         (help): Updated with missing options.
13627         (main): Use getopt_long_only to parse command line.
13628         (usage): Changed message.
13629
13630 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13631
13632         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
13633         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
13634         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
13635         * parse.y (array_creation_expression:): Handle anonymous arrays.
13636         (build_array_from_name): Don't set `ret_name' if null.
13637         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
13638         (qualify_ambiguous_name): Likewise.
13639         (java_complete_expand_class): Likewise.
13640
13641 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13642
13643         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
13644         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
13645         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
13646         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
13647         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
13648         AIPL_FUNCTION_COMPLETED_INVOCATION.
13649         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
13650         AIPL_FUNCTION_INVOCATION_READY.
13651         (AIPL_FUNCTION_DECLARATION): New enum entry.
13652         * parse.y (reorder_static_initialized): New function.
13653         (java_parser_context_pop_initialized_field): Use it.
13654         (add_inner_class_fields): Use
13655         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
13656         augmented. Install marker after last alias initializer, if any.
13657         (generate_finit): Fixed typo. Don't try to retain only the used
13658         fields.
13659         (method_header): Compute and set DECL_FUNCTION_NAP.
13660         (method_declarator): Fixed comment. Insert alias initializer in
13661         parameter list.
13662         (build_alias_initializer_parameter_list): Fixed leading
13663         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
13664         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
13665         (java_complete_expand_class): Code to retain only used aliases
13666         removed.
13667         (java_complete_expand_methods): New local `first_decl'. Generate
13668         $finit$ first, then expand the constructors, regular methods and
13669         <clinit>.
13670         (java_complete_expand_method): Don't report error on missing
13671         return statement if previously detected bogus.
13672         (fix_constructors): Don't patch constructor parameters list.
13673         (patch_method_invocation): Use new AIPL enum values. Reverse
13674         alias initializer list for anonymous classes.
13675
13676 2000-01-30  Anthony Green  <green@redhat.com>
13677
13678         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
13679         determine how many stack slots to pop.
13680
13681 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13682
13683         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
13684         error handling/recovery.
13685         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
13686
13687 2000-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13688
13689         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
13690         FIELD_LOCAL_ALIAS_USED): New macros.
13691         (DECL_FUNCTION_NAP): New macro.
13692         (struct lang_decl): New field `nap'.
13693         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
13694         (struct lang_type): New fields `finit_stmt_list' and
13695         `clinit_stmt_list'.
13696         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
13697         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
13698         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
13699         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
13700         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
13701         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
13702         (BUILD_THROW): Macro line separator re-indented.
13703         * parse.y (end_class_declaration): New function.
13704         (maybe_generate_pre_expand_clinit): New name for
13705         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
13706         pre-expand static fields.
13707         (maybe_generate_clinit): Function deleted.
13708         (check_for_static_method_reference): Prototype's parameter list
13709         indented.
13710         (generate_finit): New name for maybe_generate_finit. Changed
13711         leading comment. Function rewritten to use
13712         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
13713         (build_alias_initializer_parameter_list): New function.
13714         (java_parser_context_pop_initialized_field): Likewise.
13715         (add_inner_class_fields): Likewise.
13716         (type_declaration:): Call end_class_declaration.
13717         (class_member_declaration:): Likewise.
13718         (formal_parameter_list:): Fixed typos.
13719         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
13720         element. Improved error handling.
13721         (block_statement:): Call end_class_declaration.
13722         (anonymous_class_creation:): Likewise.
13723         (create_anonymous_class): Fixed comments.
13724         (create_class): Call add_inner_class_fields.
13725         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
13726         (method_header): Use MARK_FINAL_PARMS.
13727         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
13728         (method_declarator): Propagate final argument flag.
13729         (craft_constructor): New local `artificial'. Call
13730         build_alias_initializer_parameter_list. Use
13731         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
13732         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
13733         necessary.
13734         (complete_expand_class): Get rid of unused outer context local
13735         alias fields.
13736         (java_complete_expand_methods): Fixed leading
13737         comment. Generate/pre-expand <clinit> first. Changed method
13738         expansion order to regular, $finit$, constructors, <clinit>.
13739         (java_complete_expand_method): Set current_function_decl.
13740         (fix_constructors): Fix constructor parameter list to account for
13741         outer context local alias initializers.
13742         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
13743         (resolve_expression_name): Lookup outer context local aliases. New
13744         local `access', use it.
13745         (patch_method_invocation): Patch inner class ctor invocation with
13746         outer context local aliases initialization values. $finit$
13747         invocation patching now includes things generated with
13748         build_alias_initializer_parameter_list.
13749         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
13750         (build_super_invocation): Likewise.
13751         (patch_assignment): Changed comment.
13752
13753 2000-01-27  Andrew Haley  <aph@cygnus.com>
13754
13755         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
13756         (emit_if): Ditto.
13757         (emit_jsr): Ditto.
13758
13759 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13760
13761         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
13762         concatenation.
13763         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
13764
13765         * parse.y (register_fields): Don't pass a format specifier to
13766         OBSOLETE_MODIFIER_WARNING.
13767         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
13768         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
13769         specifier.
13770         (check_modifiers): Change function into a macro.
13771         (check_class_interface_creation): Pass a literal format string.
13772
13773 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13774
13775         * buffer.h: PROTO -> PARAMS.
13776         * check-init.c: Likewise.
13777         * class.c: Likewise.
13778         * constants.c: Likewise.
13779         * convert.h: Likewise.
13780         * decl.c: Likewise.
13781         * except.c: Likewise.
13782         * expr.c: Likewise.
13783         * gjavah.c: Likewise.
13784         * java-except.h: Likewise.
13785         * java-tree.h: Likewise.
13786         * jcf-depend.c: Likewise.
13787         * jcf-dump.c: Likewise.
13788         * jcf-parse.c: Likewise.
13789         * jcf-path.c: Likewise.
13790         * jcf-reader.c: Likewise.
13791         * jcf-write.c: Likewise.
13792         * jcf.h: Likewise.
13793         * jv-scan.c: Likewise.
13794         * jvgenmain.c: Likewise.
13795         * jvspec.c: Likewise.
13796         * lang.c: Likewise.
13797         * lex.c: Likewise.
13798         * lex.h: Likewise.
13799         * parse-scan.y: Likewise.
13800         * parse.h: Likewise.
13801         * parse.y: Likewise.
13802         * typeck.c: Likewise.
13803         * verify.c: Likewise.
13804         * xref.c: Likewise.
13805         * xref.h: Likewise.
13806         * zextract.c: Likewise.
13807         * zipfile.h: Likewise.
13808
13809 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13810
13811         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
13812         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
13813         * constants.c (build_constant_data_ref): Check for cached
13814         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
13815         in TYPE_CPOOL_DATE_REF.
13816         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
13817         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
13818         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
13819         (LOCAL_FINAL): New macro.
13820         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
13821         constant pool -- don't try to reuse.
13822         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
13823         TYPE_LANG_SPECIFIC.
13824         (find_in_current_zip): Use TYPE_JCF.
13825         * parse.h (java_check_final): Prototype removed.
13826         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
13827         (maybe_create_class_interface_decl,
13828         check_class_interface_creation): Likewise.
13829         (java_expand_finals): Function removed.
13830         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
13831         (block_statement:): Fixed comment.
13832         (anonymous_class_creation:): Likewise.
13833         (check_class_interface_creation): Reversed Jan 12, 2000 extra
13834         argument patch.
13835         (check_class_interface_creation): Loosened error report on (inner)
13836         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
13837         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
13838         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
13839         argument patch.
13840         (create_interface): Likewise.
13841         (anonymous_class_counter): New static global.
13842         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
13843         patch. Fixed comments.
13844         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
13845         anonymous_class_counter when declaring a toplevel class.
13846         (craft_constructor): Fixed constructor name when handling
13847         anonymous classes. Anonymous class constructors to feature hidden
13848         this$<n> parameter.
13849         (java_fix_constructors): Added comment.
13850         (java_check_final): Function removed.
13851         (java_complete_expand_methods): Fixed comment. Don't generate
13852         class data, save its outgoing constant pool instead.
13853         (verify_constructor_super): Skip anonymous class constructor
13854         hidden this$<n> parameter.
13855         (java_expand_classes): New local `saved_ctxp'. Removed call to
13856         java_expand_finals and java_check_final. Expand anonymous class
13857         constructors. Generate class data.
13858         (build_super_invocation): Skip anonymous class hidden this$<n>
13859         parameter.
13860         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
13861         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
13862         (set_java_signature): Likewise.
13863
13864 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
13865
13866         * gjavah.c: Delete ACC_VISIBILITY define.
13867         * jcf.h: Add ACC_VISIBILITY define.
13868         * parse.y: final: rule tagged <value>.
13869         (java_check_regular_methods): Use ACC_VISIBILITY define for
13870         default package access check.
13871         (local_variable_declaration_statement): Use final: rule.
13872
13873 2000-01-17  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
13874
13875         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
13876         (final:): New rule.
13877
13878 2000-01-17  Tom Tromey  <tromey@cygnus.com>
13879
13880         * gjavah.c (print_field_info): Allow non-static final fields.
13881
13882 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13883
13884         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
13885         * parse.y (patch_anonymous_class): New function.
13886         (create_anonymous_class): Register incomplete type when the
13887         class/interface to extends/implement isn't known yet.
13888         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
13889         (verify_constructor_super): Tuned error message.
13890
13891 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13892
13893         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
13894         (ANONYMOUS_CLASS_P): New macro.
13895         (TYPE_SIGNATURE, TYPE_JCF): New macros.
13896         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
13897         * parse.y (create_class): Added leading argument.
13898         (maybe_create_class_interface_decl,
13899         check_class_interface_creation): Likewise.
13900         (craft_constructor): New function.
13901         (verify_constructor_super): Added argument in prototype.
13902         (class_declaration:): Inserted leading argument.
13903         (for_begin:): Use FOR_LOOP_P.
13904         (anonymous_class_creation): Create WFL of the anonymous class to
13905         instantiate. Call build_new_invocation. Added comments.
13906         (check_class_interface_creation): Handle parameter `anonymous' in
13907         verbose mode class creation announce.
13908         (link_nested_class_to_enclosing): Exclude anonymous classes.
13909         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
13910         anonymous class, even though they appear to have an enclosing
13911         context.
13912         (create_interface): Pass extra argument to
13913         check_class_interface_creation.
13914         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
13915         (create_class): Call check_class_interface_creation and
13916         maybe_create_class_interface_decl with extra new argument. Don't
13917         add private this$<n> to anonymous classes.
13918         (method_declarator): Insert hidden this$<n> to anonymous class
13919         constructors.
13920         (java_fix_constructors): Deleted code creating default
13921         constructor. Call craft_constructor instead.
13922         (java_check_regular_methods): Set `saw_constructor' to 1 for
13923         anonymous classes.
13924         (fix_constructors): Pass extra argument to verify_constructor_super.
13925         (verify_constructor_super): New local `sdecl', use it. Search for
13926         matching constructor (possibly featuring arguments) in super
13927         class.
13928         (lookup_method_invoke): Craft constructor according to arguments
13929         list when dealing with anonymous class constructors.
13930         (build_super_invocation): Pass arguments to anonymous class super
13931         constructors.
13932         (search_loop): Use FOR_LOOP_P.
13933         (labeled_block_contains_loop_p): Likewise.
13934
13935 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13936
13937         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
13938         (enclosing_context_p): New function.
13939         (get_access_flags_from_decl): Handle CLASS_STATIC.
13940         (maybe_layout_super_class): Extra first argument passed to
13941         do_resolve_class.
13942         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
13943         ID_INIT_P.
13944         * decl.c (access0_identifier_node): New global.
13945         (init_decl_processing): access0_identifier_node initialized.
13946         (pushdecl): Set DECL_CONTEXT only on non type decls.
13947         * expr.c (lookup_field): Lookup inner class fields in enclosing
13948         contexts.
13949         (expand_invoke): Use ID_INIT_P.
13950         (expand_java_field_op): Use DECL_CLINIT_P.
13951         * java-tree.def (CLASS_LITERAL): New tree code.
13952         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
13953         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
13954         (struct lang_decl): New field `inner_access'.
13955         (enclosing_context_p): Prototyped.
13956         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
13957         ID_CLINIT_P): New macros.
13958         (CLASS_STATIC): New macro.
13959         (CLASS_ACCESS0_GENERATED_P): New macro.
13960         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
13961         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
13962         INNER_CLASS_P): New macros.
13963         (DECL_INNER_CLASS_LIST): New macro.
13964         * jcf-parse.c (yyparse): Avoid the use of ANSI string
13965         concatenation.
13966         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
13967         the shift value to int. Fixed typo in comment.
13968         * lex.c (inst_id, wpv_id): Initialize.
13969         * mangle.c (unicode_mangling_length): Take `$' into account.
13970         * parse.h (DRECOVER, RECOVER): Terminate properly.
13971         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
13972         (typedef struct _jdep): New field `enclosing'.
13973         (JDEP_ENCLOSING): New macro.
13974         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
13975         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
13976         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
13977         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
13978         GET_ENCLOSING_CPC_CONTEXT): New macros.
13979         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
13980         (do_resolve_class): Added extra argument in prototype.
13981         * parse.y (resolve_class): Added extra argument in prototype.
13982         (maybe_create_class_interface_decl): Likewise.
13983         (maybe_use_access_method, build_wfl_wrap): New functions.
13984         (java_complete_expand_classes, java_complete_expand_class):
13985         Likewise.
13986         (java_parser_context_push_initialized_field,
13987         java_parser_context_suspend, java_parser_context_resume):
13988         Likewise.
13989         (maybe_make_nested_class_name, make_nested_class_name,
13990         set_nested_class_simple_name_value,
13991         link_nested_class_to_enclosing, find_as_inner_class,
13992         find_as_inner_class_do, check_inner_class_redefinition,
13993         build_thisn_assign, build_current_thisn, build_access_to_thisn,
13994         maybe_build_thisn_access_method, build_outer_field_access,
13995         build_outer_field_access_methods, build_outer_field_access_expr,
13996         build_outer_method_access_method, build_new_access_id,
13997         build_outer_field_access_method, outer_field_access_p,
13998         outer_field_expanded_access_p, outer_field_access_fix,
13999         build_incomplete_class_ref, patch_incomplete_class_ref,
14000         create_anonymous_class): Likewise.
14001         (inst_id, wpv_id): New static global variables.
14002         (synchronized:): New rule, tagged <node>.
14003         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
14004         rules.
14005         (anonymous_class_creation:): New rule, tagged <node>.
14006         (NEW_TK): Tagged <node>.
14007         (type_literals, array_type_literal): New rules, tagged <node>.
14008         (class_declaration:): Removed action when reducing by class_body:
14009         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
14010         using GET_CPC in sub-rules.
14011         (class_member_declaration): Handle inner classes.
14012         (method_declaration): When reducing method_header:, reset
14013         current_function_decl when appropriate.
14014         (method_declarator:): Set the number of formal parameter to 0 for
14015         method declared without arguments.
14016         (constructor_declarator:): Likewise.
14017         (static_initializer:): List of elements kept in a list.
14018         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
14019         use of the keyword `static' for type declarations.
14020         (block_statement:): Handle inner class declarations.
14021         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
14022         type qualified `this'.
14023         (class_instance_creation_expression): Use anonymous_class_creation:
14024         to handle inner class instances creation. Handle qualified `new'.
14025         (something_dot_new): Added appropriate actions.
14026         (create_new_parser_context): New function.
14027         (java_push_parser_context, java_parser_context_save_global,
14028         java_parser_context_suspend): Use create_new_parser_context.
14029         (check_modifiers): Changed leading comment.
14030         (check_class_interface_creation): Handle interclasses.
14031         (add_superinterfaces): Fixed comment.
14032         (create_interface): Build qualified name from the raw_name instead
14033         of its matching WFL. Push the initialized fields list. raw_name added
14034         as an extra argument to maybe_create_class_interface_decl.
14035         (create_class): Build qualified name from the raw_name instead of
14036         its matching WFL. Removed assignment to current_parsed_class_un.
14037         Call PUSH_ERROR before returning an error. Suspend the current
14038         parser context when processing an inner class. Push the
14039         initialized fields list. raw_name added as an extra argument to
14040         maybe_create_class_interface_decl. Add the private this$<n>
14041         field.
14042         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
14043         (register_fields): Get the class type from GET_CPC and handle
14044         previous errors.  Added code to handle the creation of static
14045         fields in inner classes. Initialized fields initialization
14046         statements kept in a list of lists.
14047         (maybe_generate_finit): Initialized fields initialization
14048         statements kept in a list of lists. Use GET_CPC.
14049         (maybe_generate_clinit): Likewise.
14050         (method_header): Use GET_CPC and GET_CPC_UN.
14051         (parser_qualified_classname): Handle inner classes.
14052         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
14053         (java_fix_constructors): Hide pointer to enclosing context
14054         instance in constructor list when dealing with inner classes.
14055         (jdep_resolve_class): Call resolve_class with extra first argument
14056         JDEP_ENCLOSING.
14057         (resolve_class): Add enclosing context as a first extra argument
14058         to do_resolve_class.
14059         (do_resolve_class): Call find_as_inner_class. Handle WFLs
14060         properly.
14061         (resolve_no_layout): Extra argument added to resolve_class
14062         invocation.
14063         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
14064         (java_get_real_method_name): Use GET_CPC_UN.
14065         (check_abstract_method_definitions): Use DECL_CLINIT_P.
14066         (java_check_abstract_methods): Handle static method declared in
14067         inner classes by an error.
14068         (java_check_regular_methods): Use DECL_CLINIT_P.
14069         (source_start_java_method): Also set DECL_MAX_LOCALS.
14070         (create_artificial_method): Call java_parser_context_save_global
14071         and java_parser_context_restore_global instead of saving/restoring
14072         the context by hand.
14073         (expand_start_java_method): Improved verbose mode message.
14074         (java_complete_expand_methods): Fixed leading comment. Use
14075         DECL_CLINIT_P.
14076         (fix_constructors): Added assignment to this$<n> if necessary.
14077         (java_expand_classes): Call java_complete_expand_classes instead
14078         of java_complete_expand_methods.
14079         (make_qualified_primary): Simplified.
14080         (merge_qualified_name): Optimized for missing left or right parts.
14081         (resolve_expression_name): Handle access to outer class fields from
14082         interclasses.
14083         (resolve_qualified_expression_name): New macro
14084         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
14085         classes. Report error on non appropriate qualification of
14086         `new'. Handle qualified `this'.
14087         (not_accessible_p): Allow access to outer class private fields from
14088         inner classes.
14089         (patch_method_invocation): Handle method invocations through
14090         access methods and inner class constructor invocations.
14091         (find_applicable_accessible_methods_list): Search enclosing
14092         contexts of an inner class.
14093         (search_applicable_methods_list): Fixed typo.
14094         (argument_types_convertible): Handle inner class constructors'
14095         hidden outer context reference argument.
14096         (qualify_ambiguous_name): Handle qualified `this'.
14097         (java_complete_lhs): Handle use of field accessed through
14098         artificial access methods in various cases of assignments. Handle
14099         CLASS_LITERAL node.
14100         (check_final_assignment): Use DECL_CLINIT_P.
14101         (valid_ref_assignconv_cast_p): Handle the destination being an
14102         enclosing context of the source.
14103         (patch_unaryop): Handle use of field accessed through artificial
14104         access methods.
14105         (patch_return): Use DECL_CLINIT_P.
14106         (patch_throw_statement): Use DECL_CLINIT_P.
14107         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
14108         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
14109         ID_INIT_P.
14110
14111 2000-01-16  Anthony Green  <green@cygnus.com>
14112
14113         * parse.y (build_string_concatenation): Only use
14114         StringBuffer(String) shortcut if String arg is constant.
14115
14116 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14117
14118         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
14119         the shift value to int. Fixed typo in comment.
14120
14121 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
14122
14123         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
14124         * jcf-write.c: Likewise.
14125         * parse.y: Likewise.
14126         * parse.c: Regenerate.
14127
14128 2000-01-09  Anthony Green  <green@cygnus.com>
14129
14130         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
14131         bytecodes in the correct order.
14132
14133 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14134
14135         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
14136
14137 2000-01-06  Anthony Green  <green@cygnus.com>
14138
14139         * expr.c (java_lang_expand_expr): Switch to permanent obstack
14140         before building constant array decl.
14141
14142 2000-01-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14143
14144         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
14145         method invocation and typo in conditional expression.
14146         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
14147         the appropriate NOTE_POP.
14148         * parse.y (patch_binop): Shift value mask to feature the right
14149         type.
14150
14151 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14152
14153         * class.c (assume_compiled, assume_compiled_node): Add static
14154         prototype.
14155         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
14156
14157         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
14158
14159         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
14160
14161         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
14162         to `__modifier' to avoid stringifying it.
14163
14164         * parse.y (verify_constructor_circularity): Don't call a variadic
14165         function with a non-literal format string.
14166         (java_check_abstract_methods): Move unreachable code inside
14167         `continue' statement.
14168         (lookup_method_invoke): Call xstrdup, not strdup.
14169
14170         * expr.c (expand_java_field_op): Avoid the use of ANSI string
14171         concatenation.
14172
14173         * jcf-parse.c (yyparse): Likewise.
14174
14175         * jv-scan.c (main): Likewise.
14176
14177 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14178
14179         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
14180         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
14181         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
14182         concatenation.
14183
14184         * parse.y (synchronized, variable_redefinition_error,
14185         check_class_interface_creation, create_interface, create_class,
14186         method_header, finish_method_declaration,
14187         check_modifiers_consistency, method_declarator,
14188         complete_class_report_errors, check_abstract_method_definitions,
14189         java_check_regular_methods, check_throws_clauses,
14190         java_check_abstract_methods, read_import_dir,
14191         check_pkg_class_access, declare_local_variables, fix_constructors,
14192         cut_identifier_in_qualified, resolve_expression_name,
14193         resolve_qualified_expression_name, patch_method_invocation,
14194         java_complete_lhs, patch_assignment, try_builtin_assignconv,
14195         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
14196         patch_exit_expr, patch_exit_expr, patch_switch_statement,
14197         patch_try_statement, patch_synchronized_statement,
14198         patch_throw_statement, check_thrown_exceptions,
14199         patch_conditional_expr): Likewise.
14200
14201 1999-12-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14202
14203         * Makefile.in (LIBDEPS): Added gcc's errors.o
14204         (../jcf-dump$(exeext):): Link with gcc's errors.o
14205         (../gcjh$(exeext):): Likewise.
14206         * expr.c (expand_java_NEW): Layout the entire target type instead of
14207         laying out its methods only.
14208         (lookup_field): Layout the class after having loaded it.
14209         * java-tree.h (java_debug_context): Declared.
14210         * jcf-io.c (toplev.h): Included.
14211         (find_class): Removed assignment to jcf's outofsynch
14212         field. Force source file to be read if newer than its matching
14213         class file. Tweaked debug messages.
14214         * jcf-parse.c (jcf_out_of_synch): Deleted.
14215         (read_class): Call to jcf_out_of_synch removed.
14216         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
14217         (jcf_out_of_synch): Prototype deleted.
14218         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
14219         `deprecated' and `class_err': integer turned into bit-fields.
14220         New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments.
14221         * parse.y (package_list): New global.
14222         (package_declaration:): Record newly parsed package name.
14223         (extra_ctxp_pushed_p): Static global deleted.
14224         (java_parser_context_save_global): Create buffer context for the
14225         purpose of saving globals, if necessary.
14226         (java_parser_context_restore_global): Pop context pushed for the
14227         purpose of saving globals, if necessary.
14228         (java_debug_context_do): New prototype and function.
14229         (java_debug_context): Likewise.
14230         (do_resolve_class): Use already parsed package names to qualify
14231         and lookup class candidate.
14232         (java_pre_expand_clinit): Removed unnecessary local variable.
14233
14234 1999-12-17  Tom Tromey  <tromey@cygnus.com>
14235
14236         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
14237         fixes PR gcj/119.
14238         (process_file): Use `\n\' at end of each line in string.
14239
14240 1999-12-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14241
14242         * expr.c (expand_invoke): Layout the loaded class before
14243         attempting to use it.
14244         (expand_java_field_op): Allow final field assignments to take
14245         place in $finit$.
14246         * typeck.c (convert): Return error_mark_node if expr is null.
14247
14248 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14249
14250         * class.c (class_depth): Return -1 if the class doesn't load
14251         properly.
14252         * expr.c (can_widen_reference_to): Check for errors during depth
14253         computation and return 0 accordingly.
14254         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
14255         create default constructors and add an other error check.
14256         * parse.h (java_fix_constructors): Prototyped.
14257         * parse.y (java_pre_expand_clinit): Likewise.
14258         (build_super_invocation): Re-prototyped to feature one argument.
14259         (java_check_circular_reference): Directly use `current'.
14260         (java_fix_constructors): New function.
14261         (java_check_regular_methods): Don't create default constructors
14262         here, but abort if none were found.
14263         (java_complete_expand_methods): Pre-process <clinit> calling
14264         java_pre_expand_clinit.
14265         (java_pre_expand_clinit): New function.
14266         (fix_constructors): build_super_invocation invoked with the
14267         current method declaration as an argument.
14268         (build_super_invocation): Use the context of the processed method
14269         decl argument instead of current_class.
14270         * typeck.c (lookup_java_method): Take WFLs in method names into
14271         account.
14272
14273 1999-12-14  Per Bothner  <per@bothner.com>
14274
14275         * class.c (make_class_data): flag_keep_inline_functions to keep
14276         private methods in the method array.
14277
14278 1999-12-15  Anthony Green  <green@cygnus.com>
14279
14280         * check-init.c (check_init): Take into account both types of
14281         `throw's when checking for uninitialized variables.
14282
14283 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14284
14285         * parse.y (java_complete_lhs): Force conversion of array
14286         dimensions to int_type_node, that's what runtime's ABI expects.
14287
14288 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14289
14290         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
14291         operand of a WFL, until the Java front-end gets fixed with regard
14292         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
14293
14294 1999-12-10  Andrew Haley  <aph@cygnus.com>
14295
14296         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
14297         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
14298         expr.c (build_java_athrow): Add support for sjlj-exceptions.
14299         java-tree.h: Ditto.
14300         jcf-write.c: Ditto.
14301
14302 1999-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14303
14304         * expr.c (java_lang_expand_expr): Switch to permanent obstack
14305         before calling expand_eh_region_start and expand_start_all_catch.
14306         * except.c (expand_start_java_handler): Switch to permanent
14307         obstack before calling expand_eh_region_start.
14308         (expand_end_java_handler): Switch to permanent obstack before
14309         calling expand_start_all_catch.
14310
14311 1999-12-5  Anthony Green  <green@cygnus.com>
14312
14313         * decl.c (init_decl_processing): Mark throw_node as a noreturn
14314         function with side effects.
14315         (init_decl_processing): Mark all memory allocating DECLs with
14316         DECL_IS_MALLOC.
14317
14318 1999-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14319
14320         * except.c (expand_end_java_handler): Call
14321         expand_resume_after_catch and end_catch_handler.
14322
14323 1999-11-30  Anthony Green  <green@cygnus.com>
14324
14325         * verify.c (verify_jvm_instructions): Create new return label
14326         chain if non existent (don't rely on the verified state of the jsr
14327         target.)
14328
14329 1999-11-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14330
14331         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
14332         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
14333
14334         * parse.y (patch_assignment): Removed bogus final class test on
14335         lhs when checking on whether to emit an ArrayStoreException runtime
14336         check.
14337         * expr.c (expand_java_arraystore): Likewise.
14338
14339 1999-11-28 Anthony Green <green@cygnus.com>
14340
14341         * decl.c (find_local_variable): Reuse single slot decls when
14342           appropriate.
14343
14344 1999-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14345
14346         * jcf-parse.c (saw_java_source): Global variable removed.
14347         (read_class): Don't use `saw_java_source'. Added extra braces.
14348         (yyparse): Code setting `saw_java_source' removed.
14349
14350 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
14351
14352         * except.c (emit_handlers): Zero catch_clauses after emitting them.
14353
14354 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14355
14356         * verify.c (merge_type_state): Non verified subroutines being
14357         considered more than once to trigger passive type merge.
14358
14359 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14360
14361         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
14362         in case of error. Error message tuned.
14363
14364 1999-11-21  Anthony Green  <green@cygnus.com>
14365
14366         * constants.c (find_methodref_index): Unwrap method names before
14367         inserting them in the constant pool.
14368
14369         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
14370
14371         * class.c (assume_compiled_node): New typedef.
14372         (assume_compiled_tree): New static data.
14373         (find_assume_compiled_node): New function.
14374         (add_assume_compiled): New function.
14375         (assume_compiled): New function.
14376         * class.c (make_class_data): Use assume_compiled.
14377         (is_compiled_class): Use assume_compiled.
14378
14379         * java-tree.h (add_assume_compiled): Declare.
14380
14381         * lang.c (lang_decode_option): Parse new options.
14382
14383 1999-11-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14384
14385         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
14386         int_type_node: that's what `_Jv_AllocObject' expects.
14387
14388 1999-11-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14389
14390         * parse.y (lookup_method_invoke): Use lang_printable_name to
14391         reliably build the type name during error report. Fixes PR gcj/97.
14392
14393 1999-11-09  Tom Tromey  <tromey@cygnus.com>
14394
14395         * jcf-path.c: Include <sys/stat.h>.
14396         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
14397         (DIR_UP): New macro.
14398
14399 1999-11-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14400
14401         * parse.y (source_end_java_method): Resume permanent allocation,
14402         reversing Apr 27 1998 patch.
14403         (patch_string_cst): Pop obstacks after having pushed the permanent
14404         ones.
14405
14406 1999-11-05  Tom Tromey  <tromey@cygnus.com>
14407
14408         * class.c (finish_class): Emit inlined methods if any native
14409         methods exist in the class.  Fixes PR gcj/85.
14410
14411 1999-11-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14412
14413         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
14414         (qualify_ambiguous_name): Likewise.
14415
14416 1999-11-03  Godmar Back <gback@cs.utah.edu>
14417
14418         * typeck.c: (lookup_java_method):  search all inherited
14419         interfaces when looking up interface method.
14420
14421 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14422
14423         * parse.y (method_header:): Issue error message for rule `type
14424         error'.
14425         (synchronized:): Error report when not using synchronized.
14426
14427 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14428
14429         * parse.y (resolve_qualified_expression_name): Prevent `this' from
14430         being used before the superclass constructor has been called.
14431         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
14432         instead of `CALL_THIS_CONSTRUCTOR_P'.
14433
14434 1999-10-30  Todd T. Fries <todd@lighthouse.fries.net>
14435
14436         * check-init.c: Fix typo in comment.
14437
14438 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14439
14440         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
14441         and final method.
14442
14443 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14444
14445         * parse.y (expression_statement:): Call function to report
14446         improper invocation of a constructor.
14447         (parse_ctor_invocation_error): New function.
14448
14449 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
14450
14451         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
14452         remember_end_note.
14453
14454 1999-10-21  Tom Tromey  <tromey@cygnus.com>
14455
14456         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
14457         in generated `main'.
14458
14459 1999-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14460
14461         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
14462         (qualify_ambiguous_name): Likewise.
14463
14464 1999-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14465
14466         * parse.y (java_complete_tree): fold_constant_for_init to work on
14467         permanent_obstack.
14468         (java_complete_lhs): Likewise.
14469         (array_constructor_check_entry): Complete an initializer element
14470         on permanent_obstack.
14471
14472 1999-10-19  Tom Tromey  <tromey@cygnus.com>
14473
14474         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
14475         From Mike Moreton <mike@pillim.demon.co.uk>.
14476
14477 1999-10-15  Greg McGary  <gkm@gnu.org>
14478
14479         * java-tree.h (flag_bounds_check): Remove extern decl.
14480         * lang.c (flag_bounds_check): Remove global variable.
14481         (lang_f_options): Remove "bounds-check" entry.
14482         (lang_init_options): Default flag_bounds_check to "on".
14483
14484 1999-10-14  Tom Tromey  <tromey@cygnus.com>
14485
14486         * jvgenmain.c (usage): New function.
14487         (main): Use it.  Also, handle `-D' options.
14488         * jvspec.c (lang_specific_driver): Recognize -D.
14489         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
14490
14491         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
14492
14493 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14494
14495         * jcf-dump.c (print_constant, disassemble_method): Don't call a
14496         variadic function with a non-literal format string.
14497
14498         * parse-scan.y (report_main_declaration): Likewise.
14499
14500         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
14501
14502         * parse.y (read_import_dir, patch_assignment, patch_binop,
14503         patch_array_ref): Likewise.
14504
14505         * typeck.c (build_java_array_type): Likewise.
14506
14507         * verify.c (verify_jvm_instructions): Likewise.
14508
14509 1999-10-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14510
14511         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
14512
14513 1999-10-07  Anthony Green  <green@cygnus.com>
14514
14515         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
14516         where CHECK_PUT may fail for valid reasons.
14517
14518         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
14519         UNSAFE_PUTN): New macros.
14520
14521 1999-10-04  Tom Tromey  <tromey@cygnus.com>
14522
14523         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
14524         well.  Fixes Java PR gcj/59.
14525         * parse-scan.y (yyerror): Report errors.
14526
14527 1999-09-24  Glenn Chambers  <GChambers@provsol.com>
14528
14529         * decl.c (insert_block): Remove unconditional `abort'.
14530
14531 1999-09-24  Bernd Schmidt  <bernds@cygnus.co.uk>
14532
14533         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
14534         FUNCTION_CODE now of type int.  All callers changed.
14535         Set the builtin's DECL_BUILT_IN_CLASS.
14536
14537 1999-09-23  Tom Tromey  <tromey@cygnus.com>
14538
14539         * jvspec.c (lang_specific_driver): Don't read spec file if
14540         -fsyntax-only given.
14541
14542 1999-09-22  Tom Tromey  <tromey@cygnus.com>
14543
14544         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
14545
14546         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
14547         (WORDS_TO_LONG): Likewise.
14548         (WORDS_TO_DOUBLE): Likewise.
14549
14550 1999-09-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14551
14552         * jcf-write.c (RELOCATION_VALUE_0): New macro.
14553         (RELOCATION_VALUE_1): Likewise.
14554         (emit_iinc, emit_reloc, push_constant1, push_constant2,
14555         push_in_const, push_long_const): Prototyped.
14556         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
14557         (push_constant2): Likewise.
14558         (push_int_const): Cast find_constant1's integer arguments to `jword'.
14559         (find_constant_wide): Cast find_constant2's integer arguments to
14560         `jword'.
14561         (find_constant_index): Cast find_constant2's and find_constant2's
14562         integer arguments to `jword'.
14563         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
14564         (emit_switch_reloc): Use RELOCATION_VALUE_0.
14565         (emit_if): Use RELOCATION_VALUE_1.
14566         (emit_goto): Likewise.
14567         (emit_jsr): Likewise.
14568         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
14569         argument to push_long_const to HOST_WIDE_INT.
14570
14571 1999-09-15  Andreas Schwab  <schwab@suse.de>
14572
14573         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
14574
14575 1999-09-20  Nick Clifton  <nickc@cygnus.com>
14576
14577         * lang.c (lang_decode_option): Extend comment.
14578
14579 1999-09-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14580
14581         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
14582         instead of fndecl.
14583
14584 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14585
14586         * gjavah.c (get_field_name, print_method_info, print_include,
14587         add_namelet): Use xmalloc, not malloc.
14588
14589         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
14590         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
14591         NULL pointer.
14592
14593         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
14594
14595         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
14596
14597         * jcf-path.c (add_entry): Likewise.
14598
14599         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
14600
14601         * jv-scan.c (xmalloc): Remove definition.
14602
14603         * jvgenmain.c (xmalloc): Likewise.
14604
14605         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
14606
14607         * lex.c (java_store_unicode): Use xrealloc, not realloc.
14608
14609         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
14610         concat, not xmalloc/sprintf.
14611         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
14612         (xstrdup): Remove definition.
14613
14614         * parse.y (duplicate_declaration_error_p,
14615         constructor_circularity_msg, verify_constructor_circularity,
14616         check_abstract_method_definitions, java_check_regular_methods,
14617         java_check_abstract_methods, patch_method_invocation,
14618         check_for_static_method_reference, patch_assignment, patch_binop,
14619         patch_cast, array_constructor_check_entry, patch_return,
14620         patch_conditional_expr): Use xstrdup, not strdup.
14621
14622         * zextract.c (ALLOC): Use xmalloc, not malloc.
14623
14624 1999-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14625
14626         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
14627
14628         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
14629         (do_spec, lang_specific_pre_link, lang_specific_driver,
14630         input_filename, input_filename_length): Don't declare.
14631         (main_class_name, jvgenmain_spec, lang_specific_driver):
14632         Constify a char*.
14633         (lang_specific_driver): All calls to the function pointer
14634         parameter now explicitly call `fatal'.
14635
14636 1999-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14637
14638         * parse.y (find_applicable_accessible_methods_list): Search
14639         abstract classes as interfaces.
14640
14641 1999-09-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14642
14643         * class.c (finish_class): We're now outside a valid method
14644         declaration. Tell the rest of gcc so.
14645
14646 1999-09-08  Bruce Korb  autogen@linuxbox.com
14647
14648         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
14649
14650 1999-09-07  Tom Tromey  <tromey@cygnus.com>
14651
14652         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
14653         java-array.h.
14654         (decode_signature_piece): Don't emit "::" in JArray<>.
14655         (print_namelet): Only print trailing `;' when printing a class.
14656
14657 1999-09-10  Bernd Schmidt  <bernds@cygnus.co.uk>
14658
14659         * java-tree.h: Delete declarations for all tree nodes now moved to
14660         global_trees.
14661         * decl.c: Delete their definitions.
14662
14663 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
14664
14665         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
14666         * Makefile.in (OBJS): Add ggc-callbacks.o.
14667         (OBJDEPS): Likewise.
14668
14669 1999-09-03  Tom Tromey  <tromey@cygnus.com>
14670
14671         * parse.y (strip_out_static_field_access_decl): Return operand if
14672         it satisfies JDECL_P.
14673
14674 1999-09-02  Tom Tromey  <tromey@cygnus.com>
14675
14676         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
14677         Handle nested arrays, like `[[I'.
14678
14679 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14680
14681         * class.c (finish_class): Remove unused parameter, all callers
14682         changed.
14683
14684         * expr.c (build_java_athrow): Change return type to void.
14685         (java_lang_expand_expr): Make sure each case in switch returns a
14686         value.
14687
14688         * java-tree.h (finish_class): Fix prototype to take void args.
14689
14690         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
14691         (main): Issue return from main, not exit.
14692
14693         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
14694
14695         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
14696
14697         * jv-scan.c (main): Issue return from main, not exit.
14698
14699         * parse.y (check_abstract_method_definitions,
14700         java_check_abstract_method_definitions): Add static prototypes.
14701         (java_complete_expand_methods): Fix call to `finish_class'.
14702
14703         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
14704         and `prevpc'.
14705
14706 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14707
14708         * lang.c (language_string): Constify.
14709
14710 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14711
14712         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
14713         Remove hacks for stuff which comes from libiberty.
14714
14715         * Make-lang.in: Likewise.
14716
14717 1999-08-30  Hans-Peter Nilsson  <hp@axis.se>
14718
14719         * Makefile.in (xref.o): Depend on xref.c explicitly.
14720
14721 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14722
14723         * java-tree.h (lang_printable_name): Constify a char*.
14724
14725         * lang.c (lang_printable_name): Likewise.
14726
14727 1999-08-27  Jeffrey A Law  (law@cygnus.com)
14728
14729         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
14730         comments in C code.
14731
14732 1999-08-26  Tom Tromey  <tromey@cygnus.com>
14733
14734         * gjavah.c (print_cxx_classname): Print "::" before qualified
14735         name.
14736
14737 1999-08-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14738
14739         * parse.y (lookup_cl): Changed leading comment. Now does its best
14740         to set the column number.
14741         (qualify_ambiguous_name): Take WFL wrappers into account.
14742
14743 1999-08-25  Gregg Townsend  <gmt@cs.arizona.edu>
14744
14745         * verify.c (verify_jvm_instructions): Don't check instruction
14746         validity beyond end of method.
14747
14748 1999-08-25  Tom Tromey  <tromey@cygnus.com>
14749
14750         * jvspec.c (lang_specific_driver): Correctly handle --help again.
14751
14752 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14753
14754         * gjavah.c (print_name, print_base_classname, utf8_cmp,
14755         cxx_keyword_subst, generate_access, name_is_method_p,
14756         get_field_name, print_field_name, super_class_name, print_include,
14757         decode_signature_piece, print_class_decls, usage, help,
14758         java_no_argument, version, add_namelet, print_namelet): Add static
14759         prototype.
14760         (print_base_classname, utf8_cmp, cxx_keyword_subst,
14761         name_is_method_p): Constify a char*.
14762         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
14763         Provide a final else clause in an if-else-if.
14764         (print_field_info): Add missing final arg in function call to
14765         `print_field_name'.
14766         (print_method_info, decompile_method, decode_signature_piece,
14767         print_c_decl, print_full_cxx_name, print_stub,
14768         print_mangled_classname, super_class_name, print_include,
14769         add_namelet, add_class_decl, print_class_decls, process_file,
14770         help): Constify a char*.
14771
14772         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
14773         push_int_const, find_constant_wide, find_constant_index,
14774         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
14775         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
14776         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
14777         emit_if, emit_goto, emit_jsr, call_cleanups,
14778         make_class_file_name): Add static prototypes.
14779         (generate_bytecode_return, generate_bytecode_insns): Pass a
14780         NULL_PTR, not a NULL_TREE.
14781
14782         * jv-scan.c: Include "jcf.h".
14783         (main): Declare using DEFUN macro.
14784
14785         * jvspec.c (find_spec_file, lang_specific_pre_link,
14786         lang_specific_driver): Add prototypes.
14787         (find_spec_file): Constify a char*.
14788
14789         * keyword.gperf (hash, java_keyword): Add prototypes.
14790
14791         * lang.c (lang_print_error): Add static prototype.
14792         (lang_init): Prefer memcpy over bcopy to avoid casts.
14793
14794         * lex.c (yylex): Add static prototype.
14795
14796         * parse-scan.y: Include "lex.c" earlier.
14797
14798         * parse.h: Remove redundant declaration for `yylex'.
14799
14800         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
14801         labeled_block_contains_loop_p): Add static prototypes.
14802         (not_accessible_p): Make static to match prototype.
14803
14804         * verify.c (start_pc_cmp): Don't needlessly cast away const.
14805
14806 1999-08-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14807
14808         * parse.y (check_method_redefinition): Changed leading comment.
14809         (check_abstract_method_definitions): New function.
14810         (java_check_abstract_method_definitions): New function.
14811         (java_check_regular_methods): Call it.
14812         (verify_constructor_super): Fixed indentation.
14813         (lookup_method_invoke): Likewise.
14814
14815 1999-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14816
14817         * parse.y (method_header): Return a null pointer if the current
14818         class node is null.
14819         (finish_method_declaration): Return if the current function decl
14820         is null.
14821         (source_start_java_method): Likewise.
14822         (java_method_add_stmt): Likewise.
14823
14824 1999-08-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14825
14826         * class.c (emit_register_class): Removed unnecessary call to
14827         start_sequence.
14828         * parse.y (labeled_block_contains_loop_p): Removed unused local
14829         variable.
14830
14831 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14832
14833         * parse.y (java_refold): Added prototype.
14834
14835 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14836
14837         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
14838         (java_stabilize_reference): Removed unnecessary `else'.
14839         (java_complete_lhs): Set flag to remember boolean. Call
14840         java_refold. Added comments.
14841         (java_decl_equiv): New function.
14842         (binop_compound_p): Likewise.
14843         (java_refold): Likewise.
14844         (patch_unaryop): Striped static field access assigned to decl and
14845         op. Changed promotion scheme for ++/-- operators.
14846         (search_loop): New function.
14847         (labeled_block_contains_loop_p): Likewise.
14848         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
14849         comment.
14850         (patch_bc_statement): Call search_loop. Fixed comment.
14851
14852 1999-08-14  Anthony Green  <green@cygnus.com>
14853
14854         * expr.c (java_lang_expand_expr): Mark static array data as
14855         referenced.
14856
14857 1999-08-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14858
14859         * jvgenmain.c (main): NUL-terminate name_obstack.
14860
14861 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14862
14863         * check-init.c (check_bool2_init, done_alternative): Add static
14864         prototypes.
14865
14866         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
14867         (add_method, build_utf8_ref, build_class_ref,
14868         append_gpp_mangled_type, layout_class_method): Constify a char*.
14869
14870         * decl.c (push_promoted_type, make_binding_level): Add static
14871         prototypes.
14872         (push_promoted_type, pushdecl): Constify a char*.
14873
14874         * except.c (find_handler_in_range, link_handler,
14875         check_start_handlers): Add static prototypes.
14876
14877         * expr.c (process_jvm_instruction): Constify a char*.
14878
14879         * gjavah.c (main): Constify a char*.
14880
14881         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
14882         Constify a char*.
14883
14884         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
14885         static prototypes.
14886         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
14887         munge, print_ents): Constify a char*.
14888
14889         * jcf-dump.c (disassemble_method): Constify a char*.
14890         (print_constant_pool, print_exception_table): Add static prototypes.
14891         (print_constant, print_exception_table, main, disassemble_method):
14892         Constify a char*.
14893
14894         * jcf-io.c (find_classfile, find_class): Likewise.
14895
14896         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
14897         (set_source_filename, predefined_filename_p): Add static prototypes.
14898         (set_source_filename, get_constant, get_class_constant,
14899         find_in_current_zip): Constify a char*.
14900
14901         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
14902         static prototypes.
14903         (add_entry, add_path, jcf_path_classpath_arg,
14904         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
14905
14906         * jcf-reader.c (get_attribute, jcf_parse_preamble,
14907         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
14908         jcf_parse_one_method, jcf_parse_methods,
14909         jcf_parse_final_attributes): Add static prototypes.
14910         (get_attribute): Constify a char*.
14911
14912         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
14913         jcf_dependency_add_target, jcf_path_classpath_arg,
14914         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
14915
14916         * jv-scan.c (main): Constify a char*.
14917         (gcc_obstack_init): Add prototype arguments.
14918
14919         * jvgenmain.c (gcc_obstack_init): Likewise.
14920         (main): Constify a char*.
14921
14922         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
14923         static prototypes.
14924         (put_decl_string, lang_print_error): Constify a char*.
14925         (lang_init): Remove redundant extern prototype.
14926
14927         * mangle.c (emit_unicode_mangled_name): Constify a char*.
14928
14929         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
14930         Add static prototypes.
14931         (get_type_from_signature): Constify a char*.
14932
14933         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
14934         Add static prototypes.
14935         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
14936         (verify_jvm_instructions): Constify a char*.
14937
14938         * xref.c (xref_flag_value): Likewise.
14939
14940         * xref.h (xref_flag_value): Likewise.
14941
14942         * zextract.c (makeword, makelong): Add static prototypes.
14943         (makeword, makelong): Constify a uch*.
14944
14945 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14946
14947         * lang.c (java_dummy_print): Constify a char*.
14948         (lang_print_error): Likewise.
14949         (lang_init): Remove redundant prototype for `print_error_function'.
14950         (lang_init_source): Likewise.
14951         (lang_identify): Constify a char*.
14952
14953 1999-08-09  Tom Tromey  <tromey@cygnus.com>
14954
14955         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
14956         (WORDS_TO_LONG): Likewise.
14957         (WORDS_TO_DOUBLE): Likewise.
14958
14959 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14960
14961         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
14962
14963         * expr.c (java_stack_pop, java_array_data_offset,
14964         build_java_throw_out_of_bounds_exception, case_identity,
14965         build_java_check_indexed_type): Add static prototypes.
14966         (linenumber_table, expand_invoke, expand_java_field_op,
14967         build_primtype_type_ref, expand_byte_code): Constify a char*.
14968
14969         * java-tree.h (build_primtype_type_ref, linenumber_table):
14970         Constify a char*.
14971         (java_lang_expand_expr): Add prototype.
14972
14973         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
14974         `java_lang_expand_expr'.
14975
14976         * lex.c (java_lex_error): Constify a char*.
14977         (java_get_unicode, java_read_char, java_allocate_new_line,
14978         java_unget_unicode, java_sneak_unicode): Prototype.
14979
14980         * parse-scan.y (current_class, package_name, method_declarator,
14981         report_class_declaration, yyerror): Constify a char*.
14982
14983         * parse.h (java_report_errors): Prototype.
14984         (yyerror): Constify a char*.
14985
14986         * parse.y (classitf_redefinition_error, check_modifiers,
14987         parse_jdk1_1_error, lookup_package_type,
14988         lookup_package_type_and_set_next, get_printable_method_name,
14989         purify_type_name): Constify a char*.
14990         (build_super_invocation, maybe_generate_finit,
14991         verify_constructor_super, parser_add_interface,
14992         add_superinterfaces, jdep_resolve_class, note_possible_classname,
14993         java_complete_expand_methods, java_expand_finals,
14994         cut_identifier_in_qualified, java_stabilize_reference,
14995         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
14996         merge_string_cste): Prototype.
14997         (single_type_import_declaration, yyerror,
14998         variable_redefinition_error, build_array_from_name,
14999         build_unresolved_array_type, check_class_interface_creation,
15000         resolve_class, complete_class_report_errors,
15001         note_possible_classname, read_import_dir,
15002         find_in_imports_on_demand, resolve_package, fix_constructors,
15003         check_deprecation, lookup_method_invoke,
15004         maybe_build_primttype_type_ref, array_constructor_check_entry):
15005         Constify a char*.
15006         (java_complete_expand_methods, java_expand_finals): Make static.
15007         (convert_narrow): Remove static prototype.
15008
15009 1999-08-03  J"orn Rennecke <amylaar@cygnus.co.uk>
15010
15011         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
15012
15013 1999-08-02  Richard Henderson  <rth@cygnus.com>
15014
15015         * decl.c: Include defaults.h instead of expr.h.
15016         * parse.y: Likewise.
15017
15018 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
15019
15020         * java/decl.c (start_java_method): Change all uses of
15021         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
15022         Ensure expr.h is included.
15023         * java/expr.c (pop_arguments): Ditto.
15024         * java/parse.y (expand_start_java_method): Ditto.
15025
15026 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15027
15028         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
15029
15030 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
15031
15032         * decl.c: Include "function.h".
15033         * except.c: Likewise.
15034         * parse.y: Likewise.
15035         * Makefile.in: Update dependencies.
15036
15037 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15038
15039         * expr.c (build_java_soft_divmod): Provide a default case in switch.
15040         (java_lang_expand_expr): Mark parameters `target', `tmode' and
15041         `modifier' with ATTRIBUTE_UNUSED.
15042
15043         * gjavah.c (process_file): Add braces around ambiguous `else'.
15044
15045         * jcf-dump.c (print_access_flags, localvar_free): Change return
15046         type to void.
15047
15048         * parse.y (java_complete_expand_method): Initialize variable
15049         `exception_copy'.
15050         (resolve_qualified_expression_name): Likewise for `field_decl'.
15051         (patch_method_invocation): Likewise for `class_to_search'.
15052         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
15053         (patch_assignment): Likewise for `lhs_type'.
15054
15055         * verify.c (verify_jvm_instructions): Remove unused variable
15056         `caller'.
15057
15058 1999-07-25  Richard Henderson  <rth@cygnus.com>
15059
15060         * decl.c (va_list_type_node): New.
15061
15062 1999-07-25  Anthony Green  <green@cygnus.com>
15063
15064         * gjavah.c (print_stub): New function.
15065         (METHOD_IS_NATIVE): New macro.
15066         (print_mangled_classname): Make static.
15067         (HANDLE_END_FIELD): Don't emit fields during stub generation.
15068         (process_file): Perform stub generation.
15069         (HANDLE_METHOD): Don't emit class decls during stub
15070         generation.
15071         (HANDLE_END_METHOD): Take into account stub generation.
15072         (print_method_info): Handle stub generation.
15073         (print_stub): New function.
15074         (print_cxx_classname): Make signature consistant with others.
15075         (help): Describe -stubs option.
15076         (main): Create stub file.
15077         (version): Use version.c.
15078         (print_full_cxx_name): New function.
15079         (print_c_decl): Use print_full_cxx_name.
15080
15081 1999-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15082
15083         * check-init.c (check_init): Handle MAX_EXPR.
15084
15085 1999-07-15  Andrew Haley  <aph@cygnus.com>
15086
15087         * lang.c (flag_use_divide_subroutine): New variable.
15088         * typeck.c: (convert_ieee_real_to_integer): Bounds check
15089         fp-to-integer conversion.
15090         (convert): Call convert_ieee_real_to_integer when flag_fast_math
15091         is not set.
15092
15093         * expr.c (build_java_soft_divmod): New function.
15094         (build_java_binop): Call build_java_soft_divmod if
15095         flag_use_divide_subroutine is set.
15096         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
15097         soft_lrem_node: new builtin functions.
15098         (init_decl_processing) Initialize the new builtins.
15099         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
15100         soft_lrem_node: new builtin functions.
15101         (build_java_soft_divmod): New function.
15102         * parse.y: Call build_java_soft_divmod if
15103         flag_use_divide_subroutine is set.
15104         * parse.c: Rebuilt.
15105
15106         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
15107         a --specs= arg) even if not linking.
15108         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
15109         -fuse-divide-subroutine
15110
15111 1999-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15112
15113         * parse.y (resolve_and_layout): Check methods only once.
15114         (resolve_qualified_expression_name): Verify thrown exceptions
15115         compatibility.
15116         (check_thrown_exceptions): Reject exceptions thrown in
15117         initializer. Error message tuned.
15118
15119 1999-07-14  Andrew Haley  <aph@cygnus.com>
15120
15121         * expr.c (expand_expr): Do not return the last statement in a
15122         block as the block's value.
15123
15124 1999-07-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15125
15126         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
15127         CALL_EXPR, to avoid order of evaluation changes.
15128
15129 1999-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15130
15131         * parse.y (qualify_ambiguous_name): Do not use
15132         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
15133
15134 1999-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15135
15136         * check-init.c (check_init): Handle MAX_EXPR.
15137         * expr.c (force_evaluation_order): Force method call arguments to
15138         be evaluated in left-to-right order.
15139         * parse.y (qualify_ambiguous_name): Loop again to qualify
15140         NEW_ARRAY_EXPR properly.
15141
15142 1999-06-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15143
15144         * parse.y (patch_invoke): Resolve unresolved invoked method
15145         returned type.
15146         (qualify_ambiguous_name): STRING_CST to qualify expression for
15147         type name resolution.
15148
15149 1999-06-24  Andrew Haley  <aph@cygnus.com>
15150
15151         * class.c (finish_class): Whenever a deferred method is
15152         output, rescan the list of methods to see if a new candidate for
15153         output can be found.
15154
15155 1999-06-28  Tom Tromey  <tromey@cygnus.com>
15156
15157         * jvspec.c (lang_specific_driver): Recognize --help.
15158
15159 1999-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15160
15161         * parse.y (resolve_package): Fixed bogus return statement.
15162         (patch_method_invocation): Resolve method invocation beginning with
15163         a package name qualifier.
15164
15165 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15166
15167         * Make-lang.in (java.stage1): Depend on stage1-start.
15168         (java.stage2): Likewise for stage2-start.
15169         (java.stage3): Likewise for stage3-start.
15170         (java.stage4): Likewise for stage4-start.
15171
15172 1999-06-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15173
15174         * parse.y (java_complete_lhs): When doing cross referencing, don't
15175         try to keep file location on a WFL expanded as a CALL_EXPR.
15176
15177 1999-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15178
15179         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
15180         compiling to class file a void method with an empty method body.
15181         As a side effect, the bytecode backend will generate the
15182         appropriate `return' instruction.
15183
15184 1999-06-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15185
15186         * parse.y (lookup_package_type_and_set_next): New function prototype.
15187         (resolve_package): Search current and imported packages.
15188         (lookup_package_type_and_set_next): New function.
15189
15190 1999-06-22  Andrew Haley  <aph@cygnus.com>
15191
15192         * verify.c (verify_jvm_instructions): Check for pending blocks
15193         before invalid PC test and opcode switch, not after.
15194
15195 1999-06-21  Andrew Haley  <aph@cygnus.com>
15196
15197         * except.c (find_handler_in_range): The upper limit for exception
15198         ranges is exclusive, not inclusive: (start <= pc < end).
15199         (link_handler): find child pointer which points to outer by
15200         searching sibling list: previous code incorrectly assumed that
15201         outer->outer->first_child must point to outer.
15202         * verify.c (verify_jvm_instructions): FIXME added to code for
15203         `athrow'.
15204         (verify_jvm_instructions): Do not assume that the last block
15205         processed in a subroutine is a block which ends with a `ret'
15206         instruction.  With some control flows it is possible that the last
15207         block ends with an `athrow'.
15208
15209 1999-06-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15210
15211         * parse.y (qualify_ambiguous_name): Reorganized the post
15212         evaluation of non WFL leading expression nodes.
15213
15214 1999-06-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15215
15216         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
15217         CONVERT_EXPR.
15218
15219 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15220
15221         * parse.y (qualify_ambiguous_name): Handle qualified expression
15222         beginning with a STRING_CST.
15223
15224 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15225
15226         * parse.y (register_fields): Set DECL_INITIAL on both
15227         pre-initialized static and public fields.
15228         (resolve_field_access): Static field access expressions to always
15229         use pointer types.
15230         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
15231         qualification. CONVERT_EXPR to be resolved as an expression name.
15232         (java_complete_lhs): Identify and access qualified final
15233         initialized field in switch statement case expression.
15234         (fold_constant_for_init): Pre-initialized field decl constant to
15235         be folded.
15236
15237 1999-06-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15238
15239         * parse.y (note_possible_classname): Mark returned node with
15240         QUALIFIED_P only if the original class name contained a '/'.
15241
15242 1999-06-05  Anthony Green  <green@cygnus.com>
15243
15244         * Make-lang.in (gcjh): More parallel build fixes.
15245
15246 1999-06-03  Mike Stump  <mrs@wrs.com>
15247
15248         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
15249
15250 1999-06-02  Anthony Green  <green@cygnus.com>
15251
15252         * except.c (link_handler): Chain exception handlers in order.
15253
15254 1999-06-02  Anthony Green  <green@cygnus.com>
15255
15256         * expr.c (expand_byte_code): Fill unreachable bytecode regions
15257         with nops and process as usual in order to always set correct EH
15258         ranges.  Emit detailed warnings about unreachable bytecodes.
15259
15260 1999-06-02  Anthony Green  <green@cygnus.com>
15261
15262         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
15263         constant.
15264
15265 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15266
15267         * parse.y (lookup_field_wrapper): Unified returned value to NULL
15268           or the searched field decl.
15269
15270 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15271
15272         * parse.y (fold_constant_for_init): Convert numerical constant
15273         values to the type of the assigned field.
15274
15275 1999-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15276
15277         * expr.c (lookup_field): Relaxed the test on class loading error
15278         detection.
15279         * parse.y (fold_constant_for_init): Enabeled old code.
15280
15281 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15282
15283         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
15284         decide the validity of the cast of a java.lang.Cloneable reference
15285         to an array.
15286         (patch_conditional_expr): Fixed first argument passed to
15287         binary_numeric_promotion.
15288
15289 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15290
15291         * parse.y (qualify_ambiguous_name): Take into account that a
15292         CONVERT_EXPR might specify a type as a WFL.
15293
15294 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15295
15296         * parse.y (patch_assignment): Save the rhs before using it as an
15297         argument to _Jv_CheckArrayStore.
15298
15299 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15300
15301         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
15302
15303 1999-05-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15304
15305         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
15306         floating point literal only when the exponent indicator has been
15307         parsed.
15308
15309 1999-05-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15310
15311         * parse.y (formal_parameter:): Construct argument tree list
15312         element even if a yet unsupported final parameter was encountered.
15313
15314 1999-05-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15315
15316         * parse.y (finish_method_declaration): Issue errors for native or
15317         abstract methods declared with a method body, as well as for non
15318         native or non abstract methods with no method body.
15319
15320 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15321
15322         * class.c (build_utf8_ref): Initialize variable `field'.
15323
15324         * decl.c (init_decl_processing): Initialize variable `field'.
15325
15326         * expr.c (build_known_method_ref): Mark parameters `method_type',
15327         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
15328         (process_jvm_instruction): Likewise for parameter `length'.
15329
15330         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
15331         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
15332         ATTRIBUTE_UNUSED.
15333
15334         * parse.y (maybe_generate_clinit): Remove unused variable
15335         `has_non_primitive_fields'.
15336         (find_in_imports_on_demand): Initialize variables `node_to_use'
15337         and `cl'.
15338         (patch_binop): Likewise for variable `prom_type'.
15339         (patch_unaryop): Likewise for variable `prom_type'.
15340
15341         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
15342
15343         * xref.c (xref_table): Add missing initializer.
15344
15345 1999-05-14  Tom Tromey  <tromey@cygnus.com>
15346
15347         * java-except.h (struct eh_range): Removed unused `next' member.
15348         * verify.c (verify_jvm_instructions): Call check_nested_ranges
15349         after adding all exception handlers.  Sort exception ranges in
15350         order of start PC.
15351         (struct pc_index): New structure.
15352         (start_pc_cmp): New function.
15353         * except.c (add_handler): Return `void'.  Don't call link_handler;
15354         instead construct an ordinary linked list and do range
15355         coalescing.
15356         (check_nested_ranges): New function.
15357         (link_handler): Changed interface to allow merging of eh_ranges.
15358         Split overlapping ranges.  Return `void'.
15359
15360 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15361
15362         * parse.y (constructor_block_end:): New rule, tagged <node>.
15363         (constructor_body:): Use `constructor_block_end' instead of
15364         `block_end'.
15365
15366 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15367
15368         * parse.y (statement_nsi:): Pop `for' statement block.
15369         (java_complete_lhs): Labeled blocks containing no statement are
15370         marked as completing normally.
15371
15372 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15373
15374         * xref.c (xref_set_current_fp): New function, defined.
15375         * xref.h (xref_set_current_fp): New function, prototyped.
15376
15377 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15378
15379         * check-init.c (check_init): Take into account that
15380         LABELED_BLOCK_STMT can be empty.
15381
15382 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15383
15384         * parse.y (java_check_regular_methods): Warning check on not
15385         overriding methods with default access in other packages does not
15386         apply to `<clinit>'.
15387         (java_complete_lhs): If block body is an empty_stmt_node, replace
15388         it by NULL_TREE. This prevents gcc from generating an irrelevant
15389         warning.
15390
15391 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15392
15393         * check-init.c (check_init): Removed code accepting to see things
15394         falling through default:, when doing xrefs.
15395         * java-tree.h (do_not_fold): New global variable, declared.
15396         * parse.y (do_not_fold): New global variable, defined.
15397         (java_complete_expand_method): Set `do_not_fold' to the value of
15398         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
15399         and reinstall them after them have been purged; do not check for
15400         initializations; do not issue missing return errors.
15401         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
15402         when doing xrefs.
15403         (patch_binop): Skip the fold part when doing xrefs.
15404         (build_string_concatenation): Skip the concatenation part when
15405         doing xrefs.
15406         (patch_synchronized_statement): Do not generate a try-finally when
15407         doing xrefs.
15408         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
15409         and keep the location where the throw was seen.
15410         * typeck.c (convert): When `do_not_fold' is set, do not attempt
15411         any treatment on the converted node an simply return a NOP_EXPR of
15412         the targeted type.
15413         * xref.c (xref_get_data): New function, defined.
15414         * xref.h (xref_get_data): New function, declared.
15415         (XREF_GET_DATA): Use xref_get_data.
15416
15417 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15418
15419         * gjavah.c (print_include): Cast the result of `strlen' to int
15420         when comparing against a signed value.
15421         (add_namelet): Likewise.
15422
15423 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15424
15425         * expr.c (expand_invoke): Mark parameter `nargs' with
15426         ATTRIBUTE_UNUSED.
15427         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
15428
15429         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
15430         ATTRIBUTE_UNUSED.
15431
15432         * jcf-reader.c (get_attribute): Cast a value to long
15433         when comparing against a signed expression.  Likewise.
15434
15435         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
15436         HOST_BITS_PER_CHAR.
15437
15438 1999-05-11  Andrew Haley  <aph@cygnus.com>
15439
15440         * parse.y (source_end_java_method): If the current method contains
15441         any exception handlers, force asynchronous_exceptions: this is
15442         necessary because signal handlers in libjava may throw exceptions.
15443         * decl.c (end_java_method): Ditto.
15444
15445 1999-05-11  Tom Tromey  <tromey@cygnus.com>
15446
15447         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
15448         flags.
15449         * jvspec.c (THREAD_NAME): Removed.
15450         (GC_NAME): Likewise.
15451         (MATHLIB): Likewise.
15452         (WITHLIBC): Likewise.
15453         (GCLIB): Likewise.
15454         (THREADLIB): Likewise.
15455         (MATH_LIBRARY): Likewise.
15456         (lang_specific_driver): Don't add `-l' options to command line.
15457         Instead, add a single --specs option.  Recognize `-L' options and
15458         use them to search for spec file.
15459         (find_spec_file): New function.
15460         (SPEC_FILE): New define.
15461
15462 1999-05-11  Dave Brolley  <brolley@cygnus.com>
15463
15464         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
15465         cpplib-enabled build.
15466
15467 1999-05-05  Per Bothner  <bothner@cygnus.com>
15468
15469         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
15470         temporarily zero it while calling rest_of_decl_compilation.
15471
15472         * java-tree.h (string_ptr_type_node):  Add declaration.
15473         * decl.c:  Define and initialize string_ptr_type_node.
15474         * parse.y (patch_string_cst):  Use string_ptr_type_node.
15475
15476         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
15477         * parse.y (for_statement):  Now unconditionally exit_block.
15478         (finish_labeled_statement):  No longer exit_block if for-loop.
15479         (patch_loop_statement):  Check harder if the loop is already labeled.
15480
15481         * parse.y (patch_initialized_static_field):  Removed function.
15482         (maybe_generate_clinit):  Removed special handling for interfaces.
15483         (java_complete_expand_methods):  Do a preliminary java_complete_tree
15484         on <clinit> to determine if it can be removed.
15485         (java_complete_expand_method):  Remove special handling for <clinit>.
15486         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
15487         optimize if we get back empty_stmt_node.
15488         For MODIFY_EXPR, re-do checking of static initializers.
15489         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
15490         For VAR_DECL, pass correct context.
15491
15492         * verify.c (verify_jvm_instructions):  Better error messages.
15493
15494 1999-05-03  Tom Tromey  <tromey@cygnus.com>
15495
15496         * parse-scan.y (interface_declaration): Call
15497         report_class_declaration for interfaces.
15498
15499 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
15500
15501         * Makefile.in: Remove -v from bison command lines.
15502
15503 1999-04-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15504
15505         * check-init.c (check_init): Exclude a case of error when doing
15506         xrefs.
15507         * class.c (layout_class_method): Don't generate the error message
15508         twice when compiling from source.
15509         * lang-options.h: Added `-Wredundant-modifers' and
15510         `-Wunusupported-jdk11' flags and help text.
15511         * lang.c (lang_decode_option): Added support for
15512         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
15513         flag_static_local_jdk11 and flag_redundant set accordingly.
15514         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
15515         * parse.h (EXPR_WFL_ADD_COL): New macro.
15516         (DECL_END_SOURCE_LINE): Likewise.
15517         (DECL_INHERITED_SOURCE_LINE): Likewise.
15518         * parse.y (static_ref_err): New function, prototyped.
15519         (CCB_TK): Now tagged <operator>.
15520         (class_body:): Remember the location of the closing '}' of a class
15521         definition when doing xrefs.
15522         (block:): Likewise.
15523         (block_end:): Likewise.
15524         (create_class): Remember the location of the inherited class
15525         identifier when doing xrefs.
15526         (register_fields): Added test on first operand of `init' before
15527         testing it TREE_CODE.
15528         (method_header): Store the location of the class identifier in the
15529         class decl when doing xrefs.
15530         (finish_method_declaration): Don't combine first/last method line
15531         when doing xref.
15532         (java_check_regular_methods): Warning check on not overriding
15533         methods with default access on other packages move before check on
15534         static methods. Initialization of `aflags' also moved up.
15535         (resolve_expression_name): Call static_ref_err to report the error.
15536         (static_ref_err): New function, implemented.
15537         (resolve_field_access): Returned simplified static field access
15538         when doing xrefs.
15539         (resolve_qualified_expression_name): Check for illegal use of
15540         static fields in a non static context. Call static_ref_err to
15541         report error in various places.
15542         (java_complete_tree): Do not fold initialized static fields when
15543         doing xrefs.
15544         (java_complete_lhs): Likewise.
15545
15546 1999-04-29  Anthony Green  <green@cygnus.com>
15547
15548         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
15549         create internal labels.
15550         (lookup_label): Ditto.
15551
15552 1999-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15553
15554         * class.c (layout_class_method): Generate <clinit>'s rtl for
15555         interfaces.
15556         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
15557         for interfaces' <clinit>.
15558         * expr.c (lookup_field): Search for fields in interfaces.
15559         (expand_invoke): Fixed indentation.
15560         (expand_java_field_op): Likewise. Use IS_CLINIT.
15561         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
15562         (IS_CLINIT): New macro.
15563         * parse.y (type_declaration:): Call maybe_generate_clinit after an
15564         interface was parsed.
15565         (maybe_generate_clinit): Don't generate if the current class is an
15566         interface with only fields of primitive types.
15567         (reset_method_name): Use IS_CLINIT.
15568         (java_complete_expand_method): Expand <clinit> when it exists for
15569         interfaces. Use IS_CLINIT.
15570         (resolve_expression_name): Use DECL_CONTEXT instead of
15571         current_class to build static field references.
15572         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
15573         ARRAY_REF when doing xreferencing.
15574         (check_final_assignment): Fixed typo in leading comment. Use
15575         IS_CLINIT.
15576         (patch_array_ref): Don't fully expand array references when
15577         xreferencing.
15578         (patch_return): Use IS_CLINIT.
15579         (patch_throw_statement): Likewise.
15580
15581 1999-04-22  Tom Tromey  <tromey@cygnus.com>
15582
15583         * Make-lang.in (JAVA_SRCS): Added check-init.c.
15584
15585 1999-04-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15586
15587         * decl.c (predef_filenames, predef_filenames_size): New globals
15588         (init_decl_processing): predef_filenames and predef_filenames_size
15589         initialized.
15590         * java-tree.h (predef_filenames, predef_filenames_size): Declared
15591         extern.
15592         * jcf-parse.c (predefined_filename_p): New function.
15593         (yyparse): Check that files on the command line are specified only
15594         once and issue a warning otherwise.
15595         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
15596         * parse.y (source_end_java_method): Nullify NOP method bodies, to
15597         avoid a gcc warning with -W -Wall turned on.
15598         (java_expand_classes): Abort if errors were encountered.
15599         (java_complete_lhs): If the cross reference flag is set, wrap
15600         field DECL node around a WFL when resolving expression name.
15601
15602 1999-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15603
15604         * lang.c (lang_decode_option): Fixed returned value when parsing
15605         `-fxref=...' and `-Wall'.
15606         * parse.y (source_end_java_method): Do not generate code when
15607         flag_emit_xref is set.
15608         (resolve_expression_name): Do not build static field access when
15609         flag_emit_xref is set.
15610         (resolve_field_access): No special treatment on `length' when
15611         flag_emit_xref is set. Do not build qualified static field access
15612         when flag_emit_xref is set.
15613         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
15614         when flag_emit_xref is set.
15615         (patch_assignment): Do not generate array store runtime check when
15616         flag_emit_xref is set.
15617         * xref.c (xref_flag_value): Fixed function declaration
15618         indentation.
15619         (xset_set_data): New function.
15620         * xref.h (xref_set_data): Added prototype for new function.
15621         (typedef struct xref_flag_table): New field data.
15622         (XREF_GET_DATA): New macro.
15623
15624 1999-04-19  Tom Tromey  <tromey@cygnus.com>
15625
15626         * xref.h (enum): Removed trailing comma.
15627
15628         * parse.y (resolve_qualified_expression_name): Added missing
15629         `break'.
15630
15631 1999-04-15  Anthony Green  <green@cygnus.com>
15632
15633         * gjavah.c: New prototypes for java_float_finite and
15634         java_double_finite.
15635
15636 1999-04-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15637
15638         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
15639         references.
15640
15641 1999-04-06  Jeffrey A Law  (law@cygnus.com)
15642
15643         * Makefile.in (TREE_H): Add tree-check.h.
15644         (RTL_H): Add genrtl.h.
15645
15646 1999-04-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15647
15648         * parse.y (patch_assignment): Added ArrayStoreException runtime
15649         check.
15650
15651 1999-04-06  Per Bothner  <bothner@cygnus.com>
15652
15653         * expr.c (pop_type_0):  New function.
15654         (pop_type):  Use pop_type_0.
15655         * java-tree.h (pop_type_0):  New declaration.
15656         * verify.c (verify_jvm_instructions):  Check return instructions.
15657
15658         * parse.y (patch_binop):  Don't fold if non-constant and emiting
15659         class files.
15660
15661 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15662
15663         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
15664
15665         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
15666         (main_jcf): Don't define.
15667         (process_file): Don't set `main_jcf'.
15668
15669         * java-tree.h (main_jcf): Don't declare.
15670
15671         * jcf-parse.c (main_jcf): Add static definition.
15672
15673         * lang.c (main_jcf): Don't define.
15674
15675 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15676
15677         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
15678
15679         * decl.c (copy_lang_decl): Likewise for `bcopy'.
15680
15681         * jcf-depend.c: Include "config.h", not <config.h>.
15682
15683         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
15684         `bcopy' to PTR.
15685
15686         * jcf-path.c: Include "config.h", not <config.h>.
15687
15688         * lex.c: Don't include various system header files.
15689         (java_init_lex): Cast the argument of `bzero' to PTR
15690
15691         * parse-scan.y (java_push_parser_context): Likewise.
15692
15693         * parse.y (java_push_parser_context): Likewise.
15694         (patch_bc_statement): Match format specifier to variable argument.
15695
15696         * xref.c: Don't include <stdio.h>.
15697
15698 1999-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15699
15700         * parse.y (struct parser_ctxt *ctxp): Now global.
15701         (declare_local_variables): Use WFL compound value for the
15702         declaration source line value, when doing cross-referencing.
15703
15704 1999-03-31  Tom Tromey  <tromey@cygnus.com>
15705
15706         * gjavah.c (print_field_info): Allow constants of other types.
15707         (print_include): Generate include when new name is proper prefix
15708         of already printed name.
15709         (add_namelet): Likewise.
15710         (cxx_keyword_subst): New function.
15711         (print_method_info): Use it.
15712         (print_field_name): New function.
15713         (get_field_name): New function.
15714         (print_field_info): Use get_field_name and print_field_name.
15715
15716 1999-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15717
15718         * Makefile.in (keyword.h): Generate using gperf language 'C', not
15719         'KR-C', so gperf uses the `const' keyword on strings.
15720
15721         * keyword.gperf (java_keyword): Const-ify a char*.
15722
15723 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15724
15725         * parse.y (patch_bc_statement): Fixed identation and a bogus
15726         `printf' format.
15727
15728 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15729
15730         * parse.y (patch_assignment): Allow static variables in other
15731         classes to be assigned.
15732
15733 1999-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15734
15735         * class.c (maybe_add_interface): Remove unused variable
15736         `interface_binfo'.
15737         (make_class_data): Use = for assignment, not ==.  Likewise.
15738         (emit_register_classes): Remove unused variable `decl'.
15739
15740         * lex.c: Fix comment so as not to contain an embedded `/*'.
15741
15742         * verify.c (verify_jvm_instructions): Remove unused variable
15743         `self_type'.
15744
15745 1999-03-27  Per Bothner  <bothner@cygnus.com>
15746
15747         * parse.y (complete_loop_body):  Rename to finish_loop_body.
15748         (complete_labeled_statement):  Rename to finish_labeled_statement.
15749         (complete_for_loop):  Rename to finish_for_loop.
15750         (complete_method_declaration):  Rename to finish_method_declaration.
15751
15752         * java-tree.h (continue_identifier_node):  New global node.
15753         * decl.c:  Define and initialize continue_identifier_node.
15754         * parse.y (generate_labeled_block):  Remove - no longer needed.
15755         (build_loop_body):  Use continue_identifier_node for continue block.
15756         (finish_labeled_statement):  Also do pop_labeled_block actions.
15757         (java_complete_lhs):  POP_LOOP even if error.
15758         (build_labeled_block):  Special handling for continue_identifier_node.
15759         (patch_loop_statement):  Re-organize.
15760         (patch_bc_statement):  Re-write.
15761
15762 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15763
15764         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
15765         using a WFL compound value.
15766         * parse.y (xref.h): Include.
15767         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
15768         WFL compound value.
15769         (register_fields): Set WFL compound value to lineno if doing
15770         xrefs.
15771         (java_complete_expand_method): Call expand_xref if flag_emit_xref
15772         is set.
15773         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
15774         * xref.h (expand_xref): Prototype renamed from xref_generate.
15775
15776 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15777
15778         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
15779         (GET_CURRENT_BLOCK): New macro.
15780         * parse.y (current_static_block): New global variable.
15781         (method_body:): Define action.
15782         (complete_method_declaration): Set current_function_decl to NULL
15783         when work on the current method is done.
15784         (declare_local_variables): Use GET_CURRENT_BLOCK.
15785         (java_method_add_stmt): Likewise.
15786         (java_complete_expand_method): Disable the use of `this' when
15787         expanding <clinit>.
15788         (enter_a_block): If no current method exist, use
15789         current_static_block to link static initializer blocks.
15790         (exit_block): Rewritten to use current_static_block when no current
15791         method decl exists.
15792         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
15793         (patch_return): Forbid the use of `return' in static initializers.
15794         (patch_throw_statement): Fixed indentation. Issue specific error
15795         for uncaught thrown checked exception in static initializer
15796         blocks. Removed FIXME.
15797
15798 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
15799
15800         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
15801         Link gcj from gcc.o.
15802
15803 1999-03-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15804
15805         * parse.y (find_applicable_accessible_methods_list): When dealing
15806         with interface: ensure that a given interface or java.lang.Object
15807         are searched only once.
15808
15809 1999-03-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15810
15811         * gjavah.c (print_c_decl): Remove unused argument `flags'.
15812
15813         * jcf-dump.c (print_access_flags): Add braces around if-else.
15814
15815         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
15816         COMBINE_INPUTS.
15817
15818         * lex.c (build_wfl_node): Add static prototype.
15819
15820         * lex.h (build_wfl_node): Remove static prototype.
15821
15822         * parse.y: Include lex.c early enough to declare everything needed.
15823         Ensure calls to `build_wfl_node' pass the proper arguments.
15824         (create_class): Remove unused variable `super_decl'.
15825         (get_printable_method_name): Initialize variable `name'.
15826
15827 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15828
15829         * Changelog: Fixed 1999-03-22 typos.
15830         * lang.c (lang_decode_option): Fixed typo in error string in the
15831         XARG section.
15832
15833 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15834
15835         * Makefile.in (JAVA_OBJS): Added entry xref.o.
15836         (xref.o): New rule.
15837         * java-tree.h (flag_emit_xref): Declared extern.
15838         * lang.c (xref.h): Included.
15839         (flag_emit_xref): New global variable.
15840         (lang_decode_option): Added support for -fxref.
15841         * xref.c: Created.
15842         * xref.h: Likewise.
15843
15844 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
15845
15846         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
15847         linked with.
15848
15849 1999-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15850
15851         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
15852         $(srcdir)/../system.h and $(JAVA_TREE_H).
15853         (jcf-io.o): Depend on $(JAVA_TREE_H).
15854         (mangle.o): Likewise.
15855
15856         * check-init.c (check_cond_init): Add static prototype.
15857
15858         * class.c (build_java_method_type, hashUtf8String,
15859         make_field_value, get_dispatch_vector, get_dispatch_table,
15860         append_gpp_mangled_type, mangle_static_field): Likewise.
15861         (strLengthUtf8): Hide unused definition.
15862         (hashUtf8String): Const-ify.
15863         (make_field_value): Un-ANSI-fy.
15864
15865         * constants.c: Move inclusion of jcf.h above java-tree.h.
15866         (set_constant_entry, find_class_or_string_constant,
15867         find_name_and_type_constant, get_tag_node,
15868         build_constant_data_ref): Add static prototype.
15869
15870         * decl.c (push_jvm_slot, builtin_function,
15871         lookup_name_current_level): Likewise.
15872         (builtin_function): Const-ify.
15873
15874         * except.c (expand_start_java_handler, expand_end_java_handler):
15875         Add static prototype.
15876
15877         * expr.c (flush_quick_stack, push_value, pop_value,
15878         java_stack_swap, java_stack_dup, build_java_athrow,
15879         build_java_jsr, build_java_ret, expand_java_multianewarray,
15880         expand_java_arraystore, expand_java_arrayload,
15881         expand_java_array_length, build_java_monitor, expand_java_pushc,
15882         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
15883         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
15884         expand_compare, expand_test, expand_cond, expand_java_goto,
15885         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
15886         expand_java_field_op, java_push_constant_from_pool): Likewise.
15887
15888         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
15889         (build_java_arraynull_check): Mark parameters `node' and `type'
15890         with ATTRIBUTE_UNUSED.
15891         (note_label): Likewise for parameter `current_pc'.
15892         (expand_java_call, expand_java_ret): Hide unused definition.
15893
15894         * java-tree.h (make_class, build_constants_constructor,
15895         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
15896         init_outgoing_cpool, register_class, emit_register_classes,
15897         java_layout_seen_class_methods): Prototype.
15898         (unicode_mangling_length): Const-ify.
15899         (append_gpp_mangled_name, append_gpp_mangled_classtype,
15900         emit_unicode_mangled_name, format_int, format_uint,
15901         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
15902         jcf_print_utf8_replace, open_class): Prototype.
15903
15904         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
15905         <stdio.h>.  Include tree.h/java-tree.h.
15906         (utf8_equal_string usage, process_class): Add static prototype.
15907         (open_class): Don't prototype this here.
15908         (utf8_equal_string): Match arguments to format specifiers.
15909         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
15910         TABLE_SWITCH, disassemble_method): Likewise.
15911
15912         * jcf-io.c: Include tree.h/java-tree.h.
15913         (open_class, find_classfile, jcf_print_utf8,
15914         jcf_print_utf8_replace): Const-ify.
15915
15916         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
15917         parse_class_file): Add static prototype.
15918         (find_in_current_zip): Match definition to existing static
15919         prototype.
15920
15921         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
15922         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
15923         finish_jcf_block, define_jcf_label, get_jcf_label_here,
15924         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
15925         write_chunks, adjust_typed_op, generate_bytecode_conditional,
15926         generate_bytecode_return, perform_relocations, init_jcf_state,
15927         init_jcf_method, release_jcf_state, generate_classfile):
15928         Add static prototype.
15929         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
15930         (make_class_file_name): Const-ify.
15931
15932         * jcf.h (find_classfile): Const-ify.
15933
15934         * jv-scan.c (reset_report): Remove prototype.
15935
15936         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
15937         (error): Rewrite to allow varargs.
15938
15939         * lang.c (lang_f_options): Const-ify.
15940
15941         * lex.c (java_parse_escape_sequence): Add static prototype.
15942         (java_allocate_new_line): Match definition to existing static
15943         prototype.
15944
15945         * mangle.c Include tree.h/java-tree.h.
15946         (unicode_mangling_length, emit_unicode_mangled_name,
15947         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
15948
15949         * parse.h (jdep_code): Remove trailing comma in enumeration.
15950         (java_get_line_col): Move prototype outside of !JC1_LITE test.
15951         (reset_report): Add prototype.
15952
15953         * verify.c (push_pending_label, merge_types): Add static
15954         prototypes.
15955
15956         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
15957
15958 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15959
15960         * parse.y (find_applicable_accessible_methods_list): Extend the
15961         search to superinterfaces when relevant.
15962         (search_applicable_methods_list): New function.
15963
15964 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15965
15966         * class.c (unmangle_classname): Implemented stricter testing
15967         before setting the QUALIFIED_P flag on an identifier.
15968
15969 1999-03-16  Per Bothner  <bothner@cygnus.com>
15970
15971         * parse.y (java_complete_lhs):  Call force_evaluation_order
15972         after patch_newarray.
15973         (patch_binop):  Don't call fold if there are side effects.
15974
15975 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15976
15977         * parse.y (java_stabilize_reference): Use save_expr instead of
15978         building a SAVE_EXPR node.
15979         (java_complete_lhs): Patch the resulting string of the `+='
15980         operator (if necessary) and complete the RHS after having built
15981         the cast.
15982
15983 1999-03-15  Per Bothner  <bothner@cygnus.com>
15984
15985         * class.c (make_class):  Don't set CLASS_P here (because
15986         this function is also called by build_java_array_type).
15987         (push_class):  Set CLASS_P here instead.
15988         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
15989
15990         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
15991         context.  If the context is class, perfer "super" over "synchronized".
15992         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
15993
15994         * parse.y (create_class):  Don't call parser_check_super here;
15995         it is not robust.  Always wait until later.
15996
15997         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
15998         match what JDK 1.2 does), but don't set ACC_PUBLIC.
15999
16000 1999-03-13  Per Bothner  <bothner@cygnus.com>
16001
16002         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
16003         * lex.h (UNGETC):  Change misleading macro.
16004
16005 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16006
16007         * parse.y (java_stabilize_reference): Return NODE when patching a
16008         COMPOUND_EXPR.
16009         (java_complete_lhs): Put parenthesis around truth values.
16010
16011 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16012
16013         * class.c (layout_class_method): Don't make rtl for interface
16014         methods.
16015         * parse.h (GET_TYPE_NAME): New macro.
16016         * parse.y (if_then_statement:): Fixed indentation.
16017         (if_then_else_statement:): Likewise.
16018         (for_statement:): Fixed spacing.
16019         (try_statement:): Fixed indentation.
16020         (create_interface): Don't force interfaces to be abstract.
16021         (method_header): Abstract methods are OK in interfaces.
16022         (declare_local_variables): Fixed typo in comment.
16023         (java_complete_expand_method): Fixed indentation.
16024         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
16025         non accessible fields.
16026         (java_stabilize_reference): New function.
16027         (java_complete_lhs): Fixed indentation. Use
16028         java_stabilize_reference in compound assignment. Insert the
16029         cast. If not processing `+' fix string constants before processing
16030         binop.
16031
16032 1999-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16033
16034         * constants.c (find_class_or_string_constant): Cast variable `j'
16035         to a `jword' when comparing against one.
16036
16037         * expr.c (java_lang_expand_expr): Remove unused variables
16038         `has_finally_p' and `op0'.
16039
16040         * gjavah.c (print_field_info): Cast a value to jint when comparing
16041         against one.  Likewise for a jlong.
16042         (add_namelet): Likewise cast a `sizeof' to an int when comparing
16043         against a signed quantity.
16044
16045         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
16046         (print_signature): Don't needlessly dereference variable `str'
16047
16048         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
16049         `max_locals' with ATTRIBUTE_UNUSED.
16050         (jcf_parse_class): Likewise for variable `index'.
16051
16052         * parse.h (reverse_jdep_list): Remove static prototype.
16053
16054         * parse.y (build_jump_to_finally): Remove prototype and definition.
16055         (reverse_jdep_list): Add static prototype.
16056
16057         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
16058         `assignment' and `expr_decl'.
16059
16060         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
16061
16062 1999-03-12  Andrew Haley  <aph@cygnus.com>
16063
16064         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
16065         we'll need a directory separator and a null character.
16066
16067 1999-03-10  Per Bothner  <bothner@cygnus.com>
16068
16069         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
16070
16071 Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16072
16073         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
16074         interfaces.
16075
16076 1999-03-05  Per Bothner  <bothner@cygnus.com>
16077
16078         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
16079
16080         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
16081
16082         * class.c (layout_class_method):  A static method in a base class
16083         is never overridden, so treat it like it doesn't exist.
16084         However, do complain about private non-static method overriding
16085         public static method.
16086
16087         * parse.y:  Don't set unused INITIALIZED_P flag.
16088         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
16089
16090         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
16091         (build_array_from_name):  Re-order &index[string] to &string[index].
16092
16093         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
16094         error_mark (it might catch more errors, but it is more likely to lose).
16095
16096 1999-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16097
16098         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
16099         (parse-scan.o): Depend on toplev.h.
16100
16101         * class.c (make_method_value): Add prototype.  Make it static.
16102         Remove unused second argument, caller changed.
16103
16104         * expr.c (java_lang_expand_expr): Remove unused variable
16105         `return_label'.
16106
16107         * java-tree.h: Don't prototype find_in_current_zip.
16108         Add prototypes for verify_constant_pool, start_java_method,
16109         end_java_method, give_name_to_locals, expand_byte_code,
16110         open_in_zip, set_constant_value, find_constant1, find_constant2,
16111         find_utf8_constant, find_string_constant, find_class_constant,
16112         find_fieldref_index, find_methodref_index, write_constant_pool,
16113         count_constant_pool_bytes and encode_newarray_type.
16114
16115         * jcf-dump.c: Remove unused variable `LONG_temp'.
16116
16117         * jcf-parse.c: Include parse.h.
16118         (jcf_parse_source): Remove unused parameter, all callers changed.
16119         (jcf_figure_file_type): Add static prototype.
16120         (find_in_current_zip): Likewise.  Also remove unused parameter,
16121         all callers changed.
16122         (read_class): Initialize variable `saved_pos'.
16123
16124         * jcf-reader.c (jcf_parse_preamble): Mark variables
16125         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
16126
16127         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
16128         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
16129         (java_parse_doc_section): Initialize variable `seen_star'.
16130         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
16131         (java_lex_error): Mark parameters `msg' and `forward' with
16132         ATTRIBUTE_UNUSED.
16133         (java_get_line_col): Mark parameters `filename' and `line' with
16134         ATTRIBUTE_UNUSED.
16135
16136         * parse-scan.y: Include toplev.h.
16137         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
16138
16139         * parse.h: use `struct JCF', not plain `JCF'.
16140         (java_parser_context_save_global, java_expand_classes
16141         java_parser_context_restore_global, java_parse): Add prototypes.
16142
16143         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
16144         `node'.
16145
16146 1999-02-24  Per Bothner  <bothner@deneb.cygnus.com>
16147
16148         *  check-init.c (check_init):  COPYN takes word count, not bit count.
16149
16150 1999-02-26  Per Bothner  <bothner@cygnus.com>
16151
16152         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
16153         explicit build_decl.  (Avoids crash in reload when optimizing.)
16154
16155 1999-02-25  Per Bothner  <bothner@cygnus.com>
16156
16157         * decl.c (complete_start_java_method):  Handle synchronized method
16158         even when compiling from bytecode.
16159
16160 1999-02-26  Tom Tromey  <tromey@cygnus.com>
16161
16162         * gjavah.c (add_class_decl): Only generate `#include' if outer
16163         class is not the name of the class we are processing.  Correctly
16164         append `.h' in #include.
16165         (process_file): Clean up newlines around generated `#include's.
16166         (decode_signature_piece): Correctly handle inner classes.
16167         (struct include): New structure.
16168         (all_includes): New global.
16169         (print_include): New function.
16170         (add_class_decl): Use it.
16171         (process_file): Likewise.
16172         (add_class_decl): Generate include for java-array.h if array
16173         seen.
16174         (process_file): Don't generate java-array.h include.
16175
16176         * gjavah.c (add_namelet): Check for standard package names here.
16177         (add_class_decl): Don't check for standard package names here.
16178
16179 1999-02-25  Tom Tromey  <tromey@cygnus.com>
16180
16181         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
16182         When reading a zip file, only use strncmp if both strings are
16183         bigger than the buffer length.  Initialize `k' when looping
16184         through zip file.
16185
16186 1999-02-24  Tom Tromey  <tromey@cygnus.com>
16187
16188         * gjavah.c (struct namelet): New structure.
16189         (add_namelet): New function.
16190         (print_namelet): New function.
16191         (print_class_decls): Use add_namelet and print_namelet to generate
16192         namespaces and not classes.
16193         (method_printed): New global.
16194         (HANDLE_END_METHOD): Examine method_printed.
16195         (print_method_info): Set method_printed when required.  Print
16196         error if function to be ignored is marked virtual.  Handle $finit$
16197         method.
16198         (METHOD_IS_FINAL): New macro.
16199         (print_field_info): Use it.
16200         (HANDLE_METHOD): Clear method_printed.
16201         (method_pass): New global.
16202         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
16203         (process_file): Do two passes over both fields and methods.
16204         (HANDLE_METHOD): Examine method_pass.
16205         (root): New global.
16206         (add_class_decl): New function.
16207         (print_class_decls): Don't scan over entire constant pool.
16208
16209 1999-02-23  Tom Tromey  <tromey@cygnus.com>
16210
16211         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
16212         disable linking in that case.
16213
16214 1999-02-20  Tom Tromey  <tromey@cygnus.com>
16215
16216         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
16217         not 0x1f.
16218
16219 1999-02-21  Per Bothner  <bothner@cygnus.com>
16220
16221         * decl.c (build_result_decl), java-tree.h:  New method.
16222         (complete_start_java_method):  Handle synchronized methods.
16223         Don't build DECL_RESULT here.  (Ordering dependency problem.)
16224         (start_java_method):  Call build_result_decl here instead  ...
16225         * parse.y (java_complete_expand_method):  ... and here.
16226         (expand_start_java_method): Don't call complete_start_java_method here.
16227         (java_complete_expand_method):  Call it here instead.
16228         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
16229         * java-tree.h:  ... here.
16230
16231         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
16232         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
16233         for ARRAY_REF - it doesn't work when array bounds are checked.
16234         (patch_array_ref):  Handle it here instead.
16235
16236         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
16237
16238 1999-02-19  Per Bothner  <bothner@cygnus.com>
16239
16240         Force left-to-right evaluation of binary operations etc.
16241         * expr.c (force_evaluation_order), java-tree.h:  New function.
16242         * parse.y (java_complete_lhs):  Pass binary operations, procedure
16243         calls, and ARRAY_REFs to force_evaluation_order.
16244         (various):  Set TREE_SIDE_EFFECTS more carefully.
16245
16246         Tolerate random (non-UTF8) encoding in comments without complaining.
16247         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
16248         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
16249
16250         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
16251         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
16252
16253         * parse.y (java_complete_lhs):  Ignore an empty statement in a
16254         COMPOUND_EXPR.  Don't complain about empty statement after return.
16255
16256 1999-02-19  Per Bothner  <bothner@cygnus.com>
16257
16258         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
16259         in TREE_LIST - just chain the POINTER_TYPEs together.
16260         (resolve_class):  If type already resolved, return decl.
16261         After resolving, update TREE_TYPE(class_type), and name (if array).
16262         * parse.h (do_resolve_class), parse.y:  Make non-static.
16263         * class.c (maybe_layout_super_class):  Take this_class argument.
16264         Do do_resolve_class if necessary.
16265         (layout_class, layout_class_methods): Adjust calls appropriately.
16266         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
16267         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
16268         * typeck.c (build_java_array_type):  Don't call layout_class.
16269
16270 1999-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16271
16272         * parse.y (check_pkg_class_access): Allow private class access
16273         within the same package.
16274         (strip_out_static_field_access_decl): New function.
16275         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
16276         operator argument before testing its nature.
16277
16278 1999-02-03  Per Bothner  <bothner@cygnus.com>
16279
16280         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
16281         (TRY_EXPR):  Simplify - it no longer has a finally clause.
16282         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
16283         Simpler handling of TRY_EXPR, which no longer has a finally clause.
16284         * expr.c (java_lang_expand_expr):  Likewise.
16285         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
16286         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
16287         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
16288         (build_try_statement):  Remove finally parameter and handling.
16289         (build_try_finally_statement):  New function.
16290         (patch_try_statement):   No longer need to support finally clause.
16291         (try_statement):  Update grammar action rules.
16292         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
16293         Simpler handling of TRY_EXPR, which no longer has a finally clause.
16294
16295 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
16296
16297         * jcf-parse.c (get_constant): Add braces around computation of 'd'
16298         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
16299
16300 1999-02-17  Andrew Haley  <aph@cygnus.com>
16301
16302         * class.c (build_utf8_ref): Back out broken patch which was
16303         intended to to output signatures using '.' as a separator.
16304
16305         * class.c (make_class_data): Output signatures using '.' as a
16306         separator, rather than '/'.
16307         (mangled_classname): Likewise.
16308         (make_field_value): Likewise.
16309         (make_method_value): Likewise.
16310         * constants.c (alloc_class_constant): Likewise.
16311         * expr.c (build_invokeinterface): Likewise.
16312
16313 1999-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16314
16315         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
16316         of an ancient workaround.
16317
16318 1999-02-10  Jeffrey A Law  (law@cygnus.com)
16319
16320         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
16321         here anymore.
16322
16323 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16324
16325         * lex.c (yylex): Encode \0 as UTF8.
16326
16327 1999-02-10  Tom Tromey  <tromey@cygnus.com>
16328
16329         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
16330         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
16331         (libgcj_zip): Renamed.
16332         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
16333         LIBJAVA_ZIP_FILE.
16334         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
16335
16336         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
16337         (GC_NAME): Renamed -lgc to -lgcjgc.
16338
16339 1999-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16340
16341         * lex.c (java_lang_cloneable): Initialize.
16342         * parse.y (java_lang_cloneable): New static variable.
16343         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
16344         doing one more qualification round.
16345         (valid_ref_assignconv_cast_p): Reject null source or
16346         destination. Allow an array to be cast into java.lang.Cloneable.
16347         (patch_cast): Swapped two first arguments to first call to
16348         valid_ref_assignconv_cast_p.
16349
16350 1999-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16351
16352         * parse.h: DECL_P renamed JDECL_P.
16353         * parse.y: DECL_P replaced by JDECL_P.
16354         (build_array_from_name): Always use pointer's type.
16355         (patch_bc_statement): Extra code to search continue target in a
16356         for loop. Fixed comments. Continue target is current loop when
16357         unlabeled.
16358
16359 1999-02-05  Andrew Haley  <aph@cygnus.com>
16360
16361         * class.c (make_class_data): The superclass of an interface should
16362         be null, not class Object.
16363
16364         * lex.c (java_lex): Sign extend hex literals.
16365
16366 1999-02-04  Andrew Haley  <aph@cygnus.com>
16367
16368         * class.c (build_utf8_ref): Output signatures using '.' as a
16369         separator, rather than '/'.
16370         (make_class_data): Likewise.
16371
16372 1999-02-03  Marc Espie <Marc.Espie@liafa.jussieu.fr>
16373
16374         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
16375         mkstemp.o.  Get them from libiberty now.
16376
16377 1999-02-02  Jeffrey A Law  (law@cygnus.com)
16378
16379         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
16380
16381 1999-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16382
16383         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
16384         from libiberty.h
16385
16386 1999-02-02  Per Bothner  <bothner@cygnus.com>
16387
16388         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
16389         * jcf-write.c (generate_bytecode_return):  New function.
16390         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
16391
16392         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
16393         generate special [fd]const_[01] instructions.
16394
16395         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
16396
16397         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
16398         handling OPCODE_lookupswitch or OPCODE_tableswitch.
16399
16400 1999-02-01  Per Bothner  <bothner@cygnus.com>
16401
16402         * parse.y (patch_method_invocation):  Handle calling static methods,
16403         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
16404
16405         * parse.y (java_complete_lhs):  Don't complain about unreachable
16406         exit condition in a do-while statement.
16407
16408 1999-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16409
16410         * lex.c (java_read_char): Fixed utf8 decoding.
16411         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
16412         range.
16413         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
16414         comments. Local variable `all_primitive' is gone. Broadened
16415         acceptance of `0' to floating point targets. `long' can now be
16416         widened to `double' or `float'.
16417         (valid_method_invocation_conversion_p): Added leading
16418         comment. Fixed tabulation.
16419         (build_string_concatenation): Optimize out left or right empty
16420         string constants.
16421
16422 1999-01-28  Per Bothner  <bothner@cygnus.com>
16423
16424         * jcf-write.c (localvar_alloc):  Only emit entry for
16425         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
16426         (generate_bytecode_insns):  Only call put_linenumber if
16427         debug_info_level > DINFO_LEVEL_NONE.
16428         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
16429         is specified, add -g1 (for compatibility wih javac).
16430
16431 1999-01-28  Hans-Peter Nilsson  <hp@axis.se>
16432
16433         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
16434         gjavah.o, check-init.o, jv-scan.o
16435
16436 1999-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16437
16438         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
16439
16440         * gjavah.c: Include config.h and system.h.
16441
16442         * javaop.h (inline): Don't define, its handled by system.h.
16443         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
16444         from `inline' to `static inline'.
16445
16446         * jcf.h (inline): Don't define, its handled by system.h.
16447
16448         * lex.c (inline): Likewise.
16449
16450 1999-01-31  Zack Weinberg  <zack@rabi.columbia.edu>
16451
16452         * lang-specs.h: Map -Qn to -fno-ident.
16453
16454 1999-01-29  Richard Henderson  <rth@cygnus.com>
16455
16456         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
16457
16458 1999-01-29  Tom Tromey  <tromey@cygnus.com>
16459
16460         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
16461         then cast it to Object before calling `append' method.
16462
16463 1999-01-28  Per Bothner  <bothner@cygnus.com>
16464
16465         * check-init.c (check_bool2_init, check_bool_init, check_init):
16466         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
16467         * jcf-write.c (generate_bytecode_insns):  Likewise.
16468
16469 1999-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16470
16471         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
16472         * parse.y (patch_cast): Allow a boolean to be cast into a
16473         boolean.
16474
16475 1999-01-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16476
16477         * parse.y: (class_declaration:): Fixed indentation.
16478         (class_member_declaration:): Extra `;' after field declaration now
16479         accepted.
16480         (interface_declaration:): Removed debug messages in error reports.
16481         (patch_binop): Nodes created and returned inherit the orignal
16482         node's COMPOUND_ASSIGN_P flag value.
16483         (patch_cast): Fix cast from char to floating point.
16484
16485 1999-01-25  Andrew Haley  <aph@cygnus.com>
16486
16487         * except.c, java-except.h (expand_resume_after_catch): new
16488         function.
16489         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
16490         to branch back to main flow of control after a catch block.
16491
16492 1999-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16493
16494         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
16495         $(srcdir)/../system.h.
16496         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
16497         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
16498         (jcf-write.o): Likewise.
16499         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
16500         (mangle.o): Depend on $(srcdir)/../toplev.h.
16501         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
16502         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
16503
16504         * class.c: Include output.h and parse.h.
16505         (mangled_classname): Add the `const' keyword to a char*.
16506         (find_named_method): Hide unused function definition.
16507         (build_utf8_ref): Change type of variable `c' to unsigned char.
16508         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
16509         (build_class_ref): Add the `const' keyword to a char*.
16510         (layout_class_method): Remove unused variable `buf'.
16511
16512         * decl.c (find_local_variable): Remove unused variable `rtl'.
16513         (pushdecl): Likewise for variables `different_binding_level' and
16514         `oldglobal'.
16515         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
16516         (maybe_build_cleanup): Likewise for parameter `decl'.
16517
16518         * except.c (expand_start_java_handler): Mark parameter `range'
16519         with ATTRIBUTE_UNUSED.
16520
16521         * expr.c: Include except.h.
16522         (pop_type): Remove unused variable `i'.
16523         (pop_value): Likewise for variables `n_words' and `i'.
16524         (expand_java_arrayload): Likewise for variable `convert'.
16525         (java_lang_expand_expr): Likewise for variables `op0', `type',
16526         `mode', `unsignedp', `node' and `elements'.
16527         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
16528         `eh_ranges'.
16529         (process_jvm_instruction): Add a `const' qualifier to a char*.
16530
16531         * gjavah.c (output_directory): Add the `const' keyword to a char*.
16532         (temp_directory): Likewise.
16533         (print_c_decl): Likewise.
16534         (print_method_info): Likewise.
16535         (decode_signature_piece): Likewise.
16536         (print_mangled_classname): Likewise.
16537
16538         * java-except.h: Provide prototypes for maybe_start_try,
16539         maybe_end_try and add_handler.
16540
16541         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
16542         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
16543         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
16544         init_expr_processing, push_super_field, init_class_processing,
16545         can_widen_reference_to, class_depth, verify_jvm_instructions,
16546         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
16547         set_local_type, merge_type_state, push_type, load_type_state,
16548         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
16549         emit_unicode_mangled_name): Add prototypes.
16550
16551         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
16552         (print_signature_type): Use ISDIGIT, not isdigit.
16553         (print_signature): Remove unused variable `j'.
16554
16555         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
16556         int when comparing against one.
16557
16558         * jcf-parse.c: Include toplev.h.
16559
16560         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
16561         (localvar_free): Remove unused variable `i'.
16562         (generate_bytecode_conditional): Likewise for variable `kind'.
16563
16564         * jv-scan.c: Include config.h and system.h.  Remove redundant
16565         OS header and gansidecl.h includes.
16566         (warning): Add the `const' keyword to a char*.  Also add
16567         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
16568         __STDC__, when determining whether to use ANSI-isms.
16569         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
16570         (xmalloc): Don't redundantly prototype here.
16571         (main): Remove unused parameter `envp'.  Also fix the arguments
16572         passed to function `fatal' to match the format specifier.
16573
16574         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
16575
16576         * mangle.c: Include toplev.h.
16577         (emit_unicode_mangled_name): Declare parameter `len'.
16578
16579         * parse.y (parse_warning_context): Add the `const' keyword to a
16580         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
16581         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
16582         (issue_warning_error_from_context): Add the `const' keyword to
16583         a char*.
16584         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
16585         not `__STDC__' for whether to use ANSI-isms.
16586
16587         * typeck.c (incomplete_type_error): Mark parameters `value' and
16588         `type' with ATTRIBUTE_UNUSED.
16589         (parse_signature_type): Use ISDIGIT, not isdigit.
16590
16591         * verify.c (check_pending_block): Add the `const' keyword to a char*.
16592         (verify_jvm_instructions): Likewise.  Remove unused variables
16593         `field_name' and `default_val'.
16594
16595         * zextract.c: Include config.h and system.h.  Remove redundant
16596         OS header includes.
16597
16598         * zipfile.h: Prototype `read_zip_archive'.
16599
16600 1999-01-21  Andrew Haley  <aph@cygnus.com>
16601
16602         * typeck.c (convert): Allow conversions to void type: some
16603         optimizations in gcc do this.
16604
16605 1999-01-21  Andrew Haley  <aph@cygnus.com>
16606
16607         * typeck.c (convert_ieee_real_to_integer): New function.
16608         (convert): When not using fast-math and using hardware fp, convert
16609         an IEEE NaN to zero.
16610
16611 1999-01-18  Andrew Haley  <aph@cygnus.com>
16612
16613         * parse.y (patch_binop): Do a type conversion from signed to
16614         unsigned and then back to signed when a ">>>" is found.
16615
16616 1999-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16617
16618         * java-tree.h: (check_for_initialization): Added prototype.
16619         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
16620         * parse.y (do_resolve_class): Removed unused locals.
16621         (read_import_dir): Likewise.
16622         (resolve_qualified_expression_name): Array creation
16623         expressions are valid primary expressions.
16624         (qualify_ambiguous_name): Likewise.
16625         (patch_synchronized_statement): Removed unused local.
16626
16627 1999-01-17  Jeffrey A Law  (law@cygnus.com)
16628
16629         * Makefile.in (zextract.o): Add dependencies.
16630
16631         * Makefile.in: Do not put ^Ls at the start of a line.
16632
16633 1999-01-15  Per Bothner  <bothner@cygnus.com>
16634
16635         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
16636         sub-type the result of the call that gets the exception value.
16637
16638         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
16639         don't call finish_class.
16640
16641         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
16642         clear found before continuing.
16643
16644         * verify.c (verify_jvm_instructions):  On an array load, allow
16645         and handle top of stack to be TYPE_NULL.
16646
16647         * gjavah.c (generate_access):  Translate Java package private or
16648         protected access to C++ public, but with a comment.
16649
16650 1999-01-13  Andrew Haley  <aph@cygnus.com>
16651
16652         * expr.c (generate_name): Name prefix changed to avoid clashes
16653         with assembler temp labels.
16654
16655         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
16656         MODIFY_EXPR.  Without this, code for the assignment may not be
16657         generated at all and the synchronized statement will read an
16658         uninitialized variable.
16659
16660 1999-01-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16661
16662         * class.c (maybe_layout_super_class): Fixed returned value.
16663         * lex.c: Added 1999 to the copyright.
16664         (java_init_lex): Initialize java_lang_imported.
16665         * lex.h: Added 1999 to the copyright.
16666         * parse.h: Added 1999 to the copyright.
16667         (REGISTER_IMPORT): Fixed typo in trailing macro.
16668         (CURRENT_OSB): New macro.
16669         (struct parser_ctxt): New fields osb_depth, osb_limit.
16670         * parse.y (java_lang_id): New global variable.
16671         (type_import_on_demand_declaration): Don't import java.lang.* twice.
16672         (array_creation_expression:): Use CURRENT_OSB.
16673         (dims:): Uses a stack to keep track of array dimensions.
16674         (cast_expression:): Use CURRENT_OSB.
16675         (find_expr_with_wfl): Return NULL if node found doesn't meet the
16676         conditions.
16677         (register_fields): Fixed typos in comment.
16678         (check_method_redefinition): Fixed comment indentation.
16679         (java_check_regular_methods): Set saved found wfl to NULL after
16680         having reinstalled it in the previously found DECL_NAME.
16681
16682 1999-01-10  Richard Henderson  <rth@cygnus.com>
16683
16684         * gjavah.c (java_float_finite): Use a union to do type punning.
16685         (java_double_finite): Likewise.
16686
16687 1999-01-09  Per Bothner  <bothner@cygnus.com>
16688
16689         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
16690         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
16691         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
16692         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
16693         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
16694         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
16695
16696 1999-01-08  Per Bothner  <bothner@cygnus.com>
16697
16698         * check-init.c (check_init):  If compiling to native, we don't
16699         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
16700
16701 1999-01-08  Tom Tromey  <tromey@cygnus.com>
16702
16703         * parse-scan.y (variable_declarator_id): Set or increment
16704         bracket_count.
16705         (bracket_count): New global.
16706         (formal_parameter): Handle case where bracket pairs trail variable
16707         declarator id.
16708
16709 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
16710
16711         * jcf-parse.c (yyparse): variable len changed from a char to an
16712         int to prevent overflow.
16713
16714 1999-01-06  Per Bothner  <bothner@cygnus.com>
16715
16716         * java-tree.h:  Declare read_class.
16717         * jcf-parse.c (read_class):  New function.
16718         (load_class):  Now just call read_class.
16719
16720         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
16721         * jcf-parse.c (parse_source_file):  Declare save_error_count,
16722         which is needed by java_parse_abort_on_error macro,
16723         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
16724
16725         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
16726         constructor, if initializing a static field.
16727         (patch_new_array_init):  Set TREE_CONSTANT if it is.
16728         * expr.c (java_lang_expand_expr):  For a static array constructor
16729         of primitive elements, allocate the array itself statically.
16730         Disabled until we can set the vtable field statically.
16731
16732         * check-init.c:  New file.  Checks for definite assignment.
16733         * Makefile.in (JAVA_OBJS):  Add check-init.o.
16734         * parse.y (java_complete_expand_method): Call check_for_initialization.
16735         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
16736
16737 1999-01-06  Graham <grahams@rcp.co.uk>
16738
16739         * parse.y : include system.h instead of including
16740         standard headers directly with the exception of <dirent.h>.
16741
16742 1999-01-06  Per Bothner  <bothner@cygnus.com>
16743
16744         * lex.h:  Moved static function declarations to lex.c,
16745         to shut up some -Wall warnings.
16746         * lex.c:  Static function declarations moved here.
16747         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
16748
16749 1999-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16750
16751         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
16752
16753 1998-12-22  Per Bothner  <bothner@cygnus.com>
16754
16755         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
16756         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
16757
16758         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
16759         (localvar_alloc):  Change return type to void,
16760         (emit_unop):  Remove unused variable size.
16761
16762         * jcf-write.c (struct jcf_block):  Add new union.
16763         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
16764         (call_cleanups):  New functions.
16765         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
16766         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
16767         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
16768         * lang.c (lang_init):  Call using_eh_for_cleanups.
16769         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
16770         completing operands to patch_synchronized_statement.
16771         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
16772         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
16773         WITH_CLEANUP_EXPR instead of TRY_EXPR.
16774
16775 1998-12-20  John F. Carr  <jfc@mit.edu>
16776
16777         * Make-lang.in: Comment out control-Ls; they upset some makes.
16778
16779 1998-12-18  Tom Tromey  <tromey@cygnus.com>
16780
16781         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
16782         consistently.
16783
16784 1998-12-17  Tom Tromey  <tromey@cygnus.com>
16785
16786         * parse.y (DIR_SEPARATOR): New define.
16787         (check_class_interface_creation): Use it.
16788
16789         * parse-scan.y (report_main_declaration): Recognize
16790         `java.lang.String' in argument to main.
16791
16792 1998-12-16  Per Bothner  <bothner@cygnus.com>
16793
16794         * parse.y (create_interface):  Remove bogus test.
16795
16796 1998-12-16  Per Bothner  <bothner@cygnus.com>
16797
16798         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
16799         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
16800
16801 1998-12-16  Tom Tromey  <tromey@cygnus.com>
16802
16803         * parse-scan.y (qualified_name): Use correct sprintf format.
16804
16805 1998-12-15  Tom Tromey  <tromey@cygnus.com>
16806
16807         * gjavah.c (print_field_info): Changed how most negative number is
16808         printed.
16809
16810 1998-12-14  Per Bothner  <bothner@cygnus.com>
16811
16812         * parse.y (fold_constant_for_init):  New function.
16813         (resolve_expression_name):  Don't replace static final
16814         constant-initialized fields by its value.
16815         (java_complete_lhs):  New.  Same as java_complete_tree, except does
16816         not replace static final constant-initialized fields by their values.
16817         (register_fields):  If there is an initializer, set DECL_INITIAL and
16818         MODIFY_EXPR_FROM_INITIALIZATION_P.
16819         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
16820         Only call patch_initialized_static_field if
16821         MODIFY_EXPR_FROM_INITIALIZATION_P.
16822         (patch_initialized_static_field):  If not valid constant, clear
16823         DECL_INITIAL.
16824
16825         * parse.y (lookup_field_wrapper):  Fix thinko.
16826
16827         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
16828         set and restore global lineno.
16829
16830 1998-12-14  Tom Tromey  <tromey@cygnus.com>
16831
16832         * gjavah.c (print_field_info): If value to print is the smallest
16833         value of its size, then print as hex to avoid later warnings from
16834         C++ compiler.
16835
16836 1998-12-14  Tom Tromey  <tromey@cygnus.com>
16837
16838         * gjavah.c (decompile_method): Decompile `return null'.
16839         (process_file): Generate `#pragma interface'.
16840         (method_declared): New global.
16841         (print_method_info): Set it.
16842         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
16843         (print_method_info): Handle abstract methods.
16844
16845 1998-12-13  Per Bothner  <bothner@cygnus.com>
16846
16847         * parse.y (patch_method_invocation):  If class_decl is null
16848         (e.g. an array type), use original type.
16849
16850         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
16851         errors about uncaught exception from clone (of array, specifically).
16852
16853 1998-12-13  Tom Tromey  <tromey@cygnus.com>
16854
16855         * gjavah.c (decompile_method): Handle all types of `return'
16856         opcode.  Decompile `return this' and `return'.
16857         (method_access): New global.
16858         (print_method_info): Set it.
16859         (decompile_method): Don't decompile a synchronized method.
16860
16861 1998-12-13  Tom Tromey  <tromey@cygnus.com>
16862
16863         * jcf-reader.c (jcf_parse_one_method): Recognize
16864         HANDLE_END_METHOD.
16865         * gjavah.c (HANDLE_END_METHOD): New macro.
16866         (HANDLE_CODE_ATTRIBUTE): New macro.
16867         (decompile_method): New function.
16868         (print_method_info): Don't print `;\n' at end of function decl.
16869         Include java-opcodes.h.
16870         (decompiled): New global.
16871
16872 1998-12-12  Per Bothner  <bothner@cygnus.com>
16873
16874         * class.c (build_class_ref):  Handle PRIMTYPE.class if
16875         flag_emit_class_files.
16876         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
16877         if flag_emit_class_files.
16878         * parse.y (java_complete_tree):  Pre-liminary support for
16879         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
16880
16881         * parse.y (patch_synchronized_statement):   Don't call monitorexit
16882         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
16883
16884         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
16885
16886         * zipfile.h (opendir_in_zip):  New declaration.
16887         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
16888         (opendir_in_zip):  New function, using code from open_in_zip.
16889         (open_in_zip):  Call opendir_in_zip.
16890         (find_class):  Remove no-longer-used do_class_file parameter,
16891         but add source_ok parameter.  Change logic so if we find a .java file,
16892         we don't look for .class in later classpath emtries.
16893         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
16894         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
16895         * gjavah.c: Update call to find_class.
16896         * jcf-dump.c:  Likewise.
16897
16898         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
16899         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
16900         nothing if body is empty_stmt_node.
16901         Various little fixes so SP gets correctly adjusted.
16902         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
16903         For CALL_EXPR, test if static first.
16904         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
16905         such as the ones we create for Object and Class.
16906         Set and restore current_function_decl.
16907         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
16908         (note_possible_classname):  New function.
16909         (read_import_entry):  Removed.  Merged with read_import_dir.
16910         (read_import_dir):  Don't call find_class - that only gives us
16911         the first classpath entry having the needed package.
16912         Use the struct buffer data structure from buffer.h.
16913         (read_import_dir, find_in_imports_on_demand):  The remembered
16914         class names now use '.' (not '/') as package separator.
16915
16916         * parse.y (java_complete_expand_methods):  Call write_classfile
16917         here, and not in java_expand_classes (which only gets first class).
16918
16919 1998-12-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16920
16921         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
16922         (register_fields):  If a static fields has an initializer, just
16923         chain it on ctxp->static_initialized, and handle later.
16924         (java_complete_expand_methods):  Force <clinit> first.
16925         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
16926         - it's already been completed.
16927         (patch_initialized_static_field):  New function.
16928         (java_complete_field):  Call it.
16929
16930 1998-12-12  Per Bothner  <bothner@cygnus.com>
16931
16932         * expr.c (encode_newarray_type, build_new_array):  New functions.
16933         * java-tree.h:  Declare build_new_array.
16934         * jcf-write.c (patch_newarray):  Use build_new_array.
16935
16936         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
16937         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
16938
16939         * parse.y (patch_new_array_init):  Re-organize.
16940         Now is passed the actual array (pointer) type of the value.
16941         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
16942         (patch_array_constructor):  Removed - merged into patch_new_array_init.
16943         (java_complete_tree):  Update patch_new_array_init.
16944
16945         * jcf-write.c (find_constant_index):  New function.
16946         (generate_bytecode_insns):  Use find_constant_index.
16947         (generate_classfile):  Use find_constant_index for ConstantValue.
16948
16949 1998-12-11  Tom Tromey  <tromey@cygnus.com>
16950
16951         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
16952         * decl.c (init_decl_processing): Renamed dtable -> vtable.
16953         * class.c (make_class_data): Renamed dtable -> vtable, and
16954         dtable_method_count -> vtable_method_count.
16955
16956 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16957
16958         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
16959         global variables, initialized.
16960         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
16961         Declared new global variables.
16962         * lex.c (java_lex): Return long_zero_node, float_zero_node,
16963         double_zero_node, integer_zero_node upon direct matching.
16964         * parse.y (purify_type_name): Added function prototype.
16965         (duplicate_declaration_error_p): Consider new_type as potentially
16966         being a incomplete type. Use purify_type_name on type string.
16967         (method_header): saved_type: unused variable removed. Don't figure
16968         return type if method name is invalid.
16969         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
16970         processed by patch_unaryop.
16971         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
16972         increment/decrement node into its original type after binary
16973         numeric promotion on its operands.
16974
16975 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16976
16977         * parse.y (array_initializer:): Array init operand is NULL_TREE
16978         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
16979         now an error. Fixed indentation problems.
16980         (patch_string): Handle error_mark_node as an argument.
16981         (patch_new_array_init): Fixed indentation problems.
16982         (array_constructor_check_entry): Removed check on null wfl_value.
16983         Return an error if wfl_value's walk returns an error.
16984
16985 1998-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16986
16987         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
16988         * lex.c (java_lex): Remember column position before advancing one
16989         token. Retain location information on OCB_TK.
16990         * lex.h (typedef struct java_lc): Added new field.
16991         * parse.h (GET_SKIP_TYPE): New macro.
16992         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
16993         * parse.y (build_new_array_init, patch_new_array_init,
16994         patch_array_constructor, maybe_build_array_element_wfl,
16995         array_constructor_check_entry): New function prototypes.
16996         (switch_block:): Tagged <node>.
16997         (OCB_TK): Tagged <operator>.
16998         (array_initializer:): Installed actions.
16999         (variable_initializer): Build location information on element if
17000         necessary.
17001         (switch_statement:): Fixed indentation typo.
17002         (switch_block:): Redefined default action.
17003         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
17004         (patch_assignment): Removed duplicate code.
17005         (maybe_build_array_element_wfl, build_new_array_init,
17006         patch_new_array_init, patch_array_constructor,
17007         array_constructor_check_entry): New functions.
17008
17009 1998-12-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17010
17011         * parse.y (array_initializer): Tagged <node>.
17012         (variable_initializer:): Use default rule.
17013         (array_initializer:): Defined actions.
17014         (variable_initializers:): Likewise.
17015         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
17016         non-static field accesses.
17017         (patch_invoke): Fixed indentation typo.
17018         (java_complete_tree): Likewise.
17019         (build_labeled_block): Changed leading comment. Generate an error
17020         in case of duplicate loop labels.
17021         (patch_conditional_expr): Patch results of string concatenation
17022         operations.
17023
17024 1998-12-06  Per Bothner  <bothner@cygnus.com>
17025
17026         * constants.c (find_methodref_index):  When the class is an interface,
17027         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
17028
17029         * decl.c (finit_identifier_node):  Use "$finit$", rather than
17030         "<finit>" (which Sun's verifier rejects).
17031         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
17032         (generate_field_initialization_code):  Removed.
17033         (fix_constructors)  Don't add call to $finit$ here (wrong order).
17034         (patch_method_invocation):  Add $finit$ call here.
17035
17036         * java-tree.h (CALL_USING_SUPER):  New macro.
17037         * parse.y (patch_invoke):  Remove im local variable.
17038         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
17039         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
17040         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
17041
17042         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
17043
17044         * parse.y (java_complete_tree):  Don't complain about unreachable
17045         statement if it is empty_stmt_node.
17046
17047         * jcf-write.c (find_constant_wide):  New function.
17048         (push_long_const):  Use find_constant_wide.
17049
17050         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
17051         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
17052         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
17053         Emit invokeinterface when calling an interface method.
17054         Emit invokespecial also when calling super or private methods.
17055
17056         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
17057
17058 1998-12-06  Per Bothner  <bothner@cygnus.com>
17059
17060         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
17061
17062 1998-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17063
17064         * java-tree.h (java_layout_seen_class_methods): New function
17065         prototype.
17066         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
17067         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
17068         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
17069         * parse.y (method_declarator:): Defined action.
17070         (issue_warning_error_from_context): input_filename saved, set to
17071         the appropriate value and restored after java_error is called.
17072         (build_unresolved_array_type): Fixed comment.
17073         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
17074         (method_header): Deal with return type the same way type are
17075         handled for fields and method's parameters and local variables
17076         types are handled.
17077         (check_method_redefinition): Removed extra CR.
17078         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
17079         (java_layout_seen_class_methods): New function.
17080         (java_layout_classes): Call java_layout_seen_class_methods.
17081
17082 1998-12-03  Per Bothner  <bothner@cygnus.com>
17083
17084         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
17085
17086 1998-12-03  Per Bothner  <bothner@cygnus.com>
17087
17088         * jcf-dump.c (main):  Fix error message.
17089         * jcf-path.c (add_entry):  Style fix.
17090
17091 1998-12-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17092
17093         * class.c (layout_class_method): Call build_java_argument_signature
17094         on constructors too.
17095         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
17096         (patch_method_invocation): Define a primary when resolving an
17097         expression name. Augmented comment on code checking illegal `this'
17098         usage. Loosened it test by accepting NEW_CLASS_EXPR.
17099
17100 1998-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17101
17102         * class.c (layout_class_method): Don't report error on non-static
17103         overriding static if the method is private.
17104         * java-tree.h (finish_class): Prototype added.
17105         * lex.c (java_get_line_col): Handle col argument -2 value.
17106         * parse.h: All static method declarations moved to parse.y.
17107         * parse.y: Now contains all static method declarations previously
17108         found in parse.h.
17109         (find_expr_with_wfl, missing_return_error,
17110         unreachable_stmt_error): New functions.
17111         (java_get_real_method_name): Identify constructors bearing class
17112         names in source code compiled classes only.
17113         (java_complete_expand_methods): Call missing_return_error.
17114         (invocation_mode): Private methods invoked as static methods.
17115         (java_complete_tree): Call unreachable_stmt_error.
17116
17117 1998-12-01  Tom Tromey  <tromey@cygnus.com>
17118
17119         * Makefile.in (+target): Removed.
17120         (+xmake_file): Likewise.
17121         (+tmake_file): Likewise.
17122         (.NOEXPORT): Removed duplicate.
17123
17124 1998-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17125
17126         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
17127
17128         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
17129
17130         * jvgenmain.c: Remove the xmalloc prototype, we get it from
17131         libiberty.h.  Provide an xmalloc definition.
17132
17133         * jvspec.c: Remove the xmalloc prototype.
17134
17135         * parse-scan.y: Include config.h and system.h.  Don't include
17136         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
17137         Provide an xstrdup definition.
17138
17139 1998-11-26  Alexandre Oliva  <oliva@dcc.unicamp.br>
17140
17141         * jcf-path.c (add_entry): Recognize ".jar" too.
17142         * lang-specs.h: Likewise.
17143
17144 1998-11-26  Per Bothner  <bothner@cygnus.com>
17145
17146         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
17147         soft_monitorenter_node, soft_monitorexit_node, throw_node.
17148
17149         * jcf-write.c (generate_bytecode_insns):
17150         Handle pre/post-increment/decrement of long.
17151
17152         * jcf-write.c (generate_bytecode_insns):
17153         Handle missing exception handler (finally for synchronized).
17154
17155 1998-11-25  Per Bothner  <bothner@cygnus.com>
17156
17157         * java-tree.h (end_params_node):  Declare global.
17158         * decl.c (end_params_node):  New global.
17159         (init_decl_processing, start_java_method):  Use end_params_node for
17160         end of list of parameter types.  Follows correct gcc conventions.
17161         * expr.c (pop_argument_types, pop_arguments):  Likewise.
17162         * lang.c (put_decl_node):  Likewise.
17163         * typeck.c (various places):  Likewise.
17164         * class.y (various places):  Likewise.
17165         * parse.y (various places):  Likewise.
17166
17167         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
17168         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
17169
17170         * class.c:  Add #include flags.h, remove no-longer needed declaration.
17171
17172         * class.c (layout_class_method):  Remove commented-out code, re-format.
17173         Don't add vtable entry (or index) for private methods.
17174         * expr.c (expand_invoke):  A private method is implicitly final.
17175         * class.c (make_class_data):  If inlining or optimizing,
17176         skip private methods.
17177
17178         * class.c (finish_class):  New function.  Calls existing methods,
17179         but alls emits deferred inline functions.
17180         * jcf-parse.c (parse_class_file):  Call finish_class.
17181         * parse.y (java_complete_expand_methods):  Likewise.
17182
17183         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
17184
17185         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
17186
17187 1998-11-25  Marc Espie <espie@quatramaran.ens.fr>
17188
17189         * jcf-write.c (generate_bytecode_conditional): Fix typo.
17190
17191 1998-11-24  Per Bothner  <bothner@cygnus.com>
17192
17193         * (generate_classfile): Always write class access flag with
17194         ACC_SUPER set.
17195
17196 1998-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17197
17198         * class.c (maybe_layout_super_class): New function.
17199         (layout_class): Reorganized. Loop on class methods dispatched into
17200         a new function. Call maybe_layout_super_class.
17201         (layout_class_methods, layout_class_method): New functions.
17202         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
17203         class.
17204         (expand_invoke): Likewise.
17205         * java-tree.h (all_class_list): New global variable declared.
17206         (layout_class_methods, layout_class_method): New function
17207         prototypes.
17208         (LAYOUT_SEEN_CLASS_METHODS): New macro.
17209         * jcf-parse.c (all_class_list): New global variable.
17210         (load_class): Extended what class_or_name can be. Use parser
17211         context mechanism to save globals before calling jcf_parse.
17212         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
17213         is set on the file name.
17214         (jcf_parse): Layout class methods when Object is loaded, otherwise
17215         record class in all_class_list for delayed method layout.
17216         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
17217         * lang.c (put_decl_node): Decode <init> into the decl context
17218         class name.
17219         * lex.c (java_allocate_new_line): Use xmalloc.
17220         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
17221         pointers, not TREE_LIST elements.
17222         (struct parser_ctxt): Fixed comment indentations, added comments
17223         and reordered some fields.
17224         (java_check_methods): Function prototype removed.
17225         * parse.y (java_push_parser_context): Use xmalloc.
17226         (java_parser_context_restore_global): Pop extra pushed ctxp only
17227         when there's nothing next.
17228         (maybe_create_class_interface_decl): Fixed comment, add new
17229         created class decl to all_class_list.
17230         (method_header): Use GET_REAL_TYPE on argument's types.
17231         (method_declarator): Use GET_REAL_TYPE, change type to the real
17232         type in TREE_LIST dependency node. Build argument list with the
17233         real type.
17234         (create_jdep_list): Use xmalloc. Removed allocation error message.
17235         (obtain_incomplete_type): Fixed leading comment. Broadened
17236         incoming argument meaning.
17237         (register_incomplete_type): Use xmalloc. Removed allocation error
17238         message.
17239         (safe_layout_class): Fixed leading comment.
17240         (jdep_resolve_class): Reversed if statement condition and switch
17241         if and else bodies.
17242         (resolve_and_layout): Fixed leading comment. Broadened incoming
17243         argument meaning.
17244         (complete_class_report_errors): New local variable name, for
17245         clarity. purify_type_name used for all error cases.
17246         (java_get_real_method_name): Stricter check on constructors.
17247         (java_check_regular_methods): Reverse methods list only if not
17248         already laid out. Layout artificial constructor.
17249         (java_check_methods): Deleted.
17250         (source_start_java_method): Obtain incomplete type for patchable
17251         method arguments.
17252         (java_layout_classes): Fixed leading comment. Use
17253         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
17254         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
17255         before returning. Fixed comments.
17256         (java_expand_classes): Check for errors up front.
17257         (patch_method_invocation): Class to search is resolved and laid
17258         out.
17259
17260 1998-11-24  Per Bothner  <bothner@cygnus.com>
17261
17262         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
17263
17264         * javaop.h (int8):  Removed - not used.
17265         (jbyte):  Redefine portably with correct signedness.
17266
17267         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
17268
17269         * jcf-write.c (generate_bytecode_insns):  Fix typo
17270         OPCODE_getstatic to OPCODE_getfield.
17271
17272         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
17273         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
17274         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
17275
17276 1998-11-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17277
17278         * jcf-parse.c (jcf_parse_source): Function returned type is
17279         void. Added prototype.
17280         (jcf_parse): Function returned type is void.
17281         (yyparse): Remove call to fclose on the last parsed file.
17282
17283         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
17284
17285 1998-11-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17286
17287         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
17288         (layout_class): Cope with methods featuring WFL in decl names.
17289         * decl.c (unqualified_object_id_node): New global variable,
17290         initialized.
17291         (build_decl_no_layout): Removed.
17292         * expr.c (build_primtype_type_ref): Handle Double.
17293         (java_lang_expand_expr): Fixed indentations.
17294         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
17295         (flag_wall, flag_redundant, flag_not_overriding,
17296         flag_static_local_jdk1_1, unqualified_object_id_node): Global
17297         variable declarations.
17298         (build_decl_no_layout): Removed prototype.
17299         (java_get_real_method_name): Added prototype.
17300         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
17301         (java_parse_abort_on_error): Macro now just returns.
17302         * jcf-parse.c (jcf_parse_source): Check fclose returned
17303         value. Call emit_register_classes if java_report_errors returns
17304         zero.
17305         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
17306         flag_static_local_jdk1_1): New integer flags.
17307         (lang_decode_option): New flags set here.
17308         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
17309         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
17310         the flag_redundant variable.
17311         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
17312         when parsing java.lang.Object class.
17313         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
17314         NULL_TREE to build.
17315         (resolve_qualified_expression_name): Fixed indentation.
17316         (patch_array_ref): Changed prototype.
17317         (not_initialized_as_it_should_p): Prototype removed.
17318         (java_report_errors): Added function prototype.
17319         * parse.y (formal_parameter:): Changed error message for not yet
17320         supported final parameters.
17321         (class_type_list:): Set both PURPOSE and VALUE of created
17322         TREE_LIST to be class_type.
17323         (primary_no_new_array:): Handle class literals on primitive types.
17324         (parse_warning_context): Reinstalled correct force_error and
17325         do_warning flags setups.
17326         (java_report_errors): Changed prototype. Return java_error_count
17327         value.
17328         (variable_redefinition_error): Consider treating variable type as
17329         a fake pointer.
17330         (create_interface): Warn about redundant abstract modifier if
17331         flag_redundant is set. Changed error message.
17332         (lookup_field_wrapper): Save/restore globals before/after looking
17333         up field.
17334         (duplicate_declaration_error_p): Consider treating declaration
17335         type as a fake pointer.
17336         (register_fields): Extract real type from dependency node. Check
17337         for duplicate field declaration after type adjustment. Use
17338         DECL_INITIAL to store static final initialized values.
17339         (method_header): Extract real function type from dependency node.
17340         (check_abstract_method_header): Use GET_METHOD_NAME.
17341         (obtain_incomplete_type): Layout fake pointer type.
17342         (safe_layout_class): Don't try to check for methods before layout.
17343         (java_complete_class): Don't check for correct throws clause
17344         elements inheritance here.
17345         (resolve_and_layout): Broadened name parameter meaning.
17346         (reset_method_name): Use GET_METHOD_NAME.
17347         (java_get_real_method_name): New function.
17348         (java_check_regular_methods): Don't check methods in
17349         java.lang.Object.  Verify lineage of throws clause elements. Use
17350         flag_no_overriding in warning report.
17351         (check_throws_clauses): Don't check if class was from
17352         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
17353         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
17354         (declare_local_variables): Use flag_static_local_jdk1_1 to report
17355         warning on unsupported final local variables. Use build_decl
17356         instead of build_decl_no_layout. Get real local variable type from
17357         dependency node.
17358         (source_start_java_method): Get real parameter type from
17359         dependency node. Call build_decl instead of build_decl_no_layout.
17360         (java_layout_classes): Reverse tree and layout type and class as
17361         required. Mark class as loaded when done.
17362         (resolve_field_access): Fixed indentation. Restricted condition
17363         leading to static field access code generation. Set field_type
17364         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
17365         (resolve_qualified_expression_name): Initialize type_found to
17366         null. Handle static field resolved during qualification. Fixed
17367         layout on non primitive field decl types.
17368         (not_accessible_p): Fixed typo in comment.
17369         (patch_method_invocation): Resolve and layout class to search from
17370         type.
17371         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
17372         layout non primitive type, if necessary. Make method node only to
17373         report errors.
17374         (find_applicable_accessible_methods_list): Consider WFL'ed method
17375         decl names. Fixed indentation.
17376         (argument_types_convertible): Resolve and layout target type if
17377         necessary.
17378         (java_complete_tree): Fixed indentation problems. Rewrote
17379         CALL_EXPR thrown exceptions check. Re-installed further processing
17380         of the assignment in certain cases.
17381         (patch_assignment): Call maybe_build_primttype_type_ref to perform
17382         inlining on class literals.
17383         (valid_builtin_assignconv_identity_widening_p): Cope with constant
17384         0 literal.
17385         (valid_method_invocation_conversion_p): Likewise.
17386         (patch_string): Temporary disable forbidden use of `this' in
17387         explicit constructor invocations when doing string concatenation
17388         within their scope.
17389         (patch_unaryop): Added comment. Reinstalled code to disable
17390         further check on assignment operation with cast expression RHS.
17391         (patch_switch_statement): Fixed indentation.
17392         (build_try_statement): Call build_decl instead of
17393         build_decl_no_layout.
17394         (patch_synchronized_statement): Likewise.
17395         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
17396         IS_UNCHECKED_EXPRESSION_P.
17397         (check_thrown_exceptions_do): Changed leading comment. Resolve and
17398         layout argument exception type.
17399         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
17400         of IS_UNCHECKED_EXPRESSION_P.
17401
17402 1998-11-18  Anthony Green  <green@cygnus.com>
17403
17404         * jcf-parse.c (yyparse): Open class file in binary mode.
17405
17406 1998-11-15  Per Bothner  <bothner@cygnus.com>
17407
17408         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
17409
17410         * jcf-write.c (perform_relocations):  Move check out one loop.
17411
17412 1998-11-15  Anthony Green  <green@hoser.cygnus.com>
17413
17414         * Make-lang.in: Fix reference to srcdir.
17415         * jv-scan.c: Add missing xmalloc prototype.
17416         * jvgenmain.c: Ditto.
17417
17418 1998-11-15  Per Bothner  <bothner@cygnus.com>
17419
17420         * decl.c (error_mark_node), java-tree.h:  New global.
17421         * parse.y:  Use empty_stmt_node instead of size_zero_node.
17422         (build_if_else_statement):  If missing else, use empty_stmt_node.
17423
17424         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
17425         (java_complete_expand_method):  Complain if return is missing.
17426         (java_check_regular_methods):  Comment out incorrect error check.
17427         (not_accessible_p):  Fix incorrect handling of protected methods.
17428         (patch_method_invocation):  Pass correct context to not_accessible_p.
17429         (find_applicable_accessible_methods_list):  Likewise.
17430         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
17431         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
17432         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
17433         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
17434
17435         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
17436         (push_int_const):  Remove reundant NOTE_PUSH.
17437         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
17438         (- case SWITCH_EXPR):  Fix code generation bug.
17439         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
17440         (generate_classfile):  More robust for abstract methods.
17441
17442 1998-11-15  Anthony Green  <green@cygnus.com>
17443
17444         * Makefile.in: jv-scan and jvgenmain all require libiberty.
17445         * Make-lang.in: Ditto.
17446
17447         * jv-scan.c: Remove xmalloc and xstrdup definitions.
17448         * jvgenmain: Ditto.
17449
17450 1998-11-15  Per Bothner  <bothner@cygnus.com>
17451
17452         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
17453
17454         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
17455
17456 1998-11-14  Per Bothner  <bothner@cygnus.com>
17457
17458         Allow uses of interface types to verify.  This is not really
17459         type-safe, but it matches what Sun does, and is OK as long as
17460         there are appropriate run-time checks.
17461         * verify.c (merge_types):  If merging two interface types,
17462         just set the result to java.lang.Object.
17463         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
17464
17465 1998-11-13  Tom Tromey  <tromey@cygnus.com>
17466
17467         * gjavah.c (main): Handle --output-class-directory argument.
17468         * jvspec.c (lang_specific_driver): Translate `-d' into
17469         -foutput-class-dir.
17470         * jcf.h (jcf_write_base_directory): Declare.
17471         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
17472         * lang-options.h: Mention -foutput-class-dir.
17473         * jcf-write.c (jcf_write_base_directory): New global.
17474         (make_class_file_name): Put generated .class file into `-d'
17475         directory, or into source directory if -d not given.  Function now
17476         static.
17477         (write_classfile): Free class file name.  Handle case where class
17478         file name is NULL.
17479         (DIR_SEPARATOR): New macro.
17480         Include <sys/stat.h>
17481
17482         * Makefile.in (prefix): New macro.
17483
17484 1998-11-12  Per Bothner  <bothner@cygnus.com>
17485
17486         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
17487         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
17488         here (done in patch_invoke instead).
17489         (case_identity):  Moved here from parse.y.
17490
17491         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
17492         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
17493         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
17494         so they can be efficiently scanned without recursion.
17495         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
17496         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
17497         in BLOCK iteratively, rather than recursively.
17498
17499         * parse.y (do_unary_numeric_promotion):  New function.
17500         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
17501
17502         * parse.y (patch_newarray):  Various fixes.
17503
17504         Re-do handling of switch statements (for proper block scoping).
17505         * parse.y:  Add just a single block for the enture switch block,
17506         but don't create any "case blocks".
17507         (group_of_labels):  Rmeoved unneeded non-terminal.
17508         CASE_EXPR and DEFAULT_EXPR are added to current block.
17509         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
17510         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
17511         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
17512         * parse.y (wfl_operator, print_int_node): Make non-static.
17513         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
17514         as part of recursive scan of block.
17515         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
17516         (patch_switch_statement):  Most tests move dinto java_complete_tree.
17517
17518         * parse.y:  Make various production be non-typed (void).
17519         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
17520         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
17521         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
17522
17523         * jcf-write.c (struct jcf_handler):  New type.
17524         (struct jcf_switch_state):  New type.
17525         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
17526         (alloc_handler, emit_unop, emit_reloc):  New functions.
17527         (adjust_typed_op):  Add extra parameter ("max type" offset).
17528         (emit_switch_reloc, emit_case-reloc):  New function.
17529         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
17530         (generate_bytecode_insns):  Support REAL_CST, switch statements,
17531         exception handling, method calls, object/array creation, and more.
17532
17533         * class.c:  Remove some unused variables.
17534         * constants.c (find_string_constant):  New function.
17535         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
17536         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
17537         if flag_emit_class_files.
17538
17539 1998-11-12  Tom Tromey  <tromey@cygnus.com>
17540
17541         * jcf-io.c (find_class): Added explanatory comment.
17542
17543         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
17544         trailing slash to `.zip' entries.
17545
17546         * jvspec.c (lang_specific_driver): Correctly handle case where
17547         GC_NAME not defined.
17548
17549 1998-11-11  Tom Tromey  <tromey@cygnus.com>
17550
17551         * jvspec.c (GC_NAME): New define.
17552         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
17553         if required.
17554         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
17555
17556 1998-11-11  Per Bothner  <bothner@cygnus.com>
17557
17558         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
17559
17560 1998-11-11  Tom Tromey  <tromey@cygnus.com>
17561
17562         * jcf-dump.c (main): Correctly recognize `--'-style long options.
17563
17564 1998-11-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17565
17566         * class.c (is_compiled_class): Call safe_layout_class for class
17567         compiled from source.
17568         * conver.h (convert_to_integer, convert_to_real,
17569         convert_to_pointer): Added prototypes.
17570         * decl.c (init_decl_processing): Non longer push the decls of
17571         `methodtable', `constants', `Class', `Field', `dispatchTable'
17572         `jexception' and `Method'.
17573         * expr.c (build_invokeinterface): New function.
17574         (expand_invoke): static variable CLASS_IDENT now in
17575         build_invokeinterface. Use build_invokeinterface.
17576         (expand_java_field_op): Moved code to inline
17577         java.lang.PRIMTYPE.TYPE into a function.
17578         (build_primtype_type_ref): New function.
17579         * java-tree.def (INSTANCEOF_EXPR): New tree code.
17580         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
17581         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
17582         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
17583         (DECL_LOCAL_STATIC_VALUE): New macro.
17584         (build_invokeinterface, build_primtype_type_ref): New function
17585         prototypes.
17586         (java_parse_abort_on_error): Macro rewritten.
17587         * jcf-parse.c (current_method): Add comment to declaration.
17588         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
17589         Function prototypes fixed.
17590         (jcf_parse_source): push/pop parser context. save/restore global.
17591         (parse_source_file): Fixed leading comment. Now take a
17592         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
17593         classes and pop the parser context anymore.
17594         (yyparse): Push parser context, save globals, parse the source
17595         file, restore globals and pop the parser context when processing a
17596         source file.
17597         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
17598         * lex.c (java_parse_doc_section): New function.
17599         (java_lex): Call java_parse_doc_section when appropriate. Build an
17600         operator around INSTANCEOF_TK.
17601         * lex.h (java_lineterminator, java_sprint_unicode,
17602         java_unicode_2_utf8, java_lex_error, java_store_unicode):
17603         Prototypes rewritten.
17604         (java_parse_escape_sequence, java_letter_or_digit_p,
17605         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
17606         java_read_unicode, java_store_unicode, java_read_char,
17607         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
17608         Added function prototypes.
17609         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
17610         define.
17611         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
17612         New macros
17613         (struct parser_ctxt): New fields: deprecated,
17614         current_parsed_class_un, gclass_list.
17615         (fix_method_argument_names, issue_warning_error_from_context,
17616         resolve_package, lookup_package_type): New function prototypes.
17617         (resolve_expression_name): Fixed function prototype.
17618         (find_applicable_accessible_methods_list): Fixed indentation, added
17619         extra argument in prototype.
17620         (check_final_assignment, build_null_of_type, check_deprecation,
17621         check_method_redefinition, reset_method_name,
17622         java_check_regular_methods, java_check_abstract_methods,
17623         maybe_build_primttype_type_ref): New function prototype.
17624         * parse.y (conver.h): Include.
17625         (INSTANCEOF_TK): Tagged <operator>.
17626         (single_type_import_declaration): Use REGISTER_IMPORT macro.
17627         (relational_expression:): Build binop for instanceof.
17628         (java_push_parser_context): Remember ctxp->gclass_list across
17629         contexts.
17630         (java_pop_parser_context): Simply return if no context
17631         exists. Remember gclass_list across contexts.
17632         (issue_warning_error_from_context): New function.
17633         (parse_error_context): Don't setup ctxp->elc here. Call
17634         issue_warning_error_from_context instead.
17635         (parse_warning_context): Likewise.
17636         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
17637         setup. Link new class/interface to ctxp->gclass_list.
17638         (add_superinterfaces): Register interface as incomplete if not
17639         loaded.
17640         (create_class): Remember class unqualified name in
17641         ctxp->current_parsed_class_un. Check class deprecation.
17642         (register_fields): Check field deprecation. Remember static final
17643         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
17644         processing INIT.
17645         (method_header): New local variable ORIG_ARG. Use unqualified
17646         current class name for check on constructor errors. Promote return
17647         type if of record type. Argument list fix moved in
17648         fix_method_argument_names, called here. Check method deprecation.
17649         (fix_method_argument_names): New function.
17650         (method_declarator): Promote record typed arguments.
17651         (safe_layout_class): Check class methods before layout.
17652         (java_complete_class): Compute field layout when patched.
17653         (do_resolve_class): Try to load class after having it renamed
17654         after the package name.
17655         (get_printable_method_name): Use DECL_CONTEXT.
17656         (reset_method_name): New function.
17657         (check_method_redefinition): Use reset_method_name.
17658         (java_check_regular_methods): New local variable
17659         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
17660         names for error report. Check for compile-time error when method
17661         found has default (package) access.
17662         (java_check_abstract_methods): Now takes an interface DECL node as
17663         an argument. Also reinstall real name on unchecked
17664         overriding/hiding methods for error report.
17665         (java_check_methods): Fixed leading comment. Get classes to verify
17666         from ctxp->gclass_list. Use CHECK_METHODS macro and set
17667         CLASS_METHOD_CHECKED_P on class verification.
17668         (lookup_java_method2): Get real method name if necessary.
17669         (find_in_imports): Don't check package class access here.
17670         (resolve_package, lookup_package_type): New functions.
17671         (java_layout_classes): Fixed leading comment. Take classes to be
17672         laid out from ctxp->gclass_list.
17673         (java_complete_expand_methods): Don't expand native and abstract
17674         methods.
17675         (java_expand_classes): New function.
17676         (resolve_expression_name): Use additional argument ORIG.  Retrieve
17677         values of static final field of primitive types.
17678         (resolve_field_access): Handles static final field of promotive
17679         type.
17680         (resolve_qualified_expression_name): Handle STRING_CST as
17681         primaries and package name resolution. Check deprecation on found
17682         decls. Set where_found and type_found on non static field resolved
17683         during qualification. Layout non primitive field decl types.
17684         (check_deprecation): New function.
17685         (maybe_access_field): Simplified.
17686         (patch_method_invocation_stmt): Local variable CLASS_TYPE
17687         removed. Reverse method's argument when primary is a type. Don't
17688         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
17689         instead. Include abstract class in the list of class searchable
17690         for constructors. Use DECL_CONTEXT of found method for access
17691         checks. Check method deprecation.
17692         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
17693         converting arguments. Handle INVOKE_INTERFACE.
17694         (lookup_method_invoke): Search constructor using existing
17695         infrastructure (don't rely on lookup_java_constructor anymore).
17696         (find_applicable_accessible_methods_list): Extra argument flag
17697         LC. Now include constructor in the search.
17698         (qualify_ambiguous_name): Conditional expression are primaries.
17699         (not_initialized_as_it_should_p): static final are always
17700         initialized.
17701         (java_complete_tree): Pass extra NULL argument to
17702         resolve_expression_name. Stricter test to carry on patching
17703         assignments. New case for INSTANCEOF_EXPR.
17704         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
17705         (check_final_assignment, maybe_build_primttype_type_ref): New
17706         functions.
17707         (patch_assignment): Detect resolved static finals and carry normal
17708         assignment error check on them. Inline PRIMTYPE.TYPE read access.
17709         (try_builtin_assignconv): Access constant 0 on all primitive
17710         types.
17711         (valid_builtin_assignconv_identity_widening_p): Accept identical
17712         types. Accept all promoted type on int type.
17713         (valid_ref_assignconv_cast_p): Accept a null pointer to be
17714         assigned to a reference.
17715         (valid_method_invocation_conversion_p): Accept to check null
17716         pointers.
17717         (build_binop): Merge declaration and initialization of local
17718         variable BINOP.
17719         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
17720         numeric types. Improved validity test for qualify operators on
17721         references.
17722         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
17723         and PREINCREMENT_EXPR. Also detect resolved static finals of a
17724         primitive type and issue the appropriate error message.
17725         (resolve_type_during_patch): Mark class loaded when resolved.
17726         (patch_cast): Allow null to be cased to reference types.
17727         (build_null_of_type): New function.
17728         (patch_array_ref): Handle array on references correctly.
17729         (patch_return): Removed unused local variable MODIFY. Force
17730         boolean to be returned as integers. Allows null to be returned by
17731         a function returning a reference.
17732         * typeck.c (convert_to_integer, convert_to_real,
17733         convert_to_pointer): Prototypes moved to convert.h
17734         (lookup_argument_method): Use method real name, if necessary.
17735
17736 1998-10-30  Tom Tromey  <tromey@cygnus.com>
17737
17738         * class.c (build_class_ref): Changed name of primitive classes to
17739         start with `_Jv_'.
17740
17741         * class.c (make_class_data): Renamed fields: nmethods to
17742         method_count, method_count to dtable_method_count.  Always set
17743         `state' field to 0.
17744         * decl.c (init_decl_processing): Likewise.
17745
17746 1998-10-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17747
17748         * class.c (layout_class): Don't mangle <finit>, produce
17749         __finit<class> instead. Don't verify artificial methods.
17750         * decl.c (finit_identifier_node): New declared global.
17751         (init_decl_processing): finit_identifier_node initialized.
17752         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
17753         * java-tree.h (finit_identifier_node): Declared as extern.
17754         (struct lang_decl): New field called_constructor.
17755         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
17756         (CLASS_HAS_FINIT_P): New macro.
17757         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
17758         explicit constructor invocation.
17759         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
17760         CALL_SUPER_CONSTRUCTOR_P): New macros.
17761         (write_classfile): Added prototype.
17762         * jcf-parse.c (jcf_parse_source): Parse and remember for
17763         generation if the file was seen on the command line.
17764         (parse_source_file): Don't write the class file here.
17765         (yyparse): Loop on files rewritten. Set current_jcf.
17766         (parse_zip_file_entries): Parse class file only if it was found.
17767         * lang.c (init_parse): Don't open command line provided filename
17768         here.
17769         (lang_parse): Don't set main_jcf anymore.
17770         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
17771         (JCONSTRUCTOR_CHECK): New macro.
17772         (JBSC_TYPE_P): New macro.
17773         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
17774         (COMPLETE_CHECK_OP_2): New macro.
17775         (struct parse_ctxt): New field explicit_constructor_p.
17776         (check_class_interface_creation): Fixed prototype indentation.
17777         (patch_method_invocation_stmt): Prototype reflects added argument.
17778         (patch_invoke): Likewise.
17779         (complete_method_declaration, build_super_invocation,
17780         verify_constructor_circularity,
17781         build_this_super_qualified_invocation, get_printable_method_name,
17782         patch_conditional_expr, maybe_generate_finit, fix_constructors,
17783         verify_constructor_super, create_artificial_method,
17784         start_artificial_method_body, end_artificial_method_body,
17785         generate_field_initialization_code): New function prototypes.
17786         * parse.y: Fixed leading comment
17787         (constructor_header:, constructor_body:, block_end:): Rules tagged
17788         <node>.
17789         (type_declaration:): Call maybe_generate_finit.
17790         (method_declaration:): Action for method_body: placed in new
17791         function complete_method_declaration, called here.
17792         (constructor_declaration:): Defined actions. Removed leading
17793         FIXME.
17794         (constructor_header:): New rule with action.
17795         (constructor_body:): Rule rewritten using block_begin: and
17796         block_end:. Defined actions.
17797         (constructor_declarator:, explicit_constructor_invocation:):
17798         Defined actions.
17799         (block:): Use new rules block_begin: block_end:.
17800         (block_begin:, block_end:): New rules and actions.
17801         (block_statements:): Fixed error message for explicit
17802         constructors.
17803         (method_invocation:): Call build_this_super_qualified_invocation
17804         if primary is `this' or `super' was seen.
17805         (conditional_expression:): Action defined.
17806         (extra_ctxp_pushed_p): New static global flag.
17807         (java_parser_context_save_global): Create parser context if
17808         necessary. Use extra_ctxp_pushed_p to remember it.
17809         (java_parser_context_restore_global): Pop extra parser context if
17810         one exists.
17811         (build_array_from_name): Array on primitive types are marked
17812         loaded.
17813         (register_fields): Restore new name in field initializer
17814         expression if type was altered. Non static fields initialized upon
17815         declaration marked initialized.
17816         (maybe_generate_finit): New function.
17817         (maybe_generate_clinit): Use create_artificial_method,
17818         start_artificial_method_body, end_artificial_method_body. Generate
17819         debug info for enclosed initialization statements.
17820         (method_header): Fixed leading comment. Check constructor
17821         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
17822         accordingly.
17823         (complete_method_declaration, constructor_circularity_msg,
17824         verify_constructor_circularity): New functions.
17825         (get_printable_method_name): New function.
17826         (check_method_redefinition): Don't rename <finit> methods. Fix
17827         declared constructor names. Error message for
17828         constructors modified.
17829         (java_check_regular_methods): Local variable seen_constructor
17830         renamed saw_constructor. Skip verification on constructors. Create
17831         default constructor with create_artificial_method.
17832         (java_check_methods): Removed unnecessary empty line.
17833         (create_artificial_method, start_artificial_method_body,
17834         end_artificial_method_body): New functions.
17835         (java_layout_classes): Changed leading comment. Reverse fields
17836         list if necessary. Always layout java.lang.Object if being
17837         defined.
17838         (java_complete_expand_methods): Verify constructor circularity.
17839         (java_complete_expand_method): Call fix_constructor on
17840         constructors.  Local variable no_ac_found removed. Restore
17841         bindings if method body expansion failed.
17842         (fix_constructors, verify_constructor_super,
17843         generate_field_initialization_code): New function.
17844         (java_expand_classes): Fixed leading comment. Write class file
17845         here.
17846         (resolve_expression_name): Check for illegal instance variable
17847         usage within the argument scope of an explicit constructor
17848         invocation.
17849         (resolve_qualified_expression_name): Pass extra from_super flag
17850         when invoking patch_method_invocation_stmt. New case for
17851         conditional expression when used as a primary. Check for error
17852         when acquiring super.
17853         (patch_method_invocation_stmt): Added extra argument super. New
17854         local variable is_static_flag. Set class_to_search according to
17855         the nature of the constructor invocation. Don't add `this'
17856         argument when expanding NEW_CLASS_EXPR. Check for illegal method
17857         invocation within the argument scope of explicit constructor
17858         invocation. Set is_static according to is_static_flag. Provide
17859         extra `super' argument to patch_invoke invocation.
17860         (patch_invoke): New argument from_super. Loop on arguments
17861         indentation fixed. Pass from_super to invocation_mode. New switch
17862         case INVOKE_SUPER. Fixed error message in switch default case.
17863         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
17864         value.
17865         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
17866         (lookup_method_invoke): Fixed prototypes in candidates list. Error
17867         message takes constructors into account.
17868         (find_applicable_accessible_methods_list): Fixed indentation.
17869         (qualify_ambiguous_name): Take explicit constructor invocation
17870         into account. Deal with a conditional expression as a primary to
17871         a method call.
17872         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
17873         case. Added extra argument to patch_method_invocation_stmt.
17874         Register calls made to explicit constructor `this'. Don't call
17875         save_expr in ARRAY_REF case when emitting class files. Check for
17876         illegal use of this when expanding explicit constructor invocation
17877         arguments.
17878         (complete_function_arguments): Set and reset parser context
17879         explicit_constructor_p field value when appropriate.
17880         (build_super_invocation, build_this_super_qualified_invocation):
17881         New functions.
17882         (patch_assignment): Fixed typo.
17883         (patch_unaryop): Check on final fields occurs only when a decl
17884         exits.
17885         (patch_return): Take constructors into account.
17886         (patch_conditional_expr): New function.
17887         * typeck.c (build_java_signature): Removed unnecessary empty line.
17888
17889 1998-10-28  Jeffrey A Law  (law@cygnus.com)
17890
17891         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
17892
17893 1998-10-28  Tom Tromey  <tromey@cygnus.com>
17894
17895         * decl.c (init_decl_processing): Renamed fields.
17896         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
17897         interface_len, msize fields.
17898
17899         * class.c (make_class_data): Removed subclass_head and
17900         subclass_next fields.
17901         * decl.c (init_decl_processing): Removed subclass_head and
17902         subclass_next fields.
17903
17904 1998-10-28  Jeffrey A Law  (law@cygnus.com)
17905
17906         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
17907         * mangle.c (emit_unicode_mangled_name): Similarly.
17908
17909 1998-10-26  Nick Clifton  <nickc@cygnus.com>
17910
17911         * jcf-parse.c (get_constant): Place braces around code to compute
17912         'd' when REAL_ARITHMETIC is not defined.
17913
17914 1998-10-25  H.J. Lu  (hjl@gnu.org)
17915
17916         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
17917         dependency.
17918
17919 1998-10-23  Tom Tromey  <tromey@cygnus.com>
17920
17921         * lang-specs.h: `.zip' files are input to jc1.
17922
17923 1998-10-22  Per Bothner  <bothner@cygnus.com>
17924
17925         * jvspecs.c:  Add (but don't enable) support for combining multiple
17926         .class and .java input filenames to a single jc1 invocation.
17927         Add support for -C flag (copile to .class files).
17928         Translate -classpath and -CLASSPATH arguments.
17929         * lang-specs.h:  Don't set %2 spec.
17930
17931 1998-10-22  Tom Tromey  <tromey@cygnus.com>
17932
17933         * jcf-path.c (add_entry): Don't add trailing separator if entry is
17934         a .zip file.
17935         (add_path): Don't add trailing separator to non-empty path
17936         elements.
17937
17938         * lang.c (lang_decode_option): Check for -fclasspath and
17939         -fCLASSPATH before examining other `-f' options.
17940
17941         * java-tree.h (finalize_identifier_node): Don't declare.
17942         * class.c (make_class_data): Don't push "final" field.
17943         * decl.c (init_decl_processing): Don't push "final" field.
17944         (finalize_identifier_node): Removed.
17945         (init_decl_processing): Don't set finalize_identifier_node.
17946
17947         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
17948
17949 1998-10-11  Anthony Green  <green@cygnus.com>
17950
17951         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
17952         (JV_SCAN_SOURCES): New macro.
17953         (JCF_DUMP_SOURCES): Likewise.
17954         (jcf-dump$(exeext)): New target.
17955         (jv-scan$(exeext)): New target.
17956
17957 1998-10-22  Tom Tromey  <tromey@cygnus.com>
17958
17959         * Makefile.in (LEX): Removed.
17960         (LEXFLAGS): Likewise.
17961         (SET_BISON): New macro.
17962         (BISON): Removed.
17963         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
17964         spurious diffs in parse.c.
17965         ($(PARSE_SCAN_C)): Likewise.
17966         (PARSE_DIR): New macro.
17967         (PARSE_C): Use it.
17968         (PARSE_SCAN_C): Likewise.
17969         (PARSE_RELDIR): New macro.
17970
17971         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
17972
17973         * jcf-io.c (find_class): Use saw_java_source to determine when to
17974         look for `.java' file.
17975         * jcf-parse.c (saw_java_source): New global.
17976         (yyparse): Set it if `.java' file seen.
17977
17978         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
17979         (GCJH_SOURCES): Likewise.
17980         * Makefile.in (datadir): New macro.
17981         (libjava_zip): Likewise.
17982         (JAVA_OBJS): Added jcf-path.o.
17983         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
17984         (../gcjh$(exeext)): Likewise.
17985         (jcf-path.o): New target.
17986         * java-tree.h (fix_classpath): Removed decl.
17987         * jcf-parse.c (fix_classpath): Removed.
17988         (load_class): Don't call fix_classpath.
17989         * parse.y (read_import_dir): Don't call fix_classpath.
17990         * lex.h: Don't mention classpath.
17991         * lex.c (java_init_lex): Don't initialize classpath.
17992         * jcf-io.c (classpath): Removed global.
17993         (find_class): Use jcf_path iteration functions.  Correctly search
17994         class path for .java file.
17995         (open_in_zip): New argument `is_system'.
17996         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
17997         classpath-related options.
17998         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
17999         and -I.
18000         (lang_init): Call jcf_path_init.
18001         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
18002         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
18003         Correctly put braces around second string in each entry.
18004         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
18005         classpath-related options.
18006         (help): Updated for new options.
18007         * jcf.h: Declare functions from jcf-path.c.  Don't mention
18008         `classpath' global.
18009         * jcf-path.c: New file.
18010
18011         * jcf-depend.c: Include jcf.h.
18012
18013         * jcf-write.c (localvar_alloc): Returns `void'.
18014         (localvar_free): Removed unused variable.
18015
18016         * lang.c (OBJECT_SUFFIX): Define if not already defined.
18017         (init_parse): Use OBJECT_SUFFIX, not ".o".
18018
18019 1998-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18020
18021         * class.c (emit_register_classes): Renamed from
18022         emit_register_class.
18023         * java-tree.h (emit_register_classes): Prototype renamed from
18024         emit_register_class.
18025         * jcf-parse.c (yyparse): Call emit_register_classes once before
18026         returning.
18027         * parse.y (java_expand_classes): No longer register classes.
18028
18029 1998-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18030
18031         * class.c (is_compiled_class): New local variable
18032         seen_in_zip. Identify classes found in currently compiled source
18033         file(s).
18034         * decl.c (complete_start_java_method): Fixed typo.
18035         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
18036         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
18037         (CLASS_P): Moved around.
18038         (java_parse_abort_on_error): Macro moved from jcf-parse.c
18039         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
18040         java-tree.h
18041         (jcf_parse_source): Changed leading comment. Removed unnecessary
18042         fclose and CLASS_FROM_SOURCE_P marking.
18043         (parse_source_file): New local variables remember_for_generation
18044         and filename. Mark parsed file name identifier node. Removed block
18045         executed when parse_only was null. Set remember_for_generation.
18046         Use it as an argument to java_pop_parser_context.
18047         (yyparse): New local variables several_files, list, next node and
18048         current_file_list. Split ampersand separated file names into
18049         current_file_list. Iterate through the list and parse accordingly.
18050         * parse.h (java_pop_parser_context): New function prototype.
18051         * parse.y (ctxp_for_generation): New static global variable.
18052         (java_pop_parser_context): New argument generate. Link popped ctxp
18053         to ctxp_for_generation list accordingly.
18054         (java_complete_expand_methods): Fixed indentation.
18055         (java_expand_classes): New function.
18056
18057 1998-10-17  Per Bothner  <bothner@cygnus.com>
18058
18059         * Makefile.in:  Link with libiberty.a instead of memmove.o.
18060
18061 1998-10-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18062
18063         * lex.c (setjmp.h): No longer included.
18064         * lex.h (setjmp.h): Included.
18065         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
18066         (duplicate_declaration_error_p): Renamed from
18067         duplicate_declaration_error.
18068         (build_array_from_name): New function prototype.
18069         * parse.y (setjmp.h): No longer included.
18070         (variable_declarator_id): Define action.
18071         (build_array_from_name): New function.
18072         (duplicate_declaration_error_p): Renamed from
18073         duplicate_declaration_error.  Fixed leading comment.
18074         (register_fields): Main `for' loop reorganized. Uses
18075         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
18076         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
18077         build_array_from_name.
18078         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
18079         types.
18080         (read_import_dir): Don't try to skip `.' and `..'.
18081         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
18082         build_array_from_name. Main `for' loop reorganized.
18083         (resolve_qualified_expression_name): When building access to a
18084         field, use the type where the field was found, not its own type.
18085         (maybe_access_field): Use field DECL_CONTEXT if the type where the
18086         field was found is null.
18087         (qualify_ambiguous_name): Sweep through all successive array
18088         dimensions.
18089
18090 1998-10-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18091
18092         * java-tree.h (pop_labeled_block, lang_printable_name,
18093         maybe_add_interface, set_super_info, get_access_flags_from_decl,
18094         interface_of_p, inherits_from_p, fix_classpath,
18095         complete_start_java_method, emit_handlers, init_outgoing_cpool,
18096         make_class_data, register_class, alloc_name_constant): New
18097         function prototypes.
18098         * lang.c (lang_decode_option): Set argc argument unused. Fixed
18099         indentation. Added cast to remove warning.
18100         (lang_printable_name): Set v argument unused.
18101         (lang_print_error): Added argument to lang_printable_name call.
18102         (java_dummy_print, print_lang_decl, print_lang_type,
18103         print_lang_identifier, lang_print_xnode): All argument marked
18104         unused.
18105         * lex.c (java_unget_unicode): Removed unnecessary argument.
18106         (java_allocate_new_line): Unused local variable is gone.
18107         (java_read_char): Added parenthesis in expressions to remove
18108         warnings.  Added final return statement.
18109         (java_read_unicode): Added parenthesis in expression to remove
18110         warning.
18111         (java_parse_end_comment): Fixed java_unget_unicode invocation.
18112         (java_parse_escape_sequence): Likewise.
18113         (java_lex): Unused local variables are gone. Fixed
18114         java_unget_unicode invocation.
18115         * lex.h (set_float_handler): Prototype added when JC1_LITE not
18116         defined.
18117         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
18118         lang_printable_name invocation in macro.
18119         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
18120         Likewise.
18121         (duplicate_declaration_error): Suppressed unused argument in
18122         prototype.
18123         (identical_subpath_p): Function declaration is gone.
18124         (patch_invoke): Suppressed unused argument in prototype.
18125         (patch_cast, build_labeled_block, check_thrown_exceptions):
18126         Likewise.
18127         * parse.y (setjmp.h): Included
18128         (toplev.h): Likewise.
18129         (field_declaration:): Suppressed unused local
18130         (label_decl:): Fixed build_labeled_block invocation.
18131         (java_pop_parser_context): Put extra parenthesis around assignment
18132         in if.
18133         (yyerror): Suppressed unused local variables.
18134         (variable_redefinition_error): Fixed lang_printable_name
18135         invocation.
18136         (create_interface): Suppressed unused local variables.
18137         (create_class): Likewise.
18138         (duplicate_declaration_error): Suppressed unused argument. Fixed
18139         lang_printable_name invocation.
18140         (register_fields): Suppressed unused local variable. Fixed
18141         duplicate_declaration_error invocation.
18142         (method_header): Suppressed unused local variable.
18143         (method_declarator, parser_check_super): Likewise.
18144         (java_complete_class): Suppressed unused local variable. Fixed
18145         fatal error message.
18146         (complete_class_report_errors): Added default: in switch.
18147         (java_check_regular_methods): Fixed lang_printable_name
18148         invocations.
18149         (check_throws_clauses): Likewise.
18150         (java_check_abstract_methods): Suppressed unused local
18151         variable. Fixed lang_printable_name invocation.
18152         (read_import_entry): Added supplemental return statement.
18153         (read_import_dir): Suppressed unused local variables.
18154         (check_pkg_class_access, declare_local_variables): Likewise.
18155         (source_start_java_method): Suppressed unused extern variable
18156         declarations
18157         (expand_start_java_method): Suppressed unused extern and local
18158         variable declarations.
18159         (java_complete_expand_methods): Likewise.
18160         (java_complete_expand_method): Suppressed unused local variables.
18161         (make_qualified_name): Likewise.
18162         (resolve_qualified_expression_name): Added default: in
18163         switch. Fixed lang_printable_name invocation.
18164         (class_instance_creation_expression): Added parenthesis around
18165         expressions.
18166         (patch_method_invocation_stmt): Fixed lang_printable_name and
18167         patch_invoke invocations.
18168         (check_for_static_method_reference): Fixed lang_printable_name
18169         invocation.
18170         (patch_invoke): Suppressed unused arguments and local variables.
18171         (lookup_method_invoke): Suppressed unused local variables.
18172         (qualify_ambiguous_name): Added default: in switch.
18173         (identical_subpath_p): Function removed.
18174         (patch_assignment): Suppressed unused local variables. Suppressed
18175         unnecessary if statement. Fixed lang_printable_name invocations.
18176         (try_builtin_assignconv): Fixed lang_printable_name invocations.
18177         (valid_ref_assignconv_cast_p): Parenthesis around
18178         expression. Suppressed unused local variables.
18179         (build_binop): Suppressed unused local variables. fixed
18180         lang_printable_name invocations.
18181         (string_constant_concatenation): Suppressed unused local
18182         variables.
18183         (patch_unaryop): Fixed lang_printable_name invocation.
18184         (patch_cast): Suppressed unnecessary argument. Fixed
18185         lang_printable_name invocation.
18186         (patch_array_ref): Fixed lang_printable_name invocation.
18187         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
18188         (build_labeled_block): Suppressed unused argument.
18189         (generate_labeled_block): Fixed build_labeled_block invocation.
18190         (build_loop_body): Suppressed unused local variables.
18191         (patch_loop_statement): Likewise.
18192         (patch_exit): Fixed lang_printable_name invocation.
18193         (patch_switch_statement): Likewise.
18194         (case_identity): First argument marked unused.
18195         (patch_try_statement): Fixed lang_printable_name invocations.
18196         (patch_synchronized_statement, patch_throw_statement): Likewise.
18197         (check_thrown_exceptions): Fixed check_thrown_exceptions and
18198         lang_printable_name invocations.
18199         (check_thrown_exceptions_do): Suppressed unused argument.
18200
18201 1998-10-14  Tom Tromey  <tromey@cygnus.com>
18202
18203         * jcf-write.c (write_classfile): Add output class file as target.
18204         * lang-options.h: Added -MD, -MMD, -M, and -MM.
18205         * jcf.h: Added declarations for dependency-tracking functions.
18206         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
18207         * lang.c (lang_decode_option): Recognize -MD and -MMD.
18208         (finish_parse): Call jcf_dependency_write.
18209         (dependency_tracking): New global.
18210         (DEPEND_SET_FILE): New define.
18211         (DEPEND_ENABLE): New define.
18212         (init_parse): Enable dependency tracking if required.
18213         Include "flags.h".
18214         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
18215         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
18216         (../gcjh$(exeext)): Likewise.
18217         (jcf-depend.o): New target.
18218         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
18219         (GCJH_SOURCES): Likewise.
18220         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
18221         dep_name argument.
18222         (find_classfile): Added dep_name argument.
18223         (find_class): Compute name of dependency.
18224         (open_in_zip): Call jcf_dependency_add_file.
18225         * gjavah.c (output_file): No longer global.
18226         (usage): Don't mention "gjavah".
18227         (help): Likewise.
18228         (java_no_argument): Likewise.
18229         (version): Likewise.
18230         (main): Recognize and handle -M family of options.
18231         (print_mangled_classname): Return is void.
18232         (process_file): Handle case where output is suppressed.
18233         (HANDLE_END_FIELD): Likewise.
18234         (HANDLE_METHOD): Likewise.
18235         * jcf-depend.c: New file.
18236
18237 1998-10-13  Jeffrey A Law  (law@cygnus.com)
18238
18239         * java-tree.def: Add missing newline at EOF.
18240
18241 1998-10-13  Tom Tromey  <tromey@cygnus.com>
18242
18243         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
18244         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
18245         function.
18246         Include <config.h> and "system.h".
18247         (disassemble_method): Undefine RET to avoid clash with
18248         config/i386/i386.h.
18249
18250 1998-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18251
18252         * decl.c (runtime_exception_type_node, error_exception_type_node):
18253         New global variables.
18254         (init_decl_processing): Initialized.
18255         * expr.c (java_lang_expand_expr): Set caught exception type to
18256         null if catch handler argument doesn't exit.
18257         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
18258         tree codes.
18259         * java-tree.h (runtime_exception_type_node,
18260         error_exception_type_node): Global variables declared.
18261         (DECL_FUNCTION_THROWS): New macro.
18262         (DECL_FUNCTION_BODY): Modified comment.
18263         (DECL_SPECIFIC_COUNT): Likewise.
18264         (struct lang_decl): New field throws_list.
18265         (IS_UNCHECKED_EXPRESSION_P): New macro.
18266         * lex.c (java_lex): Generate location information for THROW_TK.
18267         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
18268         EXCEPTIONS_P): New macros.
18269         (enum jdep_code): New value JDEP_EXCEPTION.
18270         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
18271         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
18272         PATCH_METHOD_RETURN_ERROR): New macros.
18273         (patch_method_invocation_stmt): Added new argument to prototype.
18274         (patch_synchronized_statement, patch_throw_statement,
18275         check_thrown_exceptions, check_thrown_exceptions_do,
18276         purge_unchecked_exceptions, check_throws_clauses): New function
18277         prototypes.
18278         * parse.y Fixed typo in keyword section.
18279         (throw:): Rule tagged <node>.
18280         (THROW_TK): Keyword tagged <operator>.
18281         (method_header:): Last argument to call to method_header passed
18282         from throws: rule.
18283         (throws:, class_type_list:, throw_statement:,
18284         synchronized_statement:, synchronized:): Defined actions.
18285         (method_header): New local variable current. Register exceptions
18286         from throws clause.
18287         (java_complete_tree): Complete and verify exceptions from throws
18288         clause.
18289         (complete_class_report_errors): Error message on exceptions not
18290         found
18291         (java_check_regular_methods): Fixed typo. Shortcut on private
18292         overriding methods. Changed error message on method
18293         redefinition. Check for throws clause compatibility.
18294         (check_throws_clauses): New function.
18295         (java_check_abstract_methods): Use DECL_NAME for wfl or current
18296         method. Changed error message on method redefinition.
18297         (currently_caught_type_list): New static variable.
18298         (java_complete_expand_methods): Purge unchecked exceptions from
18299         throws clause list. Call PUSH_EXCEPTIONS before walk and
18300         POP_EXCEPTIONS after.
18301         (resolve_qualified_expression_name): Pass new argument as NULL to
18302         patch_method_invocation_stmt.
18303         (patch_method_invocation_stmt): New argument ref_decl. Invoke
18304         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
18305         argument list when appropriate. Use new argument if non null to
18306         store selected method decl.
18307         (patch_invoke): Convert if necessary args of builtin types before
18308         forming CALL_EXPR. Argument list no longer reversed here.
18309         (invocation_mode): Treat final methods as static methods.
18310         (java_complete_tree): New cases for THROW_EXPR: and
18311         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
18312         function call.
18313         (complete_function_arguments): No more RECORD_TYPE
18314         conversion. Function parameter nodes no longer saved.
18315         (valid_ref_assignconv_cast_p): Avoid handling null type.
18316         (patch_binop): Fixed null constant reference handling.
18317         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
18318         BUILD_THROW macros.
18319         (patch_try_statement): Fixed comments. Record caught types in
18320         list, push the list, expand try block and pop the list.
18321         (patch_synchronized_statement, patch_throw_statement,
18322         check_thrown_exceptions, check_thrown_exceptions_do,
18323         purge_unchecked_exceptions): New functions.
18324         * typeck.c (lookup_argument_method): Allow WFL in place of method
18325         DECL_NAME during method definition check
18326
18327 1998-10-09  Tom Tromey  <tromey@cygnus.com>
18328
18329         * gjavah.c (decode_signature_piece): New function.
18330         (print_c_decl): Use it.  Added `name_override' argument.
18331         (print_method_info): Use name_override argument to print_c_decl.
18332         (seen_fields): Removed.
18333         (print_field_info): Don't update seen_fields.
18334         (struct method_name): New structure.
18335         (method_name_list): New global.
18336         (print_method_info): Add new method to list of methods.
18337         (name_is_method_p): New function.
18338         (print_field_info): If field name has same name as method, then
18339         change field name.
18340         (process_file): Parse methods before fields.
18341         (field_pass): New global.
18342         (HANDLE_END_FIELD): Take field_pass into account.
18343
18344 1998-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18345
18346         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
18347         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
18348
18349 1998-10-03  Anthony Green  <green@cygnus.com>
18350
18351         * jvspec.c: Fix bug in jvgenmain_spec patch.
18352
18353 1998-10-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18354
18355         * Makefile.in (lang.o:): Install dependency on java-tree.def.
18356         * decl.c (soft_exceptioninfo_call_node): New global variable.
18357         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
18358         takes extra integer argument. soft_exceptioninfo_call_node
18359         initialized.
18360         * except.c (java_set_exception_lang_code): New function
18361         (method_init_exceptions): Called here.
18362         (prepare_eh_table_type): New function.
18363         (expand_end_java_handler): Called here.
18364         * expr.c (build_java_throw_out_of_bounds_exception): Now features
18365         one argument. Modified generation of call to
18366         soft_badarrayindex_node to use new argument.
18367         (build_java_arrayaccess): Pass faulty index value to
18368         build_java_throw_out_of_bounds_exception.
18369         (generate_name): New function.
18370         (java_lang_expand_expr): New local variables node, current,
18371         has_finally_p. Expand TRY_EXPR node.
18372         (process_jvm_instruction): Replace top of the stack with thrown
18373         object reference when entering exception handler.
18374         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
18375         specific tree codes.
18376         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
18377         global.
18378         (DECL_SPECIFIC_COUNT): New macro.
18379         (prepare_eh_table_type, java_set_exception_lang_code,
18380         generate_name): New function declarations.
18381         (match_java_method): Declaration deleted.
18382         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
18383         macros.
18384         * lex.c (TRY_TK, CATCH_TK): Generate location information.
18385         * parse.h (redefinition_error, refine_accessible_methods_list,
18386         can_cast_to_p): Function declaration removed.
18387         (classitf_redefinition_error, variable_redefinition_error,
18388         parse_jdk1_1_error, find_applicable_accessible_methods_list,
18389         find_most_specific_methods_list, argument_types_convertible,
18390         enter_a_block, valid_builtin_assignconv_identity_widening_p,
18391         valid_cast_to_p, valid_method_invocation_conversion_p,
18392         try_reference_assignconv, add_stmt_to_compound,
18393         build_jump_to_finally, build_tree_list, patch_try_statement,
18394         java_get_catch_block): New function declarations.
18395         * parse.y (string_buffer_type): Global variable deleted.
18396         (group_of_labels, catches, catch_clause, catch_clause_parameter,
18397         finally): Rules tagged <node>.
18398         (TRY_TK, CATCH_TK): Token tagged <operator>.
18399         (class_body_declaration:, class_member_declaration:,
18400         formal_parameter:, explicit_constructor_invocation:,
18401         interface_member_declaration:, constant_declaration:,
18402         primary_no_new_array:, class_instance_creation_expression:,
18403         array_creation_expression:): Issue error on unsuported JDK1.1
18404         features.
18405         (try_statement:, catches:, finally:): Define actions.
18406         (catch_clause_parameter): New rule.
18407         (catch_clause:): Use new rule catch_clause_parameter.
18408         (parse_jdk1_1_error): New function.
18409         (redefinition_error): Renamed classitf_redefinition_error.
18410         (variable_redefinition_error): New function.
18411         (check_class_interface_creation): Call
18412         classitf_redefinition_error.
18413         (java_complete_tree): Added error message on JDEP_TYPE: case.
18414         (complete_class_report_errors): Fixed indentation.
18415         (declare_local_variables): Call variable_redefinition_error.
18416         (source_end_java_method): Call java_set_exception_lang_code and
18417         emit_handlers where appropriate.
18418         (java_method_add_stmt): Call add_stmt_to_block.
18419         (add_stmt_to_block): New function.
18420         (lookup_method_invoke): Fixed outside comment. new local variable
18421         candicates.  Call find_applicable_accessible_methods_list and
18422         find_most_specific_methods_list when searching for a
18423         method. Modified error report to list possible candidates when
18424         applicable.
18425         (find_applicable_accessible_methods_list,
18426         find_most_specific_methods_list, argument_types_convertible): New
18427         function.
18428         (refine_accessible_methods_list): Function deleted.
18429         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
18430         expr (if applicable) before calling patch_array_ref.
18431         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
18432         (enter_block): Fixed comment.
18433         (enter_a_block): New function.
18434         (patch_assignment): Reorganized. Call try_reference_assignconv for
18435         references. Call valid_cast_to_p instead of can_cast_to_p.
18436         (try_reference_assignconv,
18437         valid_builtin_assignconv_identity_widening_p): New functions.
18438         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
18439         (valid_cast_to_p, valid_method_invocation_conversion_p): New
18440         functions.
18441         (build_string_concatenation): Don't resolve StringBuffer.
18442         (patch_cast): Fixed inverted arguments.
18443         (patch_array_ref): Code to save array expr deleted. Call
18444         valid_cast_to_p instead of can_cast_to_p.
18445         (generate_labeled_block): Call generate_name.
18446         (build_jump_to_finally, build_try_statement, java_get_catch_block,
18447         patch_try_statement): New functions.
18448         * typeck.c (match_java_method): Function deleted.
18449
18450 1998-10-02  Anthony Green  <green@cygnus.com>
18451
18452         * jvspec.c: jvgenmain_spec uses different temporary file names.
18453
18454 1998-10-02  Anthony Green  <green@cygnus.com>
18455
18456         * jvspec.c (lang_specific_driver): Fail if user specifies
18457         --main= when not linking.
18458
18459 1998-09-28  Tom Tromey  <tromey@cygnus.com>
18460
18461         * class.c (make_class_data): Push value for `thread' field.
18462         * decl.c (init_decl_processing): Added `thread' field to class.
18463
18464         * class.c (add_field): Always make static fields externally
18465         visible.
18466
18467 1998-09-26  Anthony Green  <green@cygnus.com>
18468
18469         * expr.c (build_java_athrow,
18470         build_java_throw_out_of_bounds_exception, expand_invoke,
18471         build_newarray, expand_java_multianewarray, build_java_monitor):
18472         Update comments to reflect _Jv_* function names.
18473
18474 1998-09-25  Per Bothner  <bothner@cygnus.com>
18475
18476         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
18477         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
18478         * parse.y (expand_start_java_method):  Likewise.
18479
18480 1998-09-24  Per Bothner  <bothner@cygnus.com>
18481
18482         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
18483
18484         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
18485         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
18486         * expr.c:  Remove no-longer-needed calls to promote_type.
18487         * decl.c (give_name_to_locals):  Liekwise.
18488         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
18489         * parse.y:  Add/remove promote_type calls as appropriate.
18490         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
18491         (parse_signature_string):  Likewise.
18492         (build_java_array_type):  Fix for now signature convenions.
18493
18494         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
18495
18496 1998-09-23  Tom Tromey  <tromey@cygnus.com>
18497
18498         * class.c (init_class_processing): libjava function renamed to
18499         _Jv_RegisterClass.
18500
18501 1998-09-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18502
18503         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
18504         * java-tree.def: Fixed DEFTREECODE third argument.
18505         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
18506         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
18507         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
18508         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
18509         JAVA_THIS_EXPR): Now replaced by tree code definitions.
18510         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
18511         * lang.c (java_tree_code_type, java_tree_code_length,
18512         java_tree_code_name): New arrays.
18513         (lang_init): Append Java tree node definitions to Gcc ones.
18514         * lex.c (expression_obstack): Declared as extern when JC1_LITE
18515         defined.
18516         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
18517         wfl_to_string.
18518         (java_lex): Allow declaration of empty string constants. Retain
18519         location information on CASE_TK and DEFAULT_TK.
18520         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
18521         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
18522         Modified to be more robust.
18523         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
18524         (build_new_invocation, try_builtin_assignconv,
18525         patch_switch_statement, string_constant_concatenation,
18526         build_string_concatenation, patch_string_cst, patch_string,
18527         java_expand_switch): New function declarations.
18528         * parse.y: Rules related to switch and EH tagged <node>.
18529         (label_id): Set to NULL_TREE
18530         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
18531         tree nodes.
18532         (this_or_super:): Fixed indentation.
18533         (statement:, statement_nsi:, statement_without_trailing_substatement:,
18534         statement_expression:): Removed call to RULE on all sub-rules.
18535         (switch_expression:, switch_labels:): New rules.
18536         (switch_statement:, switch_block:, switch_block_statement_groups:,
18537         switch_block_statement_group:, switch_labels:, switch_label:):
18538         Defined actions.
18539         (throw_statement:, synchronized_statement:, try_statement:):
18540         Defined temporary actions.
18541         (class_instance_creation_expression:): Call
18542         build_new_invocation. Fixed indentation.
18543         (field_access): Fixed indentation.
18544         (method_invocation): Likewise.
18545         (make_qualified_primary): Use THIS_EXPR.
18546         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
18547         resolving from SUPER, set *type_found.
18548         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
18549         (java_complete_tree): Removed unused local variable `location'. Case
18550         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
18551         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
18552         on MODIFY_EXPR: and all binary operator tree code cases. Removed
18553         STRING_CST: case. default: checks for patchable strings.
18554         (complete_function_arguments): Transform string constant or
18555         crafted StringBuffer if necessary.
18556         (build_method_invocation): Fixed comments.
18557         (build_new_invocation): New function.
18558         (patch_assignment): Call try_builtin_assignconv to figure a valid
18559         assignment conversion between builtin types.
18560         (try_builtin_assignconv): New function.
18561         (build_binop): Use URSHIFT_EXPR directly to call build.
18562         (operator_string): Use UNARY_PLUS_EXPR.
18563         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
18564         operator.
18565         (do_merge_string_cste, merge_string_cste,
18566         string_constant_concatenation, build_string_concatenation,
18567         patch_string, patch_string_cst): New function.
18568         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
18569         (patch_unaryop): Likewise. New test of valid ++/-- operands.
18570         (build_newarray_node): Use NEW_ARRAY_EXPR.
18571         (build_this): Use THIS_EXPR.
18572         (build_return): Enable debug information on return statement.
18573         (build_if_else_statement): Likewise.
18574         (complete_labeled_statement): Fixed related comment.
18575         (build_loop_body): Fixed comment.
18576         (build_bc_statement): Enable debug information on break/continue
18577         statements.
18578         (patch_bc_statement): Fixed typos. Handle SWITCH statement
18579         context.
18580         (patch_switch_statement, case_identity, java_expand_switch): New
18581         functions.
18582
18583 1998-09-21  Per Bothner  <bothner@cygnus.com>
18584
18585         * buffer.h (BUFFER_INIT):  New macro.
18586         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
18587         Pass (struct jcf_partial *state) to most functions.
18588         (jcf_block, jcf_relocation):  New types.
18589         Support labels, branches, conditionals, loops.
18590
18591 1998-09-21  Tom Tromey  <tromey@cygnus.com>
18592
18593         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
18594
18595 1998-09-21  Per Bothner  <bothner@cygnus.com>
18596
18597         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
18598         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
18599         not integer_type_node (INT_TYPE_SIZ bits).
18600
18601         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
18602
18603         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
18604         * jcf-dump.c (print_exception_table):  New function.
18605         (disassemble_method):  Better handling of wide instructions.
18606         Make more robust for bad input.
18607
18608 1998-09-30  Jeffrey A Law  (law@cygnus.com)
18609
18610         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
18611         FreeBSD.
18612
18613 1998-09-17  Jeffrey A Law  (law@cygnus.com)
18614
18615         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
18616
18617 1998-09-17  Tom Tromey  <tromey@cygnus.com>
18618
18619         * Makefile.in ($(PARSE_H)): Removed target.
18620
18621 1998-09-17  Jeffrey A Law  (law@cygnus.com)
18622
18623         * Makefile.in (JAVA_OBJS): Add memmove.o
18624         (memmove.o): New target & rules.
18625
18626 1998-09-15  Tom Tromey  <tromey@cygnus.com>
18627
18628         * expr.c (expand_invoke): Don't generate a call to the class init
18629         code.
18630
18631 1998-09-14  Jeffrey A Law  (law@cygnus.com)
18632
18633         * Makefile.in: Add many missing dependencies.
18634         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
18635         as appropriate.
18636         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
18637         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
18638
18639 1998-09-11  Per Bothner  <bothner@cygnus.com>
18640
18641         * decl.c (complete_start_java_method):  If method is static (and
18642         not private) call _Jv_InitClass.
18643         * expr.c (expand_invoke):  Don't call build_class_init.
18644
18645         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
18646
18647 1998-09-10  Jeffrey A Law  (law@cygnus.com)
18648
18649         * Make-lang.in (GCJ): Define before using.
18650
18651 1998-09-09  Jeffrey A Law  (law@cygnus.com)
18652
18653         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
18654         losing due to namespace pollution in GNU getopt.h
18655
18656 1998-09-09  Tom Tromey  <tromey@cygnus.com>
18657
18658         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
18659         (java.all.cross): Likewise.
18660         (java.rest.encap): Likewise.
18661
18662 1998-09-08  Jeffrey A Law  (law@cygnus.com)
18663
18664         * gjavah.c (print_class_decls): Fix thinko in arglist
18665         * jcv-io.c (find_classfile): Similarly.
18666
18667 1998-09-07  Jeffrey A Law  (law@cygnus.com)
18668
18669         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
18670
18671 1998-09-05  Tom Tromey  <tromey@cygnus.com>
18672
18673         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
18674         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
18675         * Makefile.in (PARSE_C): New macro.
18676         (PARSE_H): Likewise.
18677         (PARSE_SCAN_C): Likewise.
18678         ($(PARSE_C)): Target renamed from parse.c.
18679         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
18680         (clean): Remove parse-scan.c as well.
18681         (parse.o): Depend on $(PARSE_C).
18682
18683 1998-09-05  Anthony Green  <green@cygnus.com>
18684
18685         * README, license.terms: Removed.
18686
18687         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
18688         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
18689         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
18690         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
18691         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
18692         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
18693         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
18694         and Java trademark attribution.
18695
18696 1998-09-04  Tom Tromey  <tromey@cygnus.com>
18697
18698         * Makefile.in: Use gcjh, not gjavah.
18699         * config-lang.in (stagestuff): Use gcjh, not gjavah.
18700         * Make-lang.in: Changed gjavah to gcjh everywhere.
18701
18702 1998-09-03  Per Bothner  <bothner@cygnus.com>
18703
18704         * gjavah.c:  Support new -prepend -add -append flags.
18705         (print_method_info):  Method is not virtual if class is final.
18706
18707 1998-09-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18708
18709         * jv-scan.c: Fixed copyright assignment.
18710         * keyword.gperf: Likewise.
18711         * keyword.h: Likewise.
18712         * lex.c: Fixed copyright assignment.
18713         (java_lex): Push unicode back when parsing '<'.
18714         * lex.h: Fixed copyright assignment.
18715         * parse-scan.y: Likewise.
18716         * parse.h: Fixed copyright assignment.
18717         (build_debugable_stmt, complete_for_loop): New function prototypes.
18718         * parse.y: Fixed copyright assignment.
18719         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
18720         size_zero_node when completing a loop with no exit condition.
18721         (for_statement_nsi:): Define action.
18722         (for_init:, for_update:): Return size_zero_node when empty.
18723         (declare_local_variables): Call build_debugable_stmt.
18724         (build_debugable_stmt): New function.
18725         (build_loop_body): Build debugable statement around loop
18726         condition part.
18727         (complete_loop_body): Take into account the debugable statement
18728         around the EXIT_EXPR.
18729         (complete_loop_body): New function.
18730         (patch_exit_expr): Fixed condition inversion.
18731
18732 1998-09-02  Tom Tromey  <tromey@cygnus.com>
18733
18734         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
18735         name of thread define.
18736         * jvspec.c (THREAD_NAME): New macro.
18737         (GCLIB): Likewise.
18738         (THREADLIB): Likewise.
18739         (lang_specific_driver): Recognize attempt to link with thread
18740         library or gc library.  Recognize -ljava on command line so it
18741         isn't linked against more than once.
18742
18743 1998-09-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18744
18745         * parse-scan.y (report_main_declaration): Name of the class
18746         containing `main' can be a qualified name.
18747
18748 1998-08-31  Tom Tromey  <tromey@cygnus.com>
18749
18750         * config-lang.in: Changed gjavac to gjc everywhere.
18751         * Make-lang.in: Changed gjavac to gjc everywhere.
18752
18753 1998-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18754
18755         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
18756         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
18757         and install the files.
18758         * Makefile.in (JAVA_OBJS_LITE): New variable.
18759         (compiler:): Now include jv-scan as a dependency.
18760         (../jv-scan$(exeext), parse-scan.c): New targets.
18761         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
18762         * config-lang.in (compilers): Removed gcj, gjavah from the list.
18763         * jcf-parse.c (parse_source_file): Call java_layout_classes and
18764         check for errors even if parse_only.
18765         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
18766         defined.
18767         (yylex): New function. Uses java_lex body.
18768         (java_lex): Removed commented out statement. Remove local variable
18769         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
18770         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
18771         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
18772         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
18773         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
18774         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
18775         where appropriate.
18776         (java_lex_error): Empty if JC1_LITE is defined.
18777         (java_get_line_col): Return 0 if JC1_LITE is defined.
18778         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
18779         SET_MODIFIER_CTX): Moved into the section containing the macros
18780         conditionally defined by JC1_LITE.
18781         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
18782         argument if JC1_LITE is defined.
18783         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
18784         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
18785         is defined.
18786         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
18787         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
18788         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
18789         to different values according to JC1_LITE.
18790         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
18791         declared if JC1_LITE set.
18792         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
18793         defined if JC1_LITE not set.
18794         (struct parser_ctx): Reorganized and skip the jc1 front end part
18795         if JC1_LITE set.
18796         (java_layout_classes): New function definition.
18797         (java_push_parser_context, java_init_lex, yyparse, yylex,
18798         yyerror): Prototype always declared. All other static function
18799         prototypes declared only if JC1_LITE is not set.
18800         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
18801         declared in parse.h.
18802         (java_layout_classes): New function.
18803         (java_complete_expand_methods): No longer layout the class here.
18804         * parse-scan.y: New file.
18805         * jv-scan.c: New file.
18806
18807 1998-08-25  Tom Tromey  <tromey@cygnus.com>
18808
18809         * gjavah.c (main): Handle -friend option.
18810         (friend_specs): New global.
18811         (generate_access): Handle friend_specs.
18812         (process_file): Likewise.
18813         (MAX_FRIENDS): New macro.
18814         (friend_count): New global.
18815         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
18816         Changed all callers.
18817
18818 1998-08-24  Per Bothner  <bothner@cygnus.com>
18819
18820         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
18821         (main):  Handle processing all the entries of a named .zip archive.
18822         * jcf-io.c (jcf_trim_old_input):  New function.
18823         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
18824
18825 1998-08-24  Per Bothner  <bothner@cygnus.com>
18826
18827         * lang.c (flag_assume_compiled):  Make default be on.
18828
18829 1998-08-21  Per Bothner  <bothner@cygnus.com>
18830
18831         * jcf-dump.c:  Add bunches of flags to control output more.
18832         (process_class):  New function;  support printing more than one class.
18833         (main): Support new --print-main and --javap flags.
18834         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
18835         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
18836
18837 1998-08-20  Per Bothner  <bothner@cygnus.com>
18838
18839         Change mangling of dispatch table to match C++ vtable (w/thunks).
18840         * class.c (build_dtable_decl), java-tree.h:  New function.
18841         (make_class_data):  Call it.
18842         * decl.c (init_decl_processing):  Likewise.
18843
18844 1998-08-19  Warren Levy  <warrenl@cygnus.com>
18845
18846         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
18847         soft_anewarray; adjust args passed.
18848         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
18849         match _Jv_NewObjectArray.
18850
18851 1998-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18852
18853         * decl.c (push_labeled_block, pop_labeled_block): New functions.
18854         * expr.c (loopup_label): Call create_label_decl.
18855         (create_label_decl): New function.
18856         (java_lang_expand_expr): Call expand_start_bindings with argument
18857         set to zero.
18858         * java-tree.h Added space after PROTO in function declarations
18859         when necessary.
18860         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
18861         (create_label_decl, push_labeled_block): New function
18862         declarations.
18863         * lex.c (label_id): Initialize.
18864         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
18865         switch.
18866         * parse.h Added space after PROTO in function declarations when
18867         necessary.
18868         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
18869         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
18870         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
18871         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
18872         macros.
18873         (struct parser_ctxt): New fields current_loop,
18874         current_labeled_block.
18875         (build_if_else_statement, patch_if_else_statement,
18876         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
18877         generate_labeled_block, complete_labeled_statement,
18878         build_bc_statement, patch_bc_statement, patch_loop_statement,
18879         build_new_loop, build_loop_body, complete_loop_body): New function
18880         declarations.
18881         * parse.y (java_warning_count): New global variable.
18882         (label_id): New static variable.
18883         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
18884         (block:): Return size_zero_node when block is empty.
18885         (empty_statement:): Return size_zero_node.
18886         (statement:): Implement supplemental action when for_statement: is
18887         reduced.
18888         (label_decl:): New rule.
18889         (labeled_statement:): Rewritten using label_decl. Actions
18890         implemented.
18891         (labeled_statement_nsi:): Likewise.
18892         (if_then_statement): Actions implemented.
18893         (while_expression): New rule.
18894         (while_statement:): Rewritten using while_expression. Actions
18895         implemented.
18896         (while_statement_nsi:): Likewise.
18897         (do_statement_begin:): New rule.
18898         (do_statement:): Rewritten using do_statement_begin. Actions
18899         implemented.
18900         (for_statement:): Rewritten using for_begin. Actions implemented.
18901         (for_statement_nsi:): Likewise.
18902         (for_header:, for_begin:): New rules.
18903         (for_init:): Actions implemented.
18904         (statement_expression_list:, break_statement:,
18905         continue_statement:): Likewise.
18906         (yyerror): Count number of issued warning(s).
18907         (java_report_errors): Report error(s) and/or warning(s).
18908         (java_complete_class): Use build_java_argument_signature to
18909         recompute completed method signature.
18910         (java_check_regular_methods): New locals method_wfl and aflags.
18911         Use method_wfl instead of lookup_cl during error reports. Fixed
18912         indentation and modified some error messages. Use
18913         lang_printable_name in method instead of the DECL_NAME. New code
18914         to issue warnings on methods not overriding corresponding methods
18915         private to a different package.
18916         (java_method_add_stmt): Call add_stmt_to_compound.
18917         (add_stmt_to_compound): New function.
18918         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
18919         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
18920         (build_if_else_statement, patch_if_else_statement,
18921         build_labeled_block, generate_labeled_block,
18922         complete_labeled_statement, build_new_loop, build_loop_body,
18923         complete_loop_body, patch_loop_statement, build_bc_statement,
18924         patch_bc_statement, patch_exit_expr): New functions.
18925         * typeck.c (build_java_signature): Build argument signature before
18926         enclosing it in between parenthesis.
18927
18928 1998-08-17  Warren Levy  <warrenl@cygnus.com>
18929
18930         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
18931         (JAVA_OBJS): Added reminder comment
18932
18933 1998-08-13  Nick Clifton  <nickc@cygnus.com>
18934
18935         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
18936         be interpreted as a long long.
18937
18938 1998-08-13  Warren Levy  <warrenl@cygnus.com>
18939
18940         * decl.c (init_decl_processing): Use _Jv_InitClass, not
18941         soft_initialise_class.  Use _Jv_NewMultiArray, not
18942         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
18943         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
18944         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
18945         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
18946
18947 1998-08-12  Per Bothner  <bothner@cygnus.com>
18948
18949         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
18950         length_identifier_node):  New global tree node constants.
18951         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
18952         Replace uses by super_identifier_node etc.
18953         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
18954
18955         * parse.y (resolve_field_access):  Don't special-case ".length" if
18956         flag_emit_class_files.
18957         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
18958         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
18959         and ARRAY.length.
18960
18961 1998-08-11  Per Bothner  <bothner@cygnus.com>
18962
18963         * decl.c (init_decl_processing): Remove unused method_type_node fields.
18964         * class.c (make_method_value):  Remove init for removed fields.
18965
18966         * class.c (layout_class):  Use build_java_argument_signature.
18967         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
18968
18969         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
18970         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
18971         (build_java_signature):  Don't use push_java_argument_signature.
18972
18973         * typeck.c (lookup_argument_method):  New function.
18974         * parse.y (java_check_regular_methods):  Use lookup_argument_method
18975         instead of lookup_java_method2 followed by lookup_java_method.
18976
18977         * parse.y (check_method_redefinition):  Minor optimization.
18978
18979         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
18980         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
18981
18982 1998-08-10  Tom Tromey  <tromey@cygnus.com>
18983
18984         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
18985         c-pragma.o.
18986
18987         * gjavah.c (java_float_finite): Use K&R-style definition.
18988         (java_double_finite): Likewise.
18989         (generate_access): Now returns void.  Changed all callers.
18990         (last_access_generated): Removed.
18991         (process_file): Only make a single pass over the .class file.
18992
18993 1998-07-29  Per Bothner  <bothner@cygnus.com>
18994
18995         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
18996         for compatibility for G++ (with -fvtable-thunks).
18997         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
18998
18999         * gjavah.c (process_file):  Use public inheritance for super-class.
19000
19001 1998-07-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19002
19003         * lex.c (java_init_lex): Initialize ctxp->package.
19004         * parse.h (struct parser_ctxt): package and package_len replaced
19005         by tree package, an identifier node. Field method_decl_list is
19006         gone. Fixed comments.
19007         (lookup_field_wrapper, merge_qualified_name, not_accessible,
19008         class_in_current_package): New function prototypes.
19009         * parse.y (array_type:): Set class loaded flag on primitive type
19010         arrays.
19011         (package_declaration:): Assign ctxp->package to the
19012         identifier node.
19013         (method_invocation:): Handle invocation of method qualified by
19014         `super'.
19015         (single_type_import_declaration:): Removed ambiguity check.
19016         (java_pop_parser_context): New local variable `next'. Reset and
19017         set IMPORT_CLASSFILE_NAME flags on current and previous import
19018         list.
19019         (java_accstring_lookup): Use new local macro COPY_RETURN.
19020         (lookup_field_wrapper): New function.
19021         (parser_qualified_classname): Use merge_qualified_name.
19022         (parser_check_super_interface): Broaden error message.
19023         (do_resolve_class): Check for qualified class name in the current
19024         compilation unit if appropriate.
19025         (process_imports): Check for already defined classes.
19026         (check_pkg_class_access): Got rid of call to
19027         get_access_flags_from_decl.
19028         (java_complete_expand_methods): Call safe_layout_class based on
19029         the current class size.
19030         (make_qualified_primary): Build a WFL qualification on primary if
19031         none exists.
19032         (merge_qualified_name): New function.
19033         (make_qualified_name): Use merge_qualified_name.
19034         (resolve_expression_name): Use safe_lookup_field.
19035         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
19036         (resolve_qualified_expression_name): Likewise. Check on resolved
19037         element accessibility.
19038         (not_accessible_p, class_in_current_package): New functions.
19039         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
19040         (patch_method_invocation_stmt): Merged common pieces. Check
19041         accessibility of invoked method.
19042         (check_for_static_method_reference): Add returned type in error
19043         message.
19044         (invocation_mode): Get rid of bogus check on PRIVATE methods.
19045         (refine_accessible_methods_list): Merged two conditions in test.
19046         (java_complete_class): Sanity check on stabilize_ref gone.
19047         * zextract.c (read_zip_archive): Cast lseek second argument to long.
19048
19049 1998-07-28  Per Bothner  <bothner@cygnus.com>
19050
19051         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
19052
19053 1998-07-24  Tom Tromey  <tromey@cygnus.com>
19054
19055         * gjavah.c (F_NAN): Removed.
19056         (F_NAN_MASK): New macro.
19057         (F_POSITIVE_INFINITY): Removed.
19058         (F_NEGATIVE_INFINITY): Likewise.
19059         (java_float_finite): Rewrote.
19060         (D_NAN_MASK): Renamed.
19061         (java_double_finite): Rewrote.
19062         (D_POSITIVE_INFINITY): Removed.
19063         (D_NEGATIVE_INFINITY): Likewise.
19064
19065         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
19066         If verbose, print underlying representation of value in hex.
19067
19068 1998-07-24  Per Bothner  <bothner@cygnus.com>
19069
19070         * buffer.h, buffer.c:  New files.
19071         * Makefile.in (JAVA_OBJS):  Add buffer.o.
19072
19073         Support locals variables and writing their debug entries to .class.
19074         * jcf-write.c:  Simplify some by user new buffer type.
19075         (vode_buffer_grow):  Removed.
19076         (struct localvar_info):  New type.
19077         (localsvars, localvartable):  New buffers.
19078         (localvar_alloc, localvar_free):  New functions.
19079         (generate_bytecode_insns):  Handle local variables.
19080         (generate_classfile):  Write LocalVariableTable attribute.
19081
19082 1998-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19083
19084         * jcf-io.c (open_in_zip): Check the zipfile magic number.
19085         * zipfile.h (ZIPMAGIC): New macro.
19086
19087 1998-07-24  Tom Tromey  <tromey@cygnus.com>
19088
19089         * Makefile.in (gjavah.o): Updated dependencies.
19090         (jcf-dump.o): Likewise.
19091         (all.indirect): Use ../gjavah.
19092         (../gjavah$(exeext)): Likewise.
19093         (clean): Don't remove gjavah.
19094         (clean): Remove parse.c, not java/parse.c.
19095         * Make-lang.in (java): Added gjavah.
19096         (gjavah$(exeext)): New target.
19097         (GJAVAH_SOURCES): New macro.
19098         (java.all.build): Added gjavah.
19099         (java.all.cross): Likewise.
19100         (java.rest.encap): Likewise.
19101         * config-lang.in (compilers, stagestuff): Added gjavah.
19102
19103 1998-07-23  Tom Tromey  <tromey@cygnus.com>
19104
19105         * gjavah.c (java_float_finite): New function.
19106         (java_double_finite): Likewise.
19107         (F_POSITIVE_INFINITY): New macro.
19108         (F_NEGATIVE_INFINITY): Likewise.
19109         (F_NAN): Likewise.
19110         (D_POSITIVE_INFINITY): Likewise.
19111         (D_NEGATIVE_INFINITY): Likewise.
19112         (D_NAN): Likewise.
19113         (print_field_info): Use java_float_finite and java_double_finite.
19114
19115 1998-07-23  Per Bothner  <bothner@cygnus.com>
19116
19117         * parse.y (method_header):  Name "this" implicit argument.
19118
19119 1998-07-22  Per Bothner  <bothner@cygnus.com>
19120
19121         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
19122         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
19123         (put_linenumber):  New function.
19124         (generate_bytecode_insns, generate_classfile):  Write line numbers.
19125
19126 1998-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19127
19128         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
19129         (lookup_name, build_known_method_ref, build_class_init,
19130         build_invokevirtual, invoke_build_dtable, match_java_method,
19131         build_field_ref, pushdecl_force_head, build_java_binop,
19132         binary_numeric_promotion, build_decl_no_layout,
19133         build_java_arrayaccess, build_newarray, build_anewarray,
19134         build_java_array_length_access, build_java_arraynull_check): New
19135         extern function prototypes.
19136         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
19137         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
19138         java-tree.h.
19139         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
19140         to NULL
19141         * jcf.h (jcf_out_of_synch): New extern function prototype.
19142         * parse.h: Static/global function implemented in parse.y
19143         prototyped and declarations moved at the end of the file.
19144         (DECL_P): Check that the argument isn't null.
19145         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
19146         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
19147         (QUAL_DECL_TYPE): New macro.
19148         (PARAMS): Macro definition removed.
19149         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
19150         (return_statement:): Call build_return.
19151         (field_access:): Call make_qualified_primary in sub rule.
19152         (method_invocation:): Build method invocation and call
19153         make_qualified_primary when processing primaries.
19154         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
19155         get_type_from_signature.
19156         (java_check_regular_method): Extra integer 0 argument when calling
19157         lookup_java_method2.
19158         (lookup_java_interface_method2): Extra method DECL argument when
19159         calling lookup_java_interface_method2.
19160         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
19161         COMPOUND_EXPR node.
19162         (java_complete_expand_method): Layout current class iff not
19163         already done. Don't process interface's methods.
19164         (java_complete_expand_method): Use super class only if it
19165         exists. Use current class otherwise.
19166         (make_qualified_primary): New function.
19167         (resolve_expression_name): Process qualified expression or
19168         expression from primary the same way.
19169         (resolve_expression_name): Two last arguments to
19170         resolve_field_access are now NULL_TREEs.
19171         (resolve_field_access): New variable is_static. Local field must
19172         be DECLs. is_static computed on field DECLs only. Append code in
19173         where_found to the field access if necessary. Use QUAL_DECL_TYPE
19174         to initialize field_type.
19175         (resolve_qualified_expression_name): New local variable,
19176         previous_call_static and is_static. Handle primaries with function
19177         calls, casts, array references and `this'. `super' now handled as
19178         `(super_class)this'. Use is_static to clarify boolean expressions.
19179         Added code to handle case where a proper handle is required to
19180         access a field. Use QUAL_DECL_TYPE where applicable.
19181         (maybe_access_field): New function.
19182         (patch_method_invocation_stmt): New arguments primary, where,
19183         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
19184         deleted. Use `where' as a type to search from if specified. Check
19185         for static method reference where forbidden. Append primary or
19186         current_this to the argument list if not calling constructor nor
19187         static methods.
19188         (check_for_static_method_reference): New function.
19189         (patch_invoke): Layout the class on which new is done if
19190         necessary.
19191         (lookup_method_invoke): Changed format to report errors on
19192         methods.
19193         (qualify_ambiguous_name): New local variable this_found. Now
19194         handle things from primaries. Method call are considered
19195         expression names.
19196         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
19197         changed into NULLs.
19198         (not_initialized_as_it_should_p): Comply with the new DECL_P.
19199         (java_complete_tree): New case fo RETURN_EXPR. Process function
19200         call arguments in separate function.
19201         (complete_function_arguments): New function.
19202         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
19203         anymore.
19204         (patch_assignment): Take the return function slot into account as
19205         a RHS. Distinguish assignment from a return.
19206         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
19207         when checking methods in interfaces.
19208         (resolve_type_during_patch): NULL argument to unresolve_type_p
19209         instead of NULL_TREE.
19210         (patch_newarray): Fixed typo in comment.
19211         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
19212         (build_return, patch_return): New functions.
19213         * typeck.c (lookup_java_constructor): Fixed typo in comment.
19214
19215 1998-07-21  Per Bothner  <bothner@cygnus.com>
19216
19217         * constants.c (find_name_and_type_constant, find_fieldref_index,
19218         find_methodref_index):  New methods.
19219         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
19220         just return given method.  Also, rename to build_known_method_ref.
19221         (expand_invoke):  Rename call to build_invoke_non_interface.
19222         * java-tree.h, parse.h:  Update prototype.
19223         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
19224         (such as expand_expr_stmt) if flag_emit_class_files.
19225         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
19226         STACK_TARGET, IGNORE_TARGET):  New macros.
19227         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
19228         (generate_bytecode_insn):  New function to generate method's bytecode.
19229         (generate_classfile):  Node generate Code attribute for a method.
19230         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
19231         push_long_const, field_op, adjust_typed_op, maybe_wide):
19232         New functions used by generate_bytecode_insn.
19233
19234         * typeck.c (signature_include_return):  Remove variable.
19235         (push_java_argument_signature, build_java_argument_signature):  New.
19236         (build_java_signature):  Use push_java_argument_signature.
19237         * parse.y:  Use build_java_argument_signature instead of fiddling
19238         with signature_include_return.
19239
19240 1998-07-17  Tom Tromey  <tromey@cygnus.com>
19241
19242         * gjavah.c (print_c_decl): Always generate JArray<>* for array
19243         types.
19244
19245         * Makefile.in (all.indirect): Added gjavah$(exeext).
19246         (gjavah$(exeext)): Added $(exeext).
19247         (clean): Likewise.
19248
19249 1998-07-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19250
19251         * class.c (layout_class): Call to java_layout_parsed_class replace
19252         by safe_layout_class.
19253         * expr.c (build_java_array_length_access): Removed static storage
19254         class in the function definition.
19255         (build_java_arraynull_check): Likewise.
19256         Also fixed typos in two comments.
19257         * lex.c (java_init_lex): Initialize static global kw_length.
19258         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
19259         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
19260         java_lex_error.
19261         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
19262         * parse.h (resolve_no_layout): New static function declaration.
19263         (get_identifier_in_static): Declaration removed.
19264         (java_layout_parsed_class): Function name declaration changed to
19265         safe_layout_class.
19266         (build_newarray_node, patch_newarray, resolve_type_during_patch,
19267         not_initialized_as_it_should_p, build_this): New static function
19268         declarations.
19269         (pushdecl_force_head, build_java_binop, int_fits_type_p,
19270         binary_numeric_promotion, stabilize_reference,
19271         build_decl_no_layout, build_java_arrayaccess): Extern function
19272         declarations moved into their own section.
19273         (build_newarray, build_anewarray, build_java_array_length_access,
19274         build_java_arraynull_check): New extern function declarations.
19275         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
19276         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
19277         fake tree codes.
19278         (CALL_CONSTRUCTOR_P): New macro.
19279         * parse.y (kw_length): New static global tree node.
19280         (return_statement): Tagged <node>.
19281         (RETURN_TK): Tagged <operator>.
19282         (variable_declarator_id:): Build variable declaration with an
19283         empty initialization value if a syntax error was found in the
19284         initialization part of the variable declaration.
19285         (statement_without_trailing_substatement:): return_statement: now
19286         uses the default rule.
19287         (return_statement:): Temporarily fixed to return NULL_TREE.
19288         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
19289         (class_instance_creation_expression:): Class creation rules now
19290         call build_method_invocation upon reduction.
19291         (array_creation_expression:): Rules call build_newarray_node upon
19292         reduction.
19293         (dim_exprs:): Build a list of dimension expressions.
19294         (dim_expr:): Store location of the OSB_TK in the dimension
19295         expression node.
19296         (method_invocation:): Added a new error rule.
19297         (build_unresolved_array_type): WFL argument may also be an array
19298         on a primitive type. Name of the argument changed to reflect this.
19299         (method_declarator): Insert argument type at the beginning of the
19300         argument type list and later reverse the list.
19301         (unresolved_type_p): Argument 'returned' may be optionally
19302         NULL_TREE.
19303         (java_layout_class_from_source): Function renamed
19304         safe_layout_class.
19305         (resolve_and_layout): Now call resolve_no_layout and
19306         safe_layout_class.
19307         (resolve_no_layout): New function.
19308         (purify_type_name): New function.
19309         (complete_class_report_errors): Call purify_type_name during error
19310         report on a type not found.
19311         (process_imports): error_found local variable doesn't need to be
19312         initialized to zero.
19313         (declare_local_variables): New local type_wfl. Fixed typo in error
19314         message. type_wfl assigned to unresolved type and used to register
19315         incomplete type. Build a WFL around the variable initialization
19316         statement so that debug info can be generated on it.
19317         (source_start_java_method): Reverse argument list after they've
19318         been processed.
19319         (current_this): New static global variable.
19320         (java_complete_expand_methods): Set current_this when appropriate.
19321         (resolve_expression_name): Build correct static and non static
19322         field access bearing a simple name.
19323         (resolve_field_access): Resolve the length field of arrays. Handle
19324         f.m() cases.
19325         (patch_method_invocation_stmt): Set the type of the method
19326         invocation to error_mark_node. This value is later overridden by a
19327         valid type, if any. Don't handle qualified constructor invocation
19328         as qualified method invocation. Call lookup_method_invoke with its
19329         new flag. It's no longer necessary to access the selected method
19330         as the value of a tree list. Handle constructor invocation.
19331         (patch_invoke): Reverse argument list when invoking non interface
19332         methods. Insert call to new as the first argument of the
19333         constructor.
19334         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
19335         defined within a final class. Return INVOKE_STATIC if the invoked
19336         method is a constructor.
19337         (lookup_method_invoke): New lc argument is a flag to indicate a
19338         constructor lookup. Now handle constructor lookup. Choose the most
19339         specific method in case several were matching the invocation
19340         requirements. Return a method decl instead of a tree list featuring
19341         one single method decl element.
19342         (refine_accessible_methods_list): New lc flag argument to
19343         indicate that a constructor is being looked up.
19344         (not_initialized_as_it_should_p): New function.
19345         (java_complete_tree): Now process fake tree codes
19346         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
19347         save_expr on resolved function call arguments. Case on
19348         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
19349         (patch_assignment): LHS can be a field access expression. When
19350         dealing with reference, lhs_type is the promoted type of the
19351         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
19352         applicable.
19353         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
19354         (patch_binop): Use not_initialized_as_it_should_p where
19355         applicable.
19356         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
19357         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
19358         where applicable.
19359         (resolve_type_during_patch): New function.
19360         (patch_cast): Call resolve_type_during_patch to resolve type and
19361         report error accordingly.
19362         (patch_array_ref): Use not_initialized_as_it_should_p where
19363         applicable. Array base expression is saved before being
19364         used. Promote the type of an array elements if it contains non
19365         builtin types.
19366         (build_newarray_node, patch_newarray, build_this): New functions.
19367
19368 1998-07-16  Tom Tromey  <tromey@cygnus.com>
19369
19370         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
19371         increment it in `for' statement.
19372         (print_field_info): If number is inf or nan, don't print it.
19373         (print_method_info): If method name is `delete', just ignore it.
19374         (print_c_decl): Special-case jstringArray.
19375
19376         * gjavah.c (help): New function.
19377         (no_argument): New function.
19378         (usage): Changed text.
19379         (main): Rewrote argument handling.  Now handles -v, --help,
19380         --version.
19381         (version): New function.
19382         (found_error): New global.
19383         (main): Return found_error.
19384         (generate_access): Set found_error.
19385         (print_c_decl): Likewise.
19386
19387 1998-07-15  Tom Tromey  <tromey@cygnus.com>
19388
19389         * gjavah.c (print_c_decl): Don't print "," when examining field.
19390         Skip type name when looking at "[L" types.
19391         (process_file): Now static.
19392         (generate_access): Now returns int.
19393         (last_access_generated): New global.
19394         (process_file): Clear last_access_generated; make multiple passes
19395         over the class.
19396         (print_field_info): Just return if generate_access returns true.
19397         (print_method_info): Likewise.  Also, allow <init> functions to
19398         pass through.
19399         (print_c_decl): Added is_init argument.  Print constructors
19400         properly.
19401         (print_cxx_classname): Use UTF8_GET to extract characters from
19402         string.
19403         (print_base_classname): New function.
19404         (print_class_decls): New function.
19405         (process_file): Use it.
19406         (utf8_cmp): New function.
19407
19408 1998-07-13  Nick Clifton  <nickc@cygnus.com>
19409
19410         * lang-options.h: Format changed to match changes in gcc/toplev.c
19411         to implement a --help option.
19412
19413 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
19414
19415         * decl.c (init_decl_processing): Revert change to dtable_type.
19416
19417 1998-07-09  Per Bothner  <bothner@cygnus.com>
19418
19419         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
19420
19421 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
19422
19423         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
19424
19425         * lang.c (lang_init): Default flag_exceptions to 1, without
19426         checking to see if it's 2 first.
19427
19428 1998-07-08  Jeffrey A Law  (law@cygnus.com)
19429
19430         * constants.c: Include "system.h".
19431         * decl.c: Likewise.
19432         * lang.c (flag_new_exceptions): Get via extern now.
19433         (lang_init_options): New functions.  Turn on flag_new_exceptions.
19434
19435 1998-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19436
19437         * lex.c (java_lex): Return 0 when we see an invalid character in
19438         the input.
19439
19440         * lex.c (java_read_char): Specify extra argument when calling
19441         java_lex_error.
19442         (java_read_unicode, java_parse_end_comment,
19443         java_parse_escape_sequence): Likewise,
19444         (java_lex): Specify extra argument when calling
19445         java_lex_error. Test that IDs are beginning with a legal character
19446         for IDs. Handle invalid characters with an error message and a
19447         call to java_lex_error.
19448         (java_lex_error): Adjust column position by new argument
19449         `forward'. Issue an error even if in the middle of reporting an
19450         other error.
19451
19452 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
19453
19454         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
19455         we don't explicitly put a null pointer when we're copying it.
19456
19457 1998-07-07  Tom Tromey  <tromey@cygnus.com>
19458
19459         * gjavah.c (print_cxx_classname): New function.
19460         (super_class_name): Likewise.
19461         (print_super_fields): Removed.
19462         (in_super): Removed.
19463         (print_field_info): Never generate #defines.
19464         (print_c_decl): Changed generated types to match JNI.  No longer
19465         print class name before method name.
19466         (print_method_info): Print "static" before static methods.
19467         Print "virtual" before non-final methods.
19468         (usage): Use exit(1), not exit(-1).
19469         (main): Likewise.
19470         (print_field_info): Use %.17g to print a double.
19471         (last_access): New globals.
19472         (process_file): Initialize last_access.
19473         (usage): Now static.
19474         (ACC_VISIBILITY): New define.
19475         (generate_access): New function.
19476         (print_field_info): Call it.
19477         (print_method_info): Likewise.  Also, generate information for all
19478         methods, not just native methods.  Return void.
19479         (print_c_decl): Return void.
19480         (print_field_info): Return void.
19481
19482 1998-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19483
19484         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
19485         processing the jc1 grammar file. Prefix bison functions and
19486         variables with java_.
19487         (parse.c): Dependencies on parse.h and lex.h
19488         * expr.c (build_java_arrayaccess): Function now global.
19489         * java-tree.h: Comment reorganized to carry on previous
19490         classification effort.
19491         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
19492         RESOLVE_TYPE_NAME_P): New flags on WFLs.
19493         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
19494         java_parse (new prefix java_ generated by bison).
19495         (java_layout_parsed_class, java_register_parsed_class): Function
19496         call removed.
19497         (yyparse): Removed unnecessary call to init_outgoing_cpool.
19498         * lex.c (static tree wfl_op): Variable deleted.
19499         (java_init_lex): Initialize kw_super and kw_this. Initialize more
19500         ctxp fields to NULL_TREE.
19501         (java_lex): No longer create WFL for operators. Filename caching
19502         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
19503         created as STRING_CST and later expanded. Removed extra argument
19504         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
19505         and SUPER.
19506         (build_wfl_node): Removed code in comments.
19507         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
19508         store token and location data in the current bison token.
19509         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
19510         static/extern function declaration at the beginning of the file.
19511         (struct qualification): Data structure definition deleted.
19512         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
19513         (qualify_ambiguous_name): Function declaration modified. Function
19514         now returns nothing.
19515         (build_array_ref, patch_array_ref, make_qualified_name,
19516         resolve_qualified_expression_name, maybe_generate_clinit,
19517         resolve_field_access): New static function declarations.
19518         (build_java_arrayaccess): New extern function declaration.
19519         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
19520         (CALL_EXPR_PRIMARY): Macro deleted.
19521         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
19522         (struct parser_ctxt): Field initialized_final
19523         removed. non_static_initialized, static_initialized: New fields.
19524         * parse.y (static tree kw_super, static tree kw_this): New global
19525         static.
19526         (%union): tree wfl field of operator member replaced by int
19527         location. WFLs are non longer created for operators.
19528         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
19529         (qualified_name:): Now calls make_qualified_name to build the
19530         identifier.
19531         (type_declaration:): Consider generating <clinit> when class
19532         parsing completed.
19533         (variable_declarator:): Directly build an assignment node when the
19534         variable is initialized when declared.
19535         (this_or_super:): Build a WFL and set current location when THIS
19536         or SUPER are parsed.
19537         (expression_statement:): Wrap statement around a WFL.
19538         (primary_no_new_array:): Fixed typo. Changed value returned by
19539         THIS_TK because of its new type (temporary).
19540         (dim_exprs:): Temporary fix because of OSB_TK's new type.
19541         (field_access:): Build qualified name with SUPER.
19542         (method_invocation:): Fixed returned value because of SUPER's new
19543         type.
19544         (array_access:): Use OSB_TK location information.
19545         (post_increment_expression:, post_decrement_expression:,
19546         unary_expression:, pre_increment_expression:,
19547         pre_decrement_expression:, unary_expression_not_plus_minus:,
19548         cast_expression:, multiplicative_expression:,
19549         additive_expression:, shift_expression:, relational_expression:,
19550         equality_expression:, and_expression:, exclusive_or_expression:,
19551         inclusive_or_expression:, conditional_and_expression:,
19552         conditional_or_expression:, assignment:): Use new location/token
19553         information available on operators.
19554         (create_class): Set super_decl_type to NULL_TREE when processing
19555         java.lang.Object.
19556         (register_fields): Field initialization is now a MODIFY_EXPR
19557         node. Chain initialization code to the matching lists (according
19558         to the field declaration modifiers).
19559         (maybe_generate_clinit): New function.
19560         (method_header): Don't set method's DECL_NAME to a WFL when adding
19561         methods to java.lang.Object.
19562         (resolve_and_layout): Now can return NULL_TREE if the type
19563         resolution fails. Otherwise, return the class DECL instead of its
19564         TYPE.
19565         (check_method_redefinition): Don't patch method DECL_NAME if it
19566         belongs to java.lang.Object.
19567         (process_imports): Simply assign error_found to the value returned
19568         by check_pkg_class_access.
19569         (declare_local_variables): Don't use their init statements (if
19570         any) when parsing error were previously found. Reuse MODIFY_EXPR
19571         build during parsing as an init statement.
19572         (java_method_add_stmt): Now return the current method body.
19573         (java_layout_parsed_class, java_register_parsed_class): Functions
19574         removed.
19575         (java_complete_expand_methods): Initialize the constant pool on a
19576         per class basis. Layout the classes before expanding their method
19577         bodies. Don't try expand artificial constructor code if error were
19578         found. Make the classes data and register them if no error were
19579         found.
19580         (java_complete_expand_method): Retrieve an artificial constructor
19581         argument list before entering its body. Assign the top block to
19582         the artificial constructor function body and set types of declared
19583         blocks and compound statements to void. Walk method body if not an
19584         artificial constructor.
19585         (make_qualified_name, cut_identifier_in_qualified): New functions.
19586         (resolve_expression_name): Fixed comments. Save/restore the
19587         current class CLASS_LOADED_P flag value. Build non qualified
19588         static field access and handle qualified expression names.
19589         (resolve_field_access, resolve_qualified_expression_name): New
19590         functions.
19591         (patch_method_invocation_stmt): Use the new expression resolution
19592         scheme, calling resolve_field_access when the function call is
19593         resolved as an expression.
19594         (qualify_ambiguous_name): Function rewritten to work on qualified
19595         expression produced by make_qualified_name.
19596         (java_complete_tree): Promote type when function's argument are
19597         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
19598         the assignment to discover further errors if RHS is a expression
19599         name that fails to evaluate. Declare LHS initialized even though
19600         the assignment failed. Don't use the location variable and removed
19601         extra argument in patch function calls. Now handle the ARRAY_REF
19602         case and build internal string representation when STRING_CSTs are
19603         walked.
19604         (build_method_invocation): Don't wrap function call around a WFL.
19605         (build_assignment): Likewise. Use the operator location
19606         information.
19607         (patch_assignment): Handle array access LHSs. Handle error
19608         provenance, resulting in a better error report.
19609         (build_binop): Use op_location from operator as binop location
19610         information.
19611         (build_unaryop, build_incdec, build_cast): Likewise.
19612         (patch_binop): Extract location information from the node. Fixed
19613         typo in error message.
19614         (patch_unary_op): Extract location information from the node.
19615         (build_array_ref, patch_array_ref): New functions.
19616
19617 1998-07-01  Tom Tromey  <tromey@cygnus.com>
19618
19619         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
19620         match _Jv_IsInstanceOf.
19621         * decl.c (init_decl_processing): Use _Jv_NewArray, not
19622         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
19623
19624 1998-06-30  Tom Tromey  <tromey@cygnus.com>
19625
19626         * decl.c (init_decl_processing): Functions are now named
19627         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
19628
19629 1998-06-29  Per Bothner  <bothner@cygnus.com>
19630
19631         * java-tree.h (load_class):  Add prototype.
19632         * class.c (is_compiled_class):  Add missing arg to load_class.
19633         * expr.c (expand_java_NEW):  Call load_class.
19634         * parse.y (process_import):  Removed bogus use of void return value.
19635
19636 1998-06-25  Per Bothner  <bothner@cygnus.com>
19637
19638         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
19639         Function name is "_Jv_Throw" instead of "soft_athrow".
19640         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
19641         Function name is "_Jv_AllocObject" instead of "soft_new".
19642         Takes an extra parameter (object size).
19643         * expr.c:  Update calls.
19644
19645 1998-06-24  Per Bothner  <bothner@cygnus.com>
19646
19647         * lex.c (java_get_line_col):  Handle end-of-file.
19648         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
19649
19650 1998-06-24  Andrew MacLeod  <amacleod@cygnus.com>
19651
19652         * lang.c (lang_init): Make -fexceptions the default.
19653         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
19654         exception handling is not turned on.
19655
19656 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
19657
19658         * lang.c (flag_new_exceptions): Make this this default.
19659         * decl.c (end_java_method): Call emit_handlers.
19660         * except.c (method_init_exceptions): Set language code and version.
19661         (expand_start_java_handler): Enable exception, and call
19662         expand_eh_region_start.
19663         (expand_end_java_handler): Enable exception, and set up catch blocks.
19664         (emit_handlers): New routine to generate the saved handlers.
19665         * java-except.h (emit_handlers): Add prototype.
19666
19667 1998-06-12  Per Bothner  <bothner@cygnus.com>
19668
19669         We used to have three different representations of the constant pool:
19670         the CPool structure, the tree_constant_pool, and the constructures
19671         used to build the Class object (which may need class and string
19672         constants) in compiled code.  None were appropriate for compiling
19673         to .class files, so I did a major overhaul.
19674
19675         First, the tree_constant_pool array was removed.  Things were
19676         modified to the CPool structure in the JCF could be used.
19677         Second, a "capacity" field was added to the CPool, and functions
19678         written to search for a matching constant, adding one if not found.
19679         The code that generated the Class object was changed to use a CPool.
19680         The actual TREE_LISTs used to build the CONSTRUCTORs used for
19681         the static Class object are now only in build_constants_constructor.
19682         Finally, I wrote code which can generate a .class file (including its
19683         constant pool) from the RECORD_TYPE of a class.  This is a big step
19684         on the way to compiling Java source into .class files.
19685
19686         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
19687         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
19688
19689         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
19690         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
19691         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
19692         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
19693         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
19694         (lang_type):  Removed constant_pool field.
19695         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
19696         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
19697         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
19698         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
19699
19700         * constants.c (current_constant_pool_tags, current_constant_pool_data,
19701         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
19702         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
19703         (set_constant_entry, find_constant1, find_constant2,
19704         find_class_constant, count_constant_pool_bytes, write_constant_pool,
19705         find_utf8_constant, find_class_or_string_constant):  New functions.
19706
19707         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
19708         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
19709         (give_name_to_class, get_class_constant):  Likewise.
19710         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
19711         (get_name_and_type_constant, get_ref_constant):  Removed.
19712         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
19713         * parse.y:  Don't save/restore tree_constant_pool.
19714         * verify.c (verify_jvm_instructions):  Update for new approach.
19715         * expr.c (expand_invoke, expand_java_field_op): Likewise.
19716
19717         * lang-options.h:  Added -femit-class-file, -femit-class-files.
19718         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
19719         (lang_f_options):  Added "emit-class-file(s)".
19720
19721         * expr.c (build_java_arrayaccess):  Generate more efficient array
19722         bounds checking, by using unsigned compare.
19723
19724         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
19725
19726 1998-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19727
19728         * parse.h: New comment on the handling of unresolved type
19729         identifiers. JDEPs are now part of the jdep_code enum.
19730         (typedef struct jdep): Now use enum jdep_code or int, depending on
19731         availability. Both are narrowed down to an 8 bits bitfield.
19732         (CALL_EXPR_PRIMARY): Fixed comment.
19733
19734 1998-06-10  Tom Tromey  <tromey@cygnus.com>
19735
19736         * Make-lang.in (java): Added gjavac and jvgenmain.
19737         (java.start.encap): Depend on gjavac.
19738         (java.rest.encap): Depend on jvgenmain.
19739
19740         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
19741         (JAVA_CROSS_NAME): Likewise.
19742         (java.all.build): Depend on jvgenmain and gjavac.
19743         (java.all.cross): Depend on jvgenmain and gjavac-cross.
19744         (jvgenmain$(exeext)): New target.
19745         (java.install-common): Wrote.
19746         * config-lang.in (compilers, stagestuff): Added gjavac and
19747         jvgenmain.
19748
19749 1998-06-10  Dave Brolley  <brolley@cygnus.com>
19750
19751         * lang.c (lang_decode_option): New argc/argv interface.
19752
19753 1998-06-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19754
19755         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
19756         * decl.c (build_decl_no_layout): New function.
19757         * expr.c (java_lang_expand_expr): Layout declarations found in
19758         blocks before they're pushed.
19759         * jcf-parse.c (load_class): Save current line when parsing class
19760         file.
19761         (parse_source_file): Register class before expanding their
19762         methods.
19763         * lang.c (put_decl_node): Produce `null' when `void *' is
19764         processed.
19765         * lex.c (static tree wfl_op): New static global, for error report
19766         on casts.
19767         (java_init_lex): wfl_operator and wfl_op initialized
19768         here. Filename caching added for wfl_op. Return wfl_op when `(' is
19769         parsed.
19770         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
19771         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
19772         build_unresolved_array_type): New static function definitions.
19773         (build_decl_no_layout): New extern function declared.
19774         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
19775         faulty modifier exists.
19776         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
19777         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
19778         (UNARY_PLUS_EXPR): New fake operator.
19779         (struct parser_ctxt): New field osb_number.
19780         * parse.y (static tree wfl_operator): New static WFL for operator
19781         bound error messages.
19782         (DECR_TK, INCR_TK): Moved.
19783         (OP_TK): Tagged <operator>.
19784         (array_type:): Now call build_unresolved_array_type.
19785         (dim_expr:): Count the number of '[' seen.
19786         (post_increment_expression, post_decrement_expression,
19787         pre_increment_expression, pre_decrement_expression,
19788         unary_expression_not_plus_minus, unary_expression:): Actions are
19789         now building the corresponding unary expressions.
19790         (cast_expression:): Actions are now building cast expressions.
19791         (build_unresolved_array_type): New function.
19792         (create_interface): Reset the number of declared interfaces.
19793         (create_class): Likewise.
19794         (method_header): Methods declared within the scope of an interface
19795         are now implicitly set public and abstract.
19796         (java_complete_class): Variable's and parameter's type are patched
19797         with a promoted type.
19798         (declare_local_variables): Resolved non builtin types are promoted
19799         before being used to build a variable decl. Removed type patch
19800         posted on variable initialization statement.
19801         (source_start_java_method): Use build_decl_no_layout to build the
19802         decl of a parameter of incomplete type.
19803         (java_register_parsed_class): Process interfaces too. Call
19804         rest_of_decl_compilation on each processed class declarations.
19805         (java_complete_expand_methods): Don't attempt to expand things in
19806         interfaces.
19807         (java_complete_tree): Process CONVERT_EXPR, even though it always
19808         has a type. Propagate error_mark_node to node's type too. Promote
19809         method's call argument type and return error_mark_node if
19810         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
19811         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
19812         handle unary operator nodes.
19813         (build_assignment): Added comment.
19814         (print_int_node): New function.
19815         (patch_assignment): New second argument. New error handling. Use
19816         print_int_node. Handle references. Use can_cast_to_p to issue
19817         different error message according to the context and check upon
19818         the initialization of the RHS.
19819         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
19820         (operator_string): Handle more operators.
19821         (patch_binop): No longer use a function static
19822         wfl_operator. Improved error message on shift distance.
19823         (build_unaryop, build_incdec, build_cast, patch_unaryop,
19824         patch_cast): New functions.
19825
19826 1998-06-05  Per Bothner  <bothner@cygnus.com>
19827
19828         * jvspec.c:  New file.
19829         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
19830
19831         * java-tree.h (identifier_subst):  Add declaration.
19832
19833 1998-06-04  Tom Tromey  <tromey@cygnus.com>
19834
19835         * jvgenmain.c (main): Generate call to JvRunMain.
19836
19837         * class.c (make_class_data): Push value for "sync_info" field.
19838         * decl.c (init_decl_processing): Push "sync_info" field.
19839
19840 1998-06-03  Per Bothner  <bothner@cygnus.com>
19841
19842         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
19843         Java (source) name, not signature.
19844         Set TYPE_ALIGN to (at least) that of element_type.
19845
19846 1998-06-02  Per Bothner  <bothner@cygnus.com>
19847
19848         * class.c:  Moved classname-mangling-rekated code to ...
19849         * mangle.c:  ... this new file.
19850         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
19851         * Makefile.in:  Update for above changes.
19852
19853 1998-06-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19854
19855         * expr.c (truthvalue_conversion): Convert integer and floating
19856         point value to their truth value.
19857         * lex.c (java_lex): Handle the `null' literal.
19858         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
19859         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
19860         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
19861         New macros.
19862
19863         * parse.y: Reorganization/documentation on token declaration.
19864         (binop_lookup[]): New added new tree codes.
19865         (relational_expression): Build corresponding binary operators.
19866         (equality_expression, conditional_and_expression,
19867         conditional_or_expression): Likewise.
19868         (java_complete_class): Fix crash in debug message.
19869         (java_complete_tree): Check initialization of method call
19870         arguments. Further bogus node evaluation to detect more error
19871         during assignments. Handles more binary operators.
19872         (patch_assignment): Use DECL_P.
19873         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
19874         code.
19875         (operator_string): Handle more case. Compacted source.
19876         (patch_binop): Changed function comment. Checking for
19877         uninitialized first operand takes the compound assignment into
19878         account and uses DECL_P. Checking for uninitialized second operand
19879         delayed to routine's end. Use macros to issue type bound error
19880         messages and issue messages on both operands if their types are
19881         different. Force fixed type into node. Handle all binary
19882         operators.
19883
19884 1998-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19885
19886         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
19887         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
19888         build operator node and return tokens.
19889         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
19890         * parse.h (java_complete_tree): Changed returned type in prototype.
19891         (build_method_invocation, build_assignment, patch_assignment,
19892         patch_binop): New static function declarations.
19893         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
19894         BUILD_EXPR_WFL): New macros.
19895         * parse.y (enum tree_code binop_lookup[]): New static for token to
19896         TREE_CODE lookup.
19897         (%union): Parser union has new sub-structure `operator'.
19898         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
19899         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
19900         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
19901         ASSIGN_ANY_TK): Tokens tagged `operator'.
19902         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
19903         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
19904         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
19905         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
19906         (assignment_operator:): Rule tagged `operator'.
19907         (expression_statement:): Re-installed default rule.
19908         (method_invocation:): Sub rules call build_method_invocation.
19909         (postfix_expression:): Don't attempt to resolve name here. Just
19910         return an ID.
19911         (multiplicative_expression:): Sub-rules build corresponding binop
19912         expression node.
19913         (additive_expression:, shift_expression:, and_expression:,
19914         exclusive_or_expression:, inclusive_or_expression:): Likewise.
19915         (assignment:): Sub rule invoke build_assignment.
19916         (assignment_operator:): Default rules on sub rules.
19917         (force_error): Added documentation on this variable.
19918         (declare_local_variables): Build initialization calling
19919         build_assignment.
19920         (expand_start_java_method): Removed unused rtx declaration. Mark
19921         arguments as already initialized.
19922         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
19923         (java_complete_expand_methods): Don't process next method if
19924         completion of the previous one triggered errors.
19925         (java_complete_expand_method): Call source_end_java_method if no
19926         error were found during completion.
19927         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
19928         locals declaratilon. Handle names found within a class. Return
19929         error_mark_node when things aren't found.
19930         (patch_method_invocation_stmt): Return error_mark_node on failures.
19931         (patch_invoke): Removed unused local. Return the correct node.
19932         (java_complete_tree): Now returns a value. The BLOCK section binds
19933         local identifiers and the type of a BLOCK is now void. Assign the
19934         result of operand completion on COMPOUND_EXPR. Assign the
19935         encapsulated node of a WFL to the result of its completion, except
19936         when the node is an identifier. Now handle MODIFY_EXPR and several
19937         binary operators. Return error_mark_node on errors.
19938         (build_method_invocation, build_assignment, patch_assignment,
19939         build_binop, operator_string, patch_binop): New functions.
19940         * typeck.c (binary_numeric_promotion): New function.
19941
19942 1998-05-21  Per Bothner  <bothner@cygnus.com>
19943
19944         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
19945         Replace most uses of ident_subst by identifier_subst.
19946
19947         * class.c (push_class_static_dummy_field):  Removed function.
19948         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
19949         instead of looking got "class" static field.  Create that decl here.
19950         (class_identifier_node):  Removed;  no longer needed.
19951         (init_class_processing):  Don't init class_identifier_node.
19952         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
19953         Do nreverse 0 times (instead of twice) for Object and Class.
19954         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
19955
19956 1998-05-20  Per Bothner  <bothner@cygnus.com>
19957
19958         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
19959         while initializing linenumber_count and linenumber_table.
19960         Do it before init_function_start (which calls emit_line_note).
19961         * expr.c (expand_byte_code):  Don't need to clear lineno here.
19962
19963 1998-05-18  Tom Tromey  <tromey@cygnus.com>
19964
19965         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
19966         then mangle number as _N_.
19967
19968         * class.c (mangle_class_field): New function.
19969         (build_class_ref): Set assembler name of class reference using
19970         mangle_class_field.
19971         (push_class_static_dummy_field): Likewise.
19972
19973 1998-05-17  Michael Tiemann <tiemann@cygnus.com>
19974
19975         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
19976         of assigning to TREE_CODE.  The latter method exploits a feature
19977         of GCC that is not ANSI compliant.
19978
19979 1998-05-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19980
19981         * decl.c (pushdecl_force_head): New function.
19982         (pushlevel): Removed conditional printf.
19983         (complete_start_java_method): Don't enter local variable scope if
19984         function is compiled from source code.
19985         * expr.c: parse.h now included
19986         (java_lang_expand_expr): New function.
19987         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
19988         printf. Terminate buffer when doing directories.
19989         * jcf-parse.c (parse_source_file): Call lang_init_source before
19990         parsing and before code generation.
19991         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
19992         use printf if the macro is defined.
19993         * lang.c (lang_init): Install lang_expand_expr hook on
19994         java_lang_expand_expr.
19995         (java_dummy_print): New function.
19996         (lang_init_source): New function.
19997         * lex.c (java_lex): Remember location of an opening brace at the
19998         second nesting level.
19999         (java_is_eol): Unget character seen after a CR if it is EOF.
20000         * parse.h: Now includes lex.h
20001         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
20002         printf if the macro is defined.
20003         (expand_start_java_method, build_expr_block, enter_block,
20004         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
20005         New static function declarations.
20006         (pushdecl_force_head): New extern function declaration.
20007         (INCOMPLETE_TYPE_P): New macro.
20008         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
20009         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
20010         BLOCK_EXPR_ORIGIN): New macros.
20011         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
20012         DECL_SOURCE_LINE_LAST): New macros.
20013         (struct parser_ctxt): Removed field current_method_decl, redundant
20014         with the field current_function_decl. Added fields
20015         first_ccb_indent1 and pending_block.
20016         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
20017         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
20018         tagged <node>
20019         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
20020         (compilation_unit:): Cosmetic on sub rule.
20021         (type_declaration:): Cosmetic on sub rules. Added an error rule.
20022         (variable_initializer:): Installed default rule on expression:.
20023         (method_declaration:): method_header: starts a new
20024         method. method_body: installs the function body, absorbs blocks
20025         emitted for temporary variable scopings, pops function's body block
20026         and merges function's last statement lineno in DECL_SOURCE_LINE.
20027         (method_body:): Installed default rules.
20028         (block:): Call enter_block when an opening brace is seen.  Absorb
20029         scoping blocks and call exit_block when a closing brace is seen.
20030         (block_statement:): Cosmetic changes.
20031         (method_invocation:): Create WFL around CALL_EXPR node.
20032         (patch_stage): Added comment around definition.
20033         (method_header): Try to use first_ccb_indent1 as the first line of
20034         the method, so BP debug info are emitted at the first opening
20035         brace of the function. If the function has no body, use the
20036         location of the function's name. Override currently defined method
20037         name with the matching WFL so we can point redefinition errors
20038         using the location where the function's name was declared.
20039         (check_abstract_method_header): Interprets DECL_NAME as an
20040         identifier or as a WFL, accordingly.
20041         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
20042         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
20043         location and name information out of it and reinstall DECL_NAME to
20044         its original identifier node value.
20045         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
20046         function's source code).
20047         (read_import_dir): Test the value returned by find_class and issue
20048         a fatal accordingly.
20049         (declare_local_variables): Push a new block for the scope of the
20050         new variable(s) if code has been already generated at that nesting
20051         level. Pinpoint redefinition errors using the variable id
20052         WFLs. Generate initialization code if necessary. If the variable
20053         type is incomplete, register a patch on its decl.
20054         (source_start_java_method): Rewritten. Define a new block for the
20055         function's parameters. Build parameter decl out of function's
20056         arguments and register them for a patch if their types are
20057         incomplete.
20058         (expand_start_java_method): Includes the part of
20059         source_start_java_method that was pushing the parameter decls and
20060         completing the method start code.
20061         (source_end_java_method): Removed call the expand_end_bindings and
20062         poplevel (already taken care of). Reinstall function's arguments
20063         and get function's last line of code before calling
20064         expand_function_end.
20065         (java_method_add_stmt): New comment before the function's
20066         code. Complement the second operand of the current COMPOUND_EXPR
20067         if necessary.
20068         (java_complete_expand_methods): Don't generate debug info on line
20069         zero when expanding a generated constructor.
20070         (java_complete_expand_method): Set start and end line numbers for
20071         a artificially generated constructor to one and manually call
20072         enter_block and exit_block when defining it. For all methods:
20073         expand function's start calling the new expand_start_java_method
20074         and invoke java_complete_tree on the effective method's body, if
20075         any.
20076         (resolve_expression_name): Now use lookup_name_in_blocks to search
20077         local variable decls and print out an error when variables are
20078         undefined.
20079         (patch_method_invocation_stmt): Inserted comment before the
20080         function's code.
20081         (lookup_method_invoke): Chain method's arguments using chainon
20082         with the current arg list as a second argument. Inserted missing
20083         IDENTIFIER_POINTER when reporting an error on methods not found.
20084         (refine_accessible_methods_list): Don't retain constructors.
20085         (patch_arguments): Function removed.
20086         (java_complete_tree): Inserted comment before the function's
20087         code. New case for BLOCKs. Moved the WFL case a bit
20088         further. Complete function's arguments.
20089         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
20090         maybe_absorb_scoping_blocks): New functions.
20091
20092 1998-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20093
20094         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
20095         previously set.
20096         * jcf-parse.c (parse_source_file, java_error_count): New forward
20097         and extern declarations.
20098         (java_parse_abort_on_error): Macro moved.
20099         (jcf_parse_source): fatal called if fopen fails. Now calls
20100         parse_source_file.
20101         (parse_source_file): New parse_only parameter. Reflects the
20102         elimination of the second pass.
20103         (yyparse): parse_source_file called with argument set to 0.
20104         * jcf.h (JCF_ZERO): Sets java_source to zero.
20105         * lex.c (java_init_lex): pass argument is gone. Function modified
20106         to be called once during the analysis of a file.
20107         (java_unget_unicode): Fixed typo in fatal message.
20108         (java_get_line_col): Likewise.
20109         (java_lval): Likewise. String literals no longer built during
20110         second pass.
20111         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
20112         account.
20113         * parse.h (MODIFIER_WFL): New macro.
20114         (parse_check_super, parser_check_super_interface): Now return int.
20115         (parser_chain_incomplete_item, not_builtin_p,
20116         complete_method_decl): Declarations removed.
20117         (build_method_invocation_stmt, build_invoke): Renamed using the
20118         `patch' instead of `build'
20119         (register-incomplete_type, obtain_incomplete_type,
20120         java_complete_tree, java_complete_expand_method,
20121         unresolved_type_p, create_jdep_list): New function declarations.
20122         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
20123         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
20124         (jdep): New typedef on new struct _jdep.
20125         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
20126         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
20127         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
20128         JDEP_RESOLVED_P): New macros.
20129         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
20130         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
20131         JDEP_VARIABLE): New enum values and jdep kinds.
20132         (jdeplist): New typedef on struct _jdeplist.
20133         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
20134         macros.
20135         (CALL_EXPR_PRIMARY): New macro.
20136         (struct parser_ctxt): Fields java_pass, current_method_decl,
20137         method_decl_list deleted. New field jdeplist.
20138         (INCOMPLETE_P): Macro deleted.
20139         * parse.y (single_type_import_declaration:): Removed pass switch.
20140         (type_import_on_demand_declaration): Likewise.
20141         (field_declaration:): Removed pass switch on all sub rules.
20142         (class_declaration:): Call the complete_class_decl removed on
20143         class_body rules.
20144         (method_declaration:): Removed second pass switch. No longer chain
20145         methods decl when method_header reduced.
20146         (method_header:): Sub rules no longer depend on pass switch.
20147         (method_declarator:): Likewise.
20148         (method_body:): Likewise.
20149         (abstract_method_declaration:): Likewise.
20150         (block_statement:): Likewise.
20151         (local_variable_declaration:): Likewise.
20152         (argument_list:): Likewise.
20153         (method_invocation:): Likewise. Call to build_method_invocation_stmt
20154         removed. Partial CLASS_EXPR tree node built instead.
20155         (postfix_expression:): Removed pass switch on all sub rules.
20156         (java_pop_parser_context): Free classd_list content.
20157         (yyerror): Call obstrack_grow0 to finalize error message.
20158         (check_class_interface_creation): Comment modified to reflect new
20159         returned value meaning. Removed second pass switch. Return 1 if an
20160         error was found, 0 otherwise. Adjust pointer on filename if a
20161         leading path separator was found.
20162         (maybe_create_class_interface_decl): Removed first pass switch
20163         when linking the class decl to the class_list. Install a new
20164         jdep_list for the class.
20165         (add_superinterfaces): List of unresolved interfaces is
20166         gone. Unresolved interfaces are directly added to the current
20167         dependencies list.
20168         (create_interface): Second pass shortcut removed.
20169         ctpx->modifier_ctx access through MODIFIER_WFL.
20170         (create_class): Second pass shortcut removed. Call to
20171         register_incomplete_type replaces the call to
20172         parser_chain_incomplete_item.
20173         (complete_class_decl): Function removed.
20174         (duplicate_declaration_error): New way of retrieving redeclared
20175         item type.
20176         (register_fields): Call to lookup_modifier_cl replaced by
20177         MODIFIER_WFL. New way of handling unresolved type, using
20178         unresolved_type_p and obtain_incomplete_type.
20179         register_incomplete_type replaces call to parser_chain_incomplete_item.
20180         (patch_stage): New static global variable.
20181         (method_header): New way of handling unresolved type, using
20182         unresolved_type_p and obtain_incomplete_type. patch_stage used to
20183         indicates that the method decl needs to be patched.
20184         (check_abstract_method_header): Call to lookup_modifier_cl
20185         replaced by MODIFIER_WFL.
20186         (method_declarator): Incomplete argument type are registered
20187         calling register_incomplete_type. Patch on the declared method is
20188         issued in that case.
20189         (unresolved_type_p): New function.
20190         (parser_check_super_interface): New comment to reflect function's
20191         modified returned type (int). Function and has a new argument
20192         this_wfl. Call to parse_error_context uses this_wfl instead of
20193         relying on lookup_cl.
20194         (parser_check_super): Comment reflects function's new returned
20195         type (int). Function returns nonzero value on error.
20196         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
20197         register_incomplete_type, jdep_resolve_class): New functions to
20198         handle incomplete types in declarations.
20199         (java_complete_class): Rewritten to work with the new incomplete
20200         type handling scheme.
20201         (complete_class_report_errors): Likewise.
20202         (complete_method_decl): Removed: it jobs is now handled by
20203         java_complete_class.
20204         (do_resolve_class): Class loaded in not already loaded and not
20205         found in Java source code.
20206         (java_check_regular_methods, java_check_abstract_methods): Don't
20207         call complete_method_decl anymore.
20208         (lookup_modifier_cl, not_builtin_p): Functions deleted.
20209         (read_import_dir): Got rid of the pass number dependency.
20210         (declare_local_variables): New handling of unresolved types (patch
20211         issued).
20212         (source_start_java_method): New parameter level. Function called
20213         with level set to 1 when argument types are potentially
20214         unresolved.  Called to complete the job with level set to 2 once
20215         types are complete.
20216         (source_end_java_method): Call to permanent_allocation
20217         removed. Waiting to be replaced by a more suitable obstack
20218         management.
20219         (java_complete_expand_methods, java_complete_expand_method,
20220         java_expand_finals): New functions.
20221         (build_method_invocation_stmt): Renamed
20222         patch_method_invocation_stmt. Extracts function call expression
20223         (wfl) and arguments (args) from CALL_EXPR tree operands.
20224         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
20225         call. Patch the function and argument operand of the CALL_EXPR
20226         tree argument.
20227         (patch_argument, java_complete_tree): New functions.
20228
20229 1998-04-20  Per Bothner  <bothner@cygnus.com>
20230
20231         Recover from missing fields and methods (i.e. error instead of fatal).
20232         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
20233         * expr.c (expand_invoke):  Recover from missing method.
20234         (expand_java_field_op):  Recover from missing field.
20235         Inline references to java.lang.{Integer,Char,...}.TYPE.
20236         * typeck.c (get_type_from_signature), java-tree.h:  New function.
20237         * class.c (add_method):  Use get_type_from_signature.
20238         (build_class_ref):  Handle a class that was not found.
20239         * typeck.c (convert):  Handle conversion to pointers (for convenience).
20240         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
20241         instead of lookup_field to handle missing fields.
20242
20243         * jcf-parse.c (process_zip_dir):  Set java_source.
20244
20245 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
20246
20247         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
20248
20249 1998-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20250
20251         * jcf-parse.c (load_class): Don't change input_filename before
20252         calling jcf_parse_source (but still do it before calling
20253         jcf_parse).
20254         (jcf_parse_source): Assign input_filename after having saved the
20255         parser context.
20256         * lex.c (java_init_lex): Chain a WFL node to the import on demand
20257         list. ctxp->modifier_ctx zeroed according to its new
20258         definition. ctxp->filename initialized. Removed
20259         JAVA_MODIFIER_CTX_UNMARK.
20260         (java_unget_unicode): Update the character based column position.
20261         (java_allocate_new_line): ref_count not used anymore. Always free
20262         ctxp->p_line. Initialize c_line->char_col to 0.
20263         (java_get_unicode): Update the character based column position.
20264         (java_lex): Use ctxp->elc to store current position in source
20265         file, at the beginning of the parsed token. Set modifier_ctx entry
20266         corresponding to the parse modifier to a WFL node. Return a WFL
20267         node when an identifier is parsed.
20268         (java_lex_error): Now uses ctxp->elc to store current position in
20269         source.
20270         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
20271         * lex.h (build_wfl_node): New function definitions.
20272         (struct java_line): ref_count and next fields are gone. New field
20273         char_col.
20274         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
20275         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
20276         (JAVA_COLUMN_DELTA): New macro.
20277         (java_lc): New typedef on new struct _java_lc.
20278         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
20279         (parse_error_context, parse_warning_context): Changed prototypes.
20280         (java_get_line_col): Added as an available global function.
20281         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
20282         (IC_DECL): Replaced by macro IC_TYPE
20283         (DEPEND_WFL): New macro.
20284         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
20285         wrong modifier.
20286         (exit_java_complete_class): Removed a commented out statement.
20287         (struct parser_ctxt): Added comments on fields. modifier_ctx is
20288         now an array of tree nodes. Deleted fields line_list and
20289         e_line. New field elc, to replace e_line.
20290         * parse.y (array_type:): Build WFL node.
20291         (qualified_name:): Build a single WFL node out of two. Retain
20292         the location information of the first node in the resulting node.
20293         (package_declaration:): Use package name as a WFL node
20294         (single_type_import_declaration:): Use imported name as a WFL node.
20295         (type_import_on_demand_declaration:): Use root of the imported
20296         packages as a WFL node.
20297         (field_declaration:): Removed unused local variable cl.
20298         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
20299         (yyerror): New static elc. Removed static error_line, error_pos.
20300         New local code_from_source. Save ctxp->elc into elc at the first
20301         pass. Call java_get_line_col to get a string of the line where
20302         the error occurred.
20303         (debug_line): Removed static function.
20304         (parse_error_context, parse_warning_context): Parameter cl is now
20305         a WFL node. Use its value to initialize ctxp->elc.
20306         (redefinition_error): Parameter cl is now a WFL node.
20307         (parse_add_interface): New parameter wfl. No longer call
20308         lookup_cl, use wfl instead.
20309         (check_class_interface_creation): Parameter cl is now a WFL node.
20310         (maybe_create_class_interface_decl): Likewise.
20311         (add_superinterfaces): New function.
20312         (create_interface): Removed local cl, node, super_decl,
20313         super_decl_type.  Function now uses id as a WFL node. Better
20314         warning/error report on obsolete or forbidden mix of
20315         modifiers. Now calls add_superinterfaces to register interfaces.
20316         (create_class): Removed local cl, node. Local variable id is used
20317         as a WFL node. Better error report on forbidden modifier
20318         mix. Uses add_superinterfaces to register interfaces.
20319         (find_field): Argument cl is now a WFL node. Now store the WFL
20320         node of a fields that needs to be checked for their
20321         initialization.
20322         (method_header): Local variable node non longer used. Local
20323         variable id replaces cl.
20324         (check_modifiers_consistency): Local variable cl is now a WFL
20325         node.
20326         (method_declarator): Local variable cl replaced by parameter id.
20327         (parser_qualified_name): Now uses parameter name as a WFL node.
20328         (parser_check_super_interface): New parameter wfl, for achieve
20329         greater accuracy during error reports.
20330         (parser_chain_incomplete_item): New parameter named location. Used,
20331         along the decl, to construct the incomplete item node.
20332         (java_complete_class): resolve_class now uses WFL node extracted
20333         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
20334         where appropriate.
20335         (complete_method_decl): Unresolved function's argument types are WFL.
20336         (resolve_class): Parameter cl is now a WFL node.
20337         (resolve_and_layout): Likewise.
20338         (do_resolve_class): Likewise. Try first to use cl and then do the
20339         lookup on the decl when calling check_pkg_class_access.
20340         (complete_class_report_errors): Use IC_TYPE in place of
20341         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
20342         instead of doing a lookup over the decl.
20343         (java_check_final): Use WFL info from field tree list.
20344         (lookup_cl): Rewritten and returns a statically defined WFL node.
20345         (lookup_modifier_cl): Now uses information from WFL nodes.
20346         (process_imports): Likewise.
20347         (read_import_dir): name and cl arguments replaced by a single WFL
20348         node. Function modified accordingly.
20349         (find_in_imports_on_demand): Now uses WFL node.
20350         (check_pkg_class_access): cl argument is now a WFL node.
20351         (declare_local_variables): Fixed to use WFL nodes.
20352         (resolve_expression_name): Likewise.
20353         (build_method_invocation_stmt): name_combo argument renamed
20354         wfl. Function modified to use WFL nodes.
20355         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
20356         (lookup_method_invoke): cl is now a WFL node. Added missing
20357         IDENTIFIER_POINTER to class type decl name.
20358
20359 1998-04-14  Dave Brolley  <brolley@cygnus.com>
20360
20361         * lang.c (init_parse): Now returns char* containing the filename.
20362
20363 1998-04-10  Per Bothner  <bothner@cygnus.com>
20364
20365         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
20366
20367         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
20368         * class.c (make_class_data):  If flag_assume_compiled, initial class
20369         state is CSTATE_PREPARED; make superclass and interfaces direct
20370         references, rather than constant pool indexes.
20371
20372 1998-04-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20373
20374         * parser.y: Include flags.h. Removed debug variable pl.
20375         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
20376         (block:): Likewise.
20377         (labeled_statement_nsi:): Generate debug info when reducing
20378         expression_statement:.
20379         (check_pkg_class_access): get_access_flags_from_decl invocation
20380         fixed for new CLASS_* flags location.
20381         (source_end_java_method): Save/restore parser context when
20382         entering/leaving this routine. Restore lineno to its right value
20383         before calling expand_end_bindings.
20384         (build_method_invocation_stmt): build_invoke called with the
20385         current line information.
20386         (build_invoke): New argument cl. Wrap the function call around a
20387         wfl node.
20388         (refine_accessible_methods_list): Changed comment, removed
20389         unnecessary code.
20390         * parse.h: Fixed typo in comments.
20391         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
20392         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
20393         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
20394         parser_ccb_indent.
20395         * lex.c (java_lex): Record the last closing curly bracket of a
20396         function.
20397         * jcf-parse.c (jcf_parse_source): Now calls
20398         java_check_methods. Clarified comment, fixed typo.
20399
20400 1998-04-09  Dave Brolley  <brolley@cygnus.com>
20401
20402         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
20403         (finish_parse): Expose for non USE_CPPLIB builds.
20404
20405 1998-04-08  Jeffrey A Law  (law@cygnus.com)
20406
20407         * lang.c (lang_print_xnode): New function.
20408
20409 1998-04-03  Per Bothner  <bothner@cygnus.com>
20410
20411         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
20412         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
20413         used to build a class's dispatch table.
20414         (make_class_data):  Generate dispatch table if flag_assume_compiled.
20415         Set dtable of class object to address of class_dtable_decl.
20416
20417         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
20418         be volatile and have side effects - generates better code.
20419
20420         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
20421         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
20422
20423         * expr.c (expand_invoke):  If class is final, method is
20424         effectively final, so can call it directly.
20425
20426         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
20427
20428         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
20429
20430 1998-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20431
20432         * parse.y (build_method_invocation_stmt): Removed extra argument
20433         to build_invoke.
20434
20435 1998-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20436
20437         * expr.c (dtable_indent): Now static global.
20438         (expand_invoke): Now call invoke_build_dtable and
20439         build_invokevirtual.
20440         (invoke_build_dtable, build_invokevirtual): New functions.
20441         * jcf-io.c (find_class): Defer issuing a warning by setting
20442         jcf->outofsynch to 1.
20443         * jcf-parse.c (jcf_out_of_synch): New function.
20444         (load_class): Test this_jcf.outofsynch flag and call
20445         jcf_out_of_synch accordingly.
20446         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
20447         comment indentation.
20448         * lex.c (java_get_unicode): Fixed code indentation.
20449         (java_lex): Create string literal. Fixed typo. Removed several
20450         premature obstack_free.
20451         * parse.h: New enums for name resolution and invocation mode.
20452         (struct qualification): New data structure.
20453         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
20454         (do_resolve_class, build_method_invocation_stmt,
20455         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
20456         debug_line, identical_subpath_p, invocation_mode,
20457         refine_accessible_methods_list, build_invoke,
20458         lookup_method_invoke): New functions declared.
20459         (build_invokevirtual, invoke_build_dtable, match_java_method,
20460         build_field_ref, jcf_out_of_synch): New references to external
20461         functions.
20462         (struct parse_ctxt): Removed artificial_constructor field.
20463         * parse.y: (array_type:): Type defined for this rule.
20464         (class_type:): Installed default rule for interface_type:.
20465         (array_type:): Now build Java array type.
20466         (qualified_name:): Now use obstack_grow0.
20467         (method_declaration:): Skip the artificial constructor added to
20468         the list, if any.
20469         (abstract_method_declaration:): Execute the code only during pass 1.
20470         (block:): Installed default rule in block_statements:.
20471         (block_statement:): Add the statement to the method during pass 2.
20472         (statement_expression): Installed default rule for
20473         method_invocation:.
20474         (argument_list:): Added code to build the argument list.
20475         (method_invocation:): Added call to create the method invocation
20476         node.
20477         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
20478         (debug_line): New function for debug.
20479         (complete_class_decl): No longer do something during pass 1.
20480         (method_header): Use BUILD_PTR_FROM_NAME.
20481         (parser_qualified_classname): Use obstack_grow0. Removed bogus
20482         obstack_free.
20483         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
20484         function's main comment.
20485         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
20486         classes.
20487         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
20488         (resolve_class): Now works with arrays.
20489         (do_resolve_class, resolve_and_layout): New functions.
20490         (java_check_regular_methods): Reverse method list before and after
20491         having processed it. No longer set ctxp->artificial_constructor.
20492         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
20493         accordingly. Fixed typo in issued error message. Now use
20494         obstack_grow0.
20495         (find_in_imports_on_demand): Now use obstack_grow0.
20496         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
20497         (source_end_java_method): Call expand_expr_stmt instead of
20498         expand_expr. Calls it before calling expand_function_end.
20499         (java_method_add_stmt): Do nothing if errors were found during
20500         parsing.
20501         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
20502         (build_method_invocation_stmt, build_invoke, invocation_mode,
20503         lookup_method_invoke, refine_accessible_methods_list,
20504         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
20505         New functions.
20506         * typeck.c (build_java_signature): Properly end method signature
20507         if return type skipped.
20508         (match_java_method): New function.
20509
20510 1998-03-16  Per Bothner  <bothner@cygnus.com>
20511
20512         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
20513
20514 1998-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20515
20516         * expr.c (build_invoke_non_interface): New function.
20517         (methods_ident, ncode_ident): Now static globals.
20518         (expand_invoke): Use build_invoke_non_interface.
20519         * java-tree.h (struct lang_decl): New field function_decl_body.
20520         (DECL_FUNCTION_BODY): New macro.
20521         * jcf-parse.c (jcf_parse_source): Deeper check before setting
20522         CLASS_FROM_SOURCE_P.
20523         (parse_source_file): Fixed typos. Call java_layout_parsed_class
20524         before starting pass 2. Call to java_generate_parsed_class replaced
20525         by java_register_parsed_class.
20526         * lex.c: Fixed typo in header. Some line width related formating.
20527         * lex.h: Some line width related formating.
20528         * parse.h (source_end_java_method, resolve_expression_name,
20529         complete_class_decl, maybe_create_class_interface_decl,
20530         check_class_interface_creation): New static function declarations.
20531         (java_layout_parsed_class, java_method_add_stmt): New function
20532         declarations.
20533         (struct parser_ctxt): Field mark_class_generate removed. New
20534         fields class_list and artificial_constructor.
20535         * parse.y: Fixed typo in header.
20536         (class_declaration:): Call complete_class_decl when class body
20537         parsed.
20538         (method_declaration:): Call source_end_java_method in pass 2 when
20539         the method body is defined.
20540         (postfix_expression:): Do expression name resolution on sub-rule
20541         name during pass 2.
20542         (create_class, create_interface): Merged common pieces.
20543         (check_class_interface_creation, maybe_create_class_interface_decl):
20544         New functions.
20545         (complete_class_decl): New function.
20546         (register_fields): Fixed line width related typo.
20547         (method_header): Correctly skip first argument when fixing
20548         argument line. Changed the loop.
20549         (java_check_circular_reference): Now use ctxp->class_list.
20550         (java_complete_class): Removed start/stop marking.
20551         (java_check_regular_methods): Now takes a class decl as an
20552         argument.  Add default constructor if none were encountered.
20553         (java_check_methods): Now use ctxp->class_list. Changed call to
20554         java_check_regular_methods.
20555         (source_start_java_method): Set DECL_ARG_TYPE for each function
20556         arguments.
20557         (source_end_java_method, java_method_add_stmt): New functions.
20558         (java_generate_parsed_class): No longer exists.
20559         (java_layout_parsed_class, java_register_parsed_class): New functions.
20560         (resolve_expression_name): New function.
20561
20562 1998-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20563
20564         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
20565         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
20566         until pass initializations are done. Call read_import_dir with
20567         pass set to 0.
20568         * parse.h: (lookup_modifier_cl): New function declared.
20569         (INTERFACE_FIELD_MODIFIERS): New macro.
20570         (OBSOLETE_MODIFIER_WARNING): New macro.
20571         * parse.y: (register_fields): Class type and current field name in
20572         local variables. Check modifier(s) if adding field(s) to an interface.
20573         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
20574         and report errors using the faulty modifier line context.
20575         (lookup_modifier_cl): New function.
20576         (read_import_dir): Detect and report default import processing
20577         failure.
20578
20579 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
20580
20581         Add a pair of -fassume-compiled/-fno-assume-compiled options.
20582         * class.c (is_compiled_class): Return 1 after making sure it
20583         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
20584         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
20585         * java-tree.h (flag_assume_compiled): Add decl.
20586         * lang.c (lang_f_options): Add the flag.
20587         (flag_assume_compiled): Add decl, default to 0.
20588
20589 1998-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20590
20591         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
20592         (is_compiled_class): Likewise.
20593         (layout_class): Likewise.
20594         (layout_class): Detect and lay out classes defined in source code.
20595         (interface_of_p, add_interface_do, may_add_interface): New
20596         function.
20597         (add_interface): Now use add_interface_do.
20598         (add_method_1): New function.
20599         (add_method): Now use add_method_1.
20600         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
20601         (complete_start_java_method): New function.
20602         (start_java_mehod): Now call complete_start_java_method.
20603         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
20604         (expand_invoke): Likewise and fixed typo.
20605         *gjava.c: (print_super_field): Use new argument to find_class
20606         DO_CLASS_FILE.
20607         (main): Likewise.
20608         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
20609         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
20610         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
20611         IDENTIFIER_NODE.
20612         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
20613         (add_method_1, push_class): New prototypes.
20614         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
20615         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
20616         directory where the class was found.
20617         (find_class): New argument DO_CLASS_FILE. Function find_class
20618         modified accordingly.
20619         *jcf-parse.c: (fix_class_path): New function.
20620         (load_class): Use new VERBOSE argument. load_class now finds and
20621         loads/parses .class/.java files. Save read_state of current_jcf
20622         if necessary.
20623         (java_parser_abort_on_error): New macro.
20624         (jcf_parse_source, parse_source_file): New function.
20625         (jcf_parse): Fixed typo.
20626         (yyparse): Call parse_source_file () only.
20627         (process_zip_dir): Fixed typo, fix zdir->filename_length when
20628         writing the real class name back in the zip directory entry.
20629         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
20630         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
20631         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
20632         (find_class): Prototype fixed.
20633         *lex.c: Added 1998 time stamp.
20634         Removed all static global variables, moved into the parser
20635         context data structure.. Now include unistd.h if SEEK_SET not
20636         defined.
20637         (java_init_lex): Rewritten.
20638         (java_sneak_unicode): Modified current unicode access in current line.
20639         (java_unget_unicode): Likewise.
20640         (java_allocate_new_line): New allocation management.
20641         (java_read_char): Modified access and storage of unget_utf8_value.
20642         New way of processing current unicode.
20643         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
20644         (java_get_unicode): Now use the parser context.
20645         (java_lineterminator): Likewise.
20646         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
20647         of the reentrant parser implementation. Function now use the
20648         parser context data structure and java_lval. Fixed production of
20649         the float and double constant "out of range" error message. Fixed
20650         obstack use. Return integer value when hitting a modifier. Now
20651         return type for TRUE, FALSE and other predefined types. Return
20652         identifier as a TREE_LIST list containing the current line context
20653         as the TREE_VALUE sub-node.
20654         (java_unicode_2_utf8): Fixed typo in declaration.
20655         (java_lex_error): Now use the parser context data structure.
20656         *lex.h: Added 1998 time stamp.
20657         (struct java_line): New fields ref_count and next.
20658         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
20659         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
20660         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
20661         *parse.h: Added 1998 time stamp.
20662         (java_parse_source_file): Renamed from parse_source_file.
20663         (YYERROR_NOW, YYNOT_TWICE): Fixed.
20664         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
20665         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
20666         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
20667         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
20668         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
20669         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
20670         (struct parser_ctxt): New data structure to keep the parser context.
20671         *parse.y: Added 1998 time stamp, got rid of static global variables.
20672         (java_error_count, ctxp): New global variables.
20673         (%union): New value field.
20674         (numeric_type, integral_type): Rules removed.
20675         (primitive_type): Rule defined to handle integral, float, double and
20676         boolean types.
20677         (qualified_name, package_declaration,
20678         single_type_import_declaration, type_import_on_demand_declaration,
20679         modifiers, class_declaration, super, interfaces,
20680         interface_type_list, class_body, field_declaration,
20681         field_declaration, variable_declarators, variable_declarator,
20682         variable_declarator_id, method_declaration, method_header,
20683         formal_parameter_list, formal_parameter, method_body, block,
20684         static, interface_declaration, extends_interfaces,
20685         abstract_method_declaration, local_variable_declarators): Rules now
20686         define actions.
20687         (force_error, do_warning): New global statics.
20688         (push_parser_context, parser_context_save_global,
20689         parser_context_restore_global, pop_parser_context): New functions.
20690         (yyerror): Now uses the global parser context. Fixed use of obstack.
20691         (parse_error, parse_error_context, parse_warning_context,
20692         java_accstring_lookup, redefinition_error, check_modifiers,
20693         parser_add_interface, create_interface, create_class, find_field,
20694         duplicate_declaration_error, register_fields, method_header,
20695         check_modifiers_consistency, check_abstract_method_header,
20696         method_declarator, parser_qualified_classname,
20697         parser_check_super_interface, parser_check_super,
20698         parser_chain_incomplete_item, java_check_circular_reference,
20699         layout_class_from_source, java_complete_class,
20700         complete_method_decl, resolve_class, complete_class_report_errors,
20701         java_check_final, check_method_redefinition,
20702         java_check_regular_methods, java_check_abstract_methods,
20703         java_check_methods, lookup_java_interface_method2,
20704         lookup_java_method2, lookup_cl, find_name_in_single_imports,
20705         process_imports, find_in_imports, read_import_entry,
20706         read_import_dir, find_in_imports_on_demand,
20707         check_pkg_class_access, not_builtin_p, declare_local_variables,
20708         source_start_java_method, java_generate_parsed_class): New
20709         functions.
20710         *typeck.c: (signature_include_return): New global variable.
20711         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
20712         to add the function returned type in the signature.
20713
20714 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
20715
20716         * jcf-io.c (open_in_zip): Use strncmp and LEN.
20717
20718 1998-01-29  Dave Brolley  <brolley@cygnus.com>
20719
20720         * Make-lang.in (java.info): Added.
20721         (java.install-info): Added
20722
20723 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
20724
20725         * Makefile.in (clean): Also remove java/parse.c.
20726
20727 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
20728
20729         Add a pair of -fbounds-check/-fno-bounds-check options.
20730         * lang.c (lang_decode_option): Add code to grok arguments.
20731         (flag_bounds_check): Add decl.
20732         (lang_f_options): New array w/ the option in it.
20733         * java-tree.h (flag_bounds_check): Add decl.
20734         * lang-options.h: New file.
20735         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
20736         of a static macro value.
20737         (JAVA_ARRAY_EXCEPTION): Delete macro.
20738
20739 1998-01-23  Per Bothner  <bothner@cygnus.com>
20740
20741         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
20742         * expr.c (build_anewarray):  Add missing promote_type.
20743
20744 1998-01-22  Per Bothner  <bothner@cygnus.com>
20745
20746         Add array types with known length to optimize bounds checking.
20747         * typeck.c (build_java_array_type):  Take length parameter.
20748         (java_array_type_length, build_prim_array_type):  New functions.
20749         * java-tree.h:  Update for new functions.
20750         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
20751         * class.c:  Use build_prim_array_type.
20752         * expr.c (can_widen_reference_to):  Handle known-length array types.
20753         (verify_jvm_instructions):  Keep track of integer push instructions
20754         followed by newarray/anewarray, so we can build known-length arrays.
20755         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
20756         (java_array_data_offset):  New function.
20757         (build_java_array_length_access):  New function.  Optimize if constant.
20758         (build_java_arrayaccess):  Constant fold bounds check.
20759         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
20760         (build_newarray, build_anewarray):  New functions.
20761         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
20762         * verify.c (merge_types):  Handle known-lengh array types.
20763
20764 1998-01-19  Per Bothner  <bothner@cygnus.com>
20765
20766         * expr.c (expand_byte_code):  Fix performace bug, which caused
20767         searching linenumber_table to be linear rather than constant.
20768
20769 1997-12-12  Per Bothner  <bothner@cygnus.com>
20770
20771         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
20772
20773         * decl.c, java-tree.h (soft_fmod_node):  New global.
20774         * decl.c (init_decl_processing):  Define __builtin_fmod.
20775         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
20776         using __builtin_fmod.
20777
20778 1997-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20779
20780         * keyword.h: New file, output of keyword.gperf as processed by
20781         gperf.
20782         * lex.c (java_lex_init): Initialize java_error_flag.
20783         * parse.c (YYERROR_NOW): Uses java_error_flag.
20784         * parse.y: New static java_error_flag. Useless definition of
20785         buffer_error gone.
20786         * parse.y (java_error): Portable error recovery using
20787         java_error_flag (not yet completely tuned).
20788
20789 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
20790
20791         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
20792
20793 1997-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20794
20795         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
20796         (parse.c, lex.c, keyword.h): New rules for Java source code
20797         front-end.
20798         * parse.c: Renamed into jcf-parse.c.
20799         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
20800         * keyword.gperf: New file, Java keywords.
20801         * parse.y: New file, Java language grammar.
20802         * parse.h: New file, Java language grammar definitions.
20803         * lex.c: New file, Java language lexer.
20804         * lex.h: New file, Java language lexer definitions.
20805
20806 1997-12-03  Per Bothner  <bothner@cygnus.com>
20807
20808         * decl.c (clinit_identifier_node), java-tree.h:  New global.
20809         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
20810         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
20811         * expr.c (expand_java_field_op):  Check for invalid assignment
20812         to final field.
20813
20814         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
20815
20816 1997-10-27  Per Bothner  <bothner@cygnus.com>
20817
20818         * verify.c (verify_jvm_instructions):  When processing a handler,
20819         attempt to set the current_subr to the right value.
20820         (More complicated code combines Sep 17 and Oct 22 versions.)
20821
20822 1997-10-24  Per Bothner  <bothner@cygnus.com>
20823
20824         * class.c (push_class):  Figure out (guess) name of source file.
20825         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
20826         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
20827         (parse_class_file):  Change return type from int to void.
20828         Call debug_start_source_file/debug_end_source_file.
20829
20830         * expr.c (build_java_binop):  Fix masking 2nd operand.
20831         * decl.c (init_decl_processing):  Set sizetype first.
20832
20833 1997-10-22  Per Bothner  <bothner@cygnus.com>
20834
20835         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
20836         (Revert Sep 17 change.)
20837
20838 1997-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20839
20840         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
20841         .class extension in their name and fix thing so we don't process
20842         them parse_zip_file_entries().
20843         (parse_zip_file_entries): Cleaned unused local variables.
20844
20845 1997-10-20  Per Bothner  <bothner@cygnus.com>
20846
20847         * expr.c (can_widen_reference_to):  Allows equal array element types.
20848         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
20849         * jcf-dump.c (RET):  Get (and print) index.
20850
20851         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
20852         Promote element type to POINTER_TYPE.
20853
20854 1997-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20855
20856         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
20857         find_in_current_zip, jcf_figure_file_type): Moved from
20858         jcf-reader.c to parse.c.
20859         * zextract.c: (read_zip_archive): takes file_comment_length possible
20860         field into account.
20861
20862 1997-10-20  Per Bothner  <bothner@cygnus.com>
20863
20864         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
20865
20866         * verify.c (merge_types):  Handle array types even better ...
20867
20868 1997-10-17  Per Bothner  <bothner@cygnus.com>
20869
20870         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
20871
20872         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
20873         * class.c (make_class_data):  Don't build fields_decl if no fields.
20874         When building fields_decl, skip if DECL_ARTIFICIAL.
20875
20876         * expr.c (java_stack_swap):  Update stack_type_map.
20877         * verify.c (merge_types):  Handle array types better.
20878
20879 1997-10-15  Per Bothner  <bothner@cygnus.com>
20880
20881         * class.c (add_field):  Don't promote short integral fields to
20882         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
20883         * expr.c (push_value):  Promote and convert short integral values.
20884
20885         * decl.c, java-tree.h (integer_two_node):  New constant node.
20886         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
20887
20888 1997-10-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20889
20890         * class.c (append_gpp_mangled_type): Use function argument
20891         unpromoted type to generate mangled name.
20892
20893 1997-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20894
20895         * constants.c (build_constant_data_ref): Now uses current_class
20896         instead of main_class.
20897         (build_constants_constructor): Now uses current_class instead of
20898         main_class.
20899         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
20900         of the global variable SeepZipFiles done here.
20901         * zextract.c (read_zip_archive): extra_field optional field taken
20902         into account while computing the position of the class file in the
20903         archive.
20904         * verify.c (verify_jvm_instructions): Use current_jcf to search
20905         the constant pool.
20906         * parse.c (load_class): First search for the class to load in the
20907         current zip file. Saves current_jcf (restored before returning
20908         from that function). Don't call JCF_FINISH in the class was found
20909         in the current ZIP file.
20910         (jcf_parse): If the class was found in the current ZIP file, save
20911         its tree_constant_pool (for later reuse).
20912         (parse_class_file): New function. Process each method defined in
20913         the current class and record the class as to be later registered.
20914         (yyparse): Rewritten. Figure the type of the current file and switch
20915         accordingly.
20916         * lang.c: New global variable current_jcf.
20917         (lang_init): Removed compiling_from_source test (done later, in
20918         yyparse). Removed call the jcf_parse ().
20919         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
20920         (typedef struct JCF): New fields seen_in_zip (to mark a class found
20921         in the current ZIP file) and zip_offset (offset to the class data in
20922         the current zip file).
20923         * jcf-reader.c: zipfile.h included.
20924         localToFile: New ZipFileCache static global variable
20925         (parse_zip_file_entries): New function. Browse the current ZIP
20926         file directory and process each class found.
20927         (process_zip_dir): New function. Register each class found in the
20928         ZIP file directory. The class aren't parsed but a valid JCF is
20929         link to each of them.
20930         (find_in_current_zip): New function. Search for a class in the
20931         current ZIP file directory. If found, prepare the class so that it
20932         can be loaded.
20933         (jcf_figure_file_type): New function. Examine the file structure
20934         to figure a class file, a ZIP file. If none of these categories are
20935         matched, a source file is assumed.
20936         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
20937         SeenZipFile: New global variable.
20938         (open_in_zip): Use zipmember's length to accelerate the search for
20939         a member. If zipmember was NULL and zip file successfully read,
20940         return 0.
20941         * java-tree.h: New global variable current_jcf declared.  Added
20942         declaration for current_constant_pool_tags, current_constant_pool_data,
20943         current_constant_pool_length, current_constant_pool_data_ref.
20944         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
20945         store the JCF of classes seen in a zip file) and tree *constant_pool
20946         (to save a loaded class constant pool). current_class declared here.
20947         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
20948         retrieve method_ref_constant.
20949         (PUSHC): java_push_constant_from_pool now uses current_jcf.
20950         (OBJECT): get_class_constant now uses current_jcf.
20951         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
20952         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
20953         (expand_invoke): Now uses current_class instead of main_class
20954         (build_class_init): Now uses current_class instead of main_class
20955         * class.c: New static global variable registered_class.
20956         (register_class): New function.
20957         (emit_register_class): Modified to use registered_class instead of
20958         main_class
20959         (is_compiled_class): Now take into account class seen in the archive.
20960
20961 1997-10-06  Per Bothner  <bothner@cygnus.com>
20962
20963         * except.h:  Renamed to: java-except.h.
20964         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
20965         * except.c:  Add semi-working (commented out) implementation.
20966
20967         * expr.c (expand_iinc):  Add needed flush_quick_stack.
20968         * parse.c (set_source_filename):  New function.
20969         (give_name_to_class):  Set input_filename from package.classname.java.
20970
20971         * jcf-io.c (find_class):  Don't look first in ".".
20972
20973 1997-10-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20974
20975         * zextract.c (read_zip_archive): Now takes into account the
20976         extra_field field.
20977         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
20978
20979 1997-09-20  Per Bothner  <bothner@cygnus.com>
20980
20981         * constants.c, java-tree.h (build_internal_class_name):  New function.
20982         (alloc_class_constant):  Re-implement using build_internal_class_name.
20983         * class.c (make_class_data):  Likewise.
20984         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
20985
20986 1997-09-17  Per Bothner  <bothner@cygnus.com>
20987
20988         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
20989         to NULL before pushing an exception handler target.
20990
20991         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
20992         (java_stack_swap, java_stack_dup):  Re-write to be safe from
20993         clobbering registers.
20994         (build_class_init):  New function.
20995
20996 1997-09-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
20997
20998         * typeck.c (build_java_array_type): Temporary use
20999         permanent_obstack to create the array 'length' field.
21000         * expr.c (lookup_label): Temporay use permanent_obstack to create
21001         label if not found.
21002         * class.c (push_super_field): Tempory use permanent_obstack.
21003
21004 1997-09-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21005
21006         * typeck.c (type_for_mode): Now handles double_type_node and
21007         float_type_node.
21008         * verify.c (verify_jvm_instructions): The instruction following
21009         the wide bytecode is checked. OPCODE_ret added to the list of
21010         wide.
21011
21012 1997-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21013
21014         * class.c (make_class): Temporary use permanent_obstack. Set the
21015         class CLASS_P field to 1.
21016         (push_class): Temporary use permanent_obstack.
21017         (set_super_info): Temporary use permanent_obstack.
21018         (add_method): Temporary use permanent_obstack, set
21019         METHOD_TRANSIENT().
21020         (add_field): Temporary use permanent_obstack. Sets
21021         FIELD_VOLATILE() and FIELD_TRANSIENT().
21022         (build_class_ref): Temporary use permanent_obstack if the class
21023         isn't compiled.
21024         (build_static_field_ref): Temporary use permanent_obstack when
21025         creating field's rtl.
21026         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
21027         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
21028         and fields. Function finalized, as far as flag handling.
21029         (push_class_static_dummy_field): Temporary use permanent_obstack.
21030         (emit_register_class): Force generation of class registration at
21031         -O3 or deeper.
21032         * decl.c (end_java_method): Call permanent_allocation() before
21033         returning.
21034         * expr.c (can_widen_reference_to): Added comment to interface
21035         handling, fixed typo.
21036         (lookup_field): Now uses CLASS_P() to correct FIXME
21037         (expand_invoke): Verification on public && !static &&
21038         !abstract moved into soft_lookupinterfacemethod (kaffe).
21039         Use Object class dtable if objectref is an array when expanding
21040         invokeinterface.
21041         (java_push_constant_from_pool): Temporary use permanent_obstack
21042         for CONSTANT_string
21043         * parse.c (get_ref_constant): Temporary use permanent_obstack to
21044         create constant references.
21045         (get_constant): Temporary use permanent_obstack to create constant.
21046         (load_class): Temporary use permanent_obstack to load class.
21047         (jcf_parse): Temporary use permanent_obstack to perform class
21048         layout.
21049         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
21050         (build_java_signature): Temporary use permanent_obstack.
21051         * verify.c: (verify_jvm_instruction): removed unnecessary verification
21052         on ACC_SUPER flag.
21053         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
21054         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
21055         (CLASS_P): Defined
21056
21057 1997-09-11  Per Bothner  <bothner@cygnus.com>
21058
21059         * class.c (append_gpp_mangled_type):  Fix typo.
21060         (emit_register_class):  Use main_class to get class object, rather
21061         than looking for no-longer-existing static decl starting with _CL.
21062         * typeck.c (parse_signature_type):  Promote array element type
21063         if it is a RECORD_TYPE.
21064
21065 1997-09-10  Per Bothner  <bothner@cygnus.com>
21066
21067         * class.c (push_class_static_dummy_field):  New function.
21068         (mangle_static_field):  New. Do G++-style mangling of static fields.
21069         (layout_class):  Mandle static fields here, not in add_field.
21070         (build_class_ref):  The class object is now a dummy static field.
21071         * decl.c (find_local_variable):  Look for best, instead of first match.
21072         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
21073         (build_java_athrow):  Don't check here if exception is Throwable.
21074         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
21075         (TYPE_USED):  Removed.  No longer used ...
21076         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
21077         * verify.c (push_pending_label):  New function.
21078         (push_pending_block):  Renamed to check_pending_block.
21079         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
21080         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
21081         re-checking possible handlers) after a store (less wasted work).
21082         Check for null handler (finally) before calling add_handler.
21083         Various changes to (finally?) correctly handle try/finally.
21084
21085 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
21086
21087         * class.c: Include stdio.h.
21088
21089 1997-09-04  Per Bothner  <bothner@cygnus.com>
21090
21091         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
21092         to make sure class is initialized before static/special invoke.
21093
21094         * verify.c (verify_jvm_instructions):  On a store instruction,
21095         call find_local_variable to force pre-allocation of decl and rtx.
21096         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
21097
21098 1997-09-03  Per Bothner  <bothner@cygnus.com>
21099
21100         * class.c (build_class_ref):   Strip off "promoted_" if need be.
21101         (make_field_value): Call build_java_signature when needed.
21102         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
21103         * expr.c (build_java_athrow):  Don't push_value of exception.
21104         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
21105         match specification of [fd]cmp[lg] for NaNs.
21106         (expand_byte_code):  Add support for exception handler ranges.
21107         * except.c:  Add skeleton for EH code-generation.
21108         * verify.c (merge_types):  Treat all promoted integral types as equal.
21109         * constants.c (build_constants_constructor):  To force creation of
21110         current_constant_pool_data_ref, call build_constant_data_ref.
21111
21112         * javaop.def (lload):  Fix typo.
21113         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
21114
21115 1997-09-02  Brendan Kehoe  <brendan@lisa.cygnus.com>
21116
21117         * parse.c: Don't include function.h.
21118
21119 1997-08-27  Per Bothner  <bothner@cygnus.com>
21120
21121         * except.[ch]:  New files.
21122         * Makefile.in (JAVA_OBJS):  Add except.o
21123         * expr.c:  Temporary warning about unimplemented exceptions.
21124         * verify.c:  Verify exception handlers.
21125
21126         * jcf-dump.c (disassemble_method):  Print exception table.
21127
21128 1997-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21129
21130         * expr.c (verify_jvm_instructions): Started a thorough
21131         verification of invoke* bytecodes.
21132         (expand_byte_code): flush quick stack if PC is the target of a
21133         branch.  and undef RET (conflicting with config/i386/i386.h).
21134         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
21135         used.
21136         (expand_invoke): Now handles invokeinterface and do more
21137         verification according to the bytecode.
21138         (lookup_field): Don't try to load the class if processing
21139         dtable_type.
21140         (can_widen_reference_to): Now handles interfaces.
21141         * decl.c (init_decl_processing): New global variable
21142         soft_lookupinterfacemethod_node, declared in java-tree.h.
21143         Call set_super_info on string_type_node.
21144         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
21145         defined.
21146         * class.c (set_super_info): Fills the CLASS_* flags according to
21147         access_flags.
21148         (get_access_flags_from_decl): Handles all class flags.
21149
21150 1997-08-26  Per Bothner  <bothner@cygnus.com>
21151
21152         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
21153         * parse.c (yyparse):  Check for abstract method, and missing code.
21154         * expr.c (expand_byte_code):  Change interface.
21155         * lang.c (put_decl_node):  Print promoted types prettier.
21156         * verify.c (verify_jvm_instruction):  Change interface.
21157         Partial support for scanning exception table.
21158         For load instructions, handle promoted integral types.
21159
21160 1997-08-21  Per Bothner  <bothner@cygnus.com>
21161
21162         * verify.c:  New file, with contents moved from expr.c.
21163         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
21164         * typeck.c (is_array_type_p):  Moved here from expr.c.
21165         * java-tree.h:  Add some now-needed function declarations.
21166         * Makefile.in (JAVA_OBJS): Added verify.o.
21167
21168 1997-08-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21169
21170         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
21171         METHOD_ABSTRACT flag.
21172
21173         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
21174         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
21175         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
21176
21177         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
21178         variables.
21179         (start_java_method): Hook for SYNCHRONIZED methods.
21180
21181         * expr.c (build_java_jsr, build_java_ret): New functions
21182         (JSR,PRE): New macros
21183         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
21184         (verify_jvm_instructions): tableswitch, lookupswitch,
21185         monitorenter, monitorexit, goto_w: verified.
21186         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
21187         (build_java_monitor): New function.
21188         (MONITOR_OPERATION): Modified to call build_java_monitor()
21189         (verify_jvm_instructions): Started a thorough verification of
21190         invoke* bytecodes.
21191
21192 1997-08-19  Per Bothner  <bothner@cygnus.com>
21193
21194         Support verification of jsr/ret subroutines (used for try/finally).
21195         * decl.c (return_address_type_node):  New type node.
21196         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
21197         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
21198         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
21199         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
21200         TYPE_USED):  New macros for special types in type_map.
21201
21202         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
21203         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
21204         BCODE_JUMP_TARGET.
21205         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
21206
21207         * expr.c (can_widen_reference_to):  New function.
21208         (pop_type):  Use it.
21209         (merge_type_state):  Support handling start of subroutine.
21210         (push_pending_block):  Return char* error message, instead of calling
21211         fatal on an error.  Also handle subroutines.
21212         (verify_jvm_instructions):  Handle errors from push_poending_block.
21213         Support jsr and ret instructions.
21214
21215 1997-08-19  Per Bothner  <bothner@cygnus.com>
21216
21217         * jcf-io.c (find_classfile):  Fix thinko.
21218         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
21219
21220 1997-08-12  Jason Merrill  <jason@yorick.cygnus.com>
21221
21222         * Makefile.in (BISON): Remove.
21223
21224 1997-08-07  Per Bothner  <bothner@cygnus.com>
21225
21226         * Makefile.in:  Convert to autoconf.
21227         * config-lang.in (outputs):  Added java/Makefile.
21228
21229         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
21230         Rename cc1java to jc1.
21231
21232         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
21233         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
21234
21235         * class.c (class_depth):  Do load_class if needed.
21236
21237         Mostly better verification.
21238         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
21239         (init_decl_processing):  Change return type of soft_checkcast.
21240         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
21241         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
21242         lang_print_error):  New functions.
21243         (lang_init):  Set global hook print_error_function to lang_print_error.
21244         * expr.c:  In the type_map ptr_type_node is only used for null now.
21245         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
21246         (merge_types):  Dererence pointer to record types before comparing.
21247         (decode_newarray_type, merge_types):  On error just return NULL.
21248         (build_java_binop):  Add preliminary implementation (with warning)
21249         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
21250         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
21251         (expand_compare, expand_java_goto, expand_java_call):  Don't
21252         push_pending_block, since that only makes sense when verifying.
21253         (merge_type_state):  Different return codes.
21254         (push_pending_block):  A block may need to be verified more than once.
21255         (expand_byte_code):  Warn about unused code at code generation time.
21256         (verify_jvm_instruction):  Changed logic, since code may need to be
21257         re-verified if type-state has changed.  Also, better error handling.
21258         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
21259         Improve newarray, anewarray, ?aload, athrow,
21260         * java-tree.h (LABEL_CHANGED):  New macro.
21261
21262 1997-08-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21263
21264         * decl.c (soft_athrow_node): New global variable initialized.
21265         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
21266         * typeck.c (convert): Added support for REAL_TYPE.
21267         (convert_to_char): New function.
21268         (convert): Handle CHAR_TYPE.
21269         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
21270         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
21271         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
21272         promoted type.
21273         (verify_jvm_instructions): Added break a the end of bogus unop: label.
21274         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
21275         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
21276         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
21277         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
21278         to Use The Right Things.
21279         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
21280         compatible with INT. BOOLEAN is made equivalent to BYTE.
21281         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
21282         OPCODE_ifnonnull): Now supported.
21283         (build_java_athrow): New function.
21284
21285 1997-08-04  Per Bothner  <bothner@cygnus.com>
21286
21287         Rename method name <init> to match G++ (and fix mangling).
21288         * class.c (layout_class):  Replace method name of <init> by class name.
21289         (make_method_value):  Do inverse renaming of constructor from <init>.
21290         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
21291         * typeck.c (lookup_java_constructor):  New function.
21292         * expr.c (expand_invoke):  If method_name is <init>, call
21293         lookup_java_constructor to find constructor.
21294
21295         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
21296
21297 1997-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
21298
21299         * parse.c (get_class_constant): Modified to handle array "classes"
21300         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
21301         wide type.
21302         (convert): Modified to handle real type.
21303         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
21304         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
21305         variables declared.
21306         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
21307         soft_multianewarray, soft_newarray_node, soft_throw_node): New
21308         global variables initialized.
21309         (find_local_variable): Handles the case of a pointer
21310         (end_java_method): Restore the use of one more scope
21311         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
21312         build_java_array_length_access, expand_java_arrayload,
21313         expand_java_arraystore, expand_java_array_length,
21314         expand_java_multianewarray, expand_java_anewarray,
21315         build_java_check_indexed_type, is_array_type_p,
21316         build_java_throw_out_of_bound_exception): New functions.
21317         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
21318         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
21319         OPCODE_<t>aload): Implemented code for verification.
21320         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
21321         ARRAY_NEW_MULTI): Macro defined.
21322         (CONVERT): Modified to invoke convert().
21323         (case OPCODE_aload2): Fixed index typo from 2 to 1.
21324
21325 1997-07-31  Per Bothner  <bothner@cygnus.com>
21326
21327         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
21328         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
21329         (make_class_data):  Field name needs '/' as package prefix.
21330         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
21331
21332 1997-07-25  Per Bothner  <bothner@cygnus.com>
21333
21334         Implement debug information for local variables.
21335         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
21336         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
21337         DECL_LOCAL_SLOT_CHAIN):  New macros.
21338         (struct lang_decl_var):  New type.
21339         * parse.c (give_name_to_locals):  Move to decl.c.
21340         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
21341         (start_java_method):  Re-write parameter handling.
21342         (pending_local_decls):  New global variable.
21343         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
21344         (find_local_variable):  Accept pc so we can skips decls not in range.
21345         (struct binding_level):  Add end_pc field.
21346         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
21347         (various):  Change so current pc gets passed to find_local_variable.
21348
21349         * decl.c (init_decl_processing):  Re-arrange fields in
21350         class_type_node and and method_type_node to match kaffe 0.9.1.
21351         * class.c (make_method_value, make_class_data):  Update
21352         initializations to match.
21353
21354 1997-07-16  Per Bothner  <bothner@cygnus.com>
21355
21356         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
21357         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
21358         (push_super_field):  New function.
21359         (make_class_data):  Handle inheritance of class static initializer.
21360         (layout_class):  New name mangling.
21361         * constants.c (build_constant_data_ref):  Init type of data array
21362         to a one-element array.
21363         (build_constants_constructor):  Set DECL_SIZE from complete array type.
21364         * decl.c:  Rename class_type, object_type etc to class_type_node,
21365         object_type_node etc.  Make former inherit from latter.
21366         * expr.c (expand_invoke):  Add cast of function address.
21367         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
21368         * parse.c (yyparse):  Don't call layout_class here.
21369         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
21370
21371 1997-06-14  Per Bothner  <bothner@cygnus.com>
21372
21373         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
21374         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
21375         (alloc_class_constant):  New.
21376         * expr.c (expand_invoke):  Make sure method's class is initialized.
21377         * class.c (interits_from_p, emit_register_class):  New functions.
21378         * parse.c (yyparse):  Call emit_register_class.
21379
21380 1997-06-09  Per Bothner  <bothner@cygnus.com>
21381
21382         * constants.c:  New file, to handle constant pool.
21383         * Makefile.in (JAVA_OBJS):  Add constants.o.
21384         * decl.c (init_decl_processing):  Update, fix, finish various structs.
21385         (pushdecl_top_level):  New.
21386         * parse.c (layout_class):  Moved to class.c.
21387         * expr.c (java_push_constant_from_pool):  New function.
21388         * class.c (build_class_ref):  Make work fully
21389         (make_class_data):  Emit super-class, constant pool, interface vector.
21390
21391 1997-06-03  Per Bothner  <bothner@cygnus.com>
21392
21393         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
21394         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
21395         * class.c (class_depth):  New function.
21396         (lookup_named_class):  Replaced by new function lookup_class.
21397         * decl.c (object_type_node, string_type_node):  New.
21398         Remove various types that we no longer need.
21399         * expr.c (verify_jvm_instructions):  New separate verifier pass.
21400         (push_type, pop_type):  New functions for verifier.
21401         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
21402         (expand_byte_code):  Simplify, since we assume already verified.
21403         (expand_invoke):  Now mostly works.
21404         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
21405         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
21406         * parse.c:  Wait to allocate class object until we know its name.
21407         (layout_class):  Calculate DECL_VINDEX for each virtual method.
21408         * typeck.c (get_array_type):  Rename to ...
21409         (build_java_array_type):  ... and provide working implementation.
21410         (build_java_signature):  New function - build Java signature of type.
21411         (set_java_signature):  New function - cache signature with type.
21412         (lookup_java_method):  New function.
21413
21414 1997-05-06  Per Bothner  <bothner@deneb.cygnus.com>
21415
21416         * class.c (ident_subst):  Take extra SUFFIX parameter.
21417         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
21418         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
21419         (build_class_ref):  Actually implement.
21420         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
21421         * decl.c (builtin_function):  New.
21422         (init_decl_processing):  Update for current Kaffe.  Declare some
21423         builtin Kaffe functions.
21424         * expr.c (build_address_of):  New.
21425         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
21426         Renamed (from expand_java_new etc), and added working implementations.
21427         (build_field_ref):  Now also handle static fields.
21428         (expand_invoke):  Implement invokestatic, and start implement rest.
21429         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
21430         * javaop.def:  Rename invokevirt -> invokevirtual.
21431         * lang.c (use_handles):  Removed.
21432         * parse.c:  Add support for ConstantValue attribute.
21433         Handle nested loading of a class.  (JPOOL_UTF):  New.
21434
21435 1997-03-11  Per Bothner  <bothner@deneb.cygnus.com>
21436
21437         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
21438
21439 1997-02-27  Per Bothner  <bothner@deneb.cygnus.com>
21440
21441         * Make-lang.in (java.install-man):  New empty rule.
21442         * typeck.c (set_local_type):  New function.
21443         * expr.c (STORE_INTERNAL):  Call find_local_variable,
21444         not find_stack_slot.  Call set_local_type.
21445
21446 1997-02-12  Per Bothner  <bothner@kalessin.cygnus.com>
21447
21448         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
21449         and building RECORD_TYPE CONSTRUCTORs.
21450         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
21451
21452         * lang.c (use_handles):  Change the default to 0.
21453         * decl.c:  Define and build class_type, field_type, utf8const_type.
21454         * class.c (make_class_data, make_field_value,
21455         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
21456         hashUtf8String, strLengthUtf8, mangled_classname:
21457         Functions to build reflective data structures.
21458         * parse.c (yyparse):  Call make_class_data.
21459
21460         * jcf-io.c (open_class, find_classfile):  New functions.
21461         * jcf-dump.c:  Support reading classfile from explicitly-named
21462         class file (without CLASSPATH searching).
21463
21464 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
21465
21466         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
21467         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
21468         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
21469         (get_constant):  Now trivial for CONSTANT_Utf8.
21470
21471         * jcf.h:  Make NEW_CPOOL the default.
21472         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
21473
21474 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
21475
21476         New directory.