OSDN Git Service

* gcj.texi (libgcj Runtime Properties): Remove obsolete
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2005-04-27  Bryce McKinlay  <mckinlay@redhat.com>
2
3         * gcj.texi (libgcj Runtime Properties): Remove obsolete
4         gnu.gcj.runtime.NameFinder.* system properties. Update documentation 
5         for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname.
6
7 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8
9         * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls
10         to `unlock_stream' with `unlock_std_streams'.
11
12 2005-04-25  Jakub Jelinek  <jakub@redhat.com>
13
14         * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H)
15         instead of just expr.h.
16
17 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18
19         * gjavah.c (main): Unlock the stdio streams.
20         * jcf-dump.c (main): Likewise.
21         * jv-scan.c (main): Likewise.
22         * jvgenmain.c (main): Likewise.
23
24 2005-04-23  DJ Delorie  <dj@redhat.com>
25
26         * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c,
27         parse.y: Adjust warning() callers.
28
29 2005-04-21  Bryce McKinlay  <mckinlay@redhat.com>
30
31         * gcj.texi (Object fields): Change "Integer" to "Int" in example
32         contructor.
33
34 2005-04-20  Bryce McKinlay  <mckinlay@redhat.com>
35
36         * gcj.texi: Fix typos and bogus example.
37
38 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
39
40         * except.c: Fix a comment typo.
41
42 2005-04-19  Julian Brown  <julian@codesourcery.com>
43
44         * decl.c (finish_method): Revert patch from 2005-04-13 for breaking
45         indirect dispatch with PIC.
46
47 2005-04-18  Andrew Haley  <aph@redhat.com>
48
49         * java-except.h (struct eh_range.handler): Remove unused field.
50         (handle_nested_ranges): Remove function declaration.
51         (sanity_check_exception_range): Add function declaration.       
52         * verify.c (verify_jvm_instructions): Remove call to
53         handle_nested_ranges.
54         * verify-glue.c (verify_jvm_instructions_new): Call
55         sanity_check_exception_range.
56         * except.c (link_handler, eh_range_freelist, link_handler,
57         handle_nested_ranges): Remove.
58         (add_handler): Rewrite.
59         (sanity_check_exception_range): New function.
60         (print_ranges): New function.
61
62 2005-04-13  Julian Brown  <julian@codesourcery.com>
63
64         * decl.c (finish_method): Give methods once-only linkage.
65
66 2005-04-11  Richard Sandiford  <rsandifo@redhat.com>
67
68         * lang.opt: Refer to the GCC internals documentation instead of c.opt.
69
70 2005-04-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
71
72         * java-tree.h: Don't use PARAMS().
73
74 2005-04-07  Per Bothner  <per@bothner.com>
75
76         * class.c (push_class): By default, suppress debug output.
77         (finish_class): Enable debug output for classes we're emitting.
78
79 2005-04-07  Andrew Haley  <aph@redhat.com>
80
81         * gcj.texi: Correct gcj-dbtool instructions.
82
83 2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>
84
85         * gcj.texi: Fix a typo.
86         * lang.c: Fix a comment typo.
87
88 2005-04-01  Thomas Fitzsimmons  <fitzsim@redhat.com>
89
90         * gcj.texi (Invoking gij): Add descriptions of new -X options.
91         Mention recognized-and-ignored compatibility options.
92         (Memory allocation): Add descriptions of JvMalloc, JvRealloc and
93         JvFree.
94         (About CNI): Add Memory allocation section.
95
96 2005-04-01  Tom Tromey  <tromey@redhat.com>
97
98         * decl.c (java_init_decl_processing): Fix types of
99         _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject,
100         _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray,
101         _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ.
102
103 2005-03-31  Jan Hubicka  <jh@suse.cz>
104
105         * Make-lang.in (class.o, decl.o): Depend on cgraph.h.
106         * class.c: Include cgraph.h
107         (make_local_functoin_alias): Mark aslias as needed.
108         * resource.c: Include cgraph.h
109         (compile_resource_data): Go via cgraph interface.
110
111 2005-03-30  Ian Lance Taylor  <ian@airs.com>
112
113         * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL.
114
115 2005-03-30  Tom Tromey  <tromey@redhat.com>
116
117         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where
118         inner_class_info_index==0 or outer_class_info_index==0.
119
120 2005-03-29  Tom Tromey  <tromey@redhat.com>
121
122         * gcj.texi (libgcj Runtime Properties): Document
123         gnu.gcj.runtime.endorsed.dirs.
124
125 2005-03-24  Anthony Green  <green@redhat.com>
126
127         * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to
128         'gcj-dbtool -p'.
129
130 2005-03-23  Tom Tromey  <tromey@redhat.com>
131
132         * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define.
133         (parse_version): Use it.
134
135 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
136
137         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
138
139 2005-03-18  Andrew Haley  <aph@redhat.com>
140
141         PR java/20522
142         * decl.c (update_aliases): Don't update variables that are about
143         to die.
144         (maybe_poplevels): Add comment.
145
146 2005-03-17  Bryce McKinlay  <mckinlay@redhat.com>
147
148         PR java/20502
149         * jcf-parse.c (duplicate_class_warning): New function.
150         (java_parse_file): Call duplicate_class_warning if 
151         CLASS_FROM_CURRENTLY_COMPILED_P is already set.
152         (parse_zip_file_entries): Likewise. Also set
153         CLASS_FROM_CURRENTLY_COMPILED_P.
154
155 2005-03-16  Andrew Haley  <aph@redhat.com>
156
157         * expr.c (expand_java_arrayload): Don't generate a
158         NullPointerException based on the type of the node.
159         (build_java_array_length_access): Likewise.
160
161 2005-03-15  Zack Weinberg  <zack@codesourcery.com>
162
163         * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi.
164
165 2005-03-11  Tom Tromey  <tromey@redhat.com>
166
167         * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'.
168         (libgcj Runtime Properties): Document the default .db.
169
170 2005-03-10  Ranjit Mathew  <rmathew@hotmail.com>
171
172         PR java/20312
173         * parse.y (checks_throws_clauses): Check exceptions list even when
174         the base class does not come from a source file being compiled.
175         (java_complete_lhs): Remove unused variable 'wfl'.
176
177 2005-03-09  Ranjit Mathew  <rmathew@hotmail.com>
178
179         PR java/20338
180         * decl.c (finish_method): Emit _Jv_InitClass for private static
181         methods inside inner classes as well.
182
183 2005-03-08  Julian Brown  <julian@codesourcery.com>
184         * Revert patch from 2005-03-08 for causing bootstrap failure on
185         ppc-darwin.
186
187 2005-03-08  Julian Brown  <julian@codesourcery.com>
188
189         * decl.c (finish_method): Give methods once-only linkage.
190
191 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
192
193         * lang.c (flag_new_verifier): Enable by default, regardless of ABI.
194
195 2005-03-07  Bryce McKinlay  <mckinlay@redhat.com>
196
197         * verify-glue.c (vfy_is_assignable_from): Perform static check using
198         can_widen_reference_to if the C++ ABI is in use.
199         (vfy_get_interface_count, vfy_get_interface): Remove unused functions.
200         * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type,
201         type_isresolved, init_state, set_pc, state_get_pc,
202         _Jv_BytecodeVerifier): Clean up unused and disabled functions.
203         (verify_fail): Report the current PC from the verifier context.
204         (free_state): Remove #if 0 block to enable this function.
205         (free_verifier_context): Call free_state on state_list iterator
206         values before freeing them.
207         * expr.c (pop_type_0): Pop correct type for error message when stack
208         contains a multi-word type.
209
210 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
211
212         * expr.c (build_java_array_length_access): Remove !flag_new_verifier
213         for known NULL array length access.
214
215 2005-03-07  Tom Tromey  <tromey@redhat.com>
216
217         * gcj.texi (Invoking gcj-dbtool): Document '-f'.
218
219 2005-03-06  Kazu Hirata  <kazu@cs.umass.edu>
220
221         * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h,
222         typeck.c: Update copyright.
223
224 2005-03-06  Ranjit Mathew  <rmathew@hotmail.com>
225
226         Remove xref code.
227         * xref.c, xref.h: Remove file.
228         * Make-lang.in (java/xref.o): Remove.
229         * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration.
230         * lang.c (flag_emit_xref): Remove definition.
231         * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove.
232         * typeck.c (convert): Remove use of do_not_fold.
233         * parse.y (do_not_fold): Remove definition.
234         (parser grammar): Remove xref code.
235         (maybe_create_class_interface_decl, create_class): Likewise.
236         (register_fields, method_header, finish_method_declaration): Likewise.
237         (declare_local_variables, source_end_java_method): Likewise.
238         (java_complete_expand_classes): Do not set do_not_fold.
239         (java_complete_expand_method): Remove xref code.
240         (java_expand_classes, resolve_field_access, patch_invoke): Likewise.
241         (java_complete_tree, java_complete_lhs, patch_assignment): Likewise.
242         (patch_binop, build_string_concatenation, patch_array_ref): Likewise.
243         (patch_synchronized_statement, patch_throw_statement): Likewise.
244         (maybe_build_class_init_for_field): Likewise.
245
246 2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>
247
248         * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P
249         instead of IS_NON_TYPE_CODE_CLASS.
250
251 2005-03-04  Andrew Haley  <aph@redhat.com>
252
253         PR java/18362
254         * class.c (set_method_index): Don't set method_index if it is
255         NULL_TREE.
256         (layout_class_method): Don't complain about "non-static method foo
257         overrides static method" in the case of indirect dispatch.
258
259 2005-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
260
261         * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic
262         warning.
263         * Make-lang.in: Don't elide warnings in jcf-io.c.
264
265 2005-03-01  Per Bothner  <per@bothner.com>
266
267         PR java/8608
268         * check-init.c (wfl): Remove static.
269         (final_assign_error, check_init): Replace calls to parse_error_context
270         by plain error.
271         (check_init): Save, set, and restore input_location for each exp.
272
273 2005-03-01  Per Bothner  <per@bothner.com>
274
275         * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45)
276         if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined.
277         * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents.
278
279 2005-03-01  Per Bothner  <per@bothner.com>
280
281         * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro.
282
283 2005-02-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
284
285         PR libgcj/16923
286         * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and
287         JvVMOption.
288
289 2005-02-22  Tom Tromey  <tromey@redhat.com>
290
291         PR java/20056:
292         * verify-impl.c (EITHER): New define.
293         (types_compatible): Handle it.
294         (check_field_constant): Use it.
295
296 2005-02-18  Tom Tromey  <tromey@redhat.com>
297
298         PR java/20056:
299         * verify-impl.c (types_equal): Fixed test.
300
301         PR java/20056:
302         * verify-glue.c (vfy_class_has_field): New function.
303         * verify.h (vfy_class_has_field): Declare.
304         * verify-impl.c (check_field_constant): Added 'putfield'
305         argument.
306         (verify_instructions_0): Updated.
307         (types_equal): New function.
308
309 2005-02-14  Tom Tromey  <tromey@redhat.com>
310
311         PR java/19921:
312         * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Note the
313         stack effect of multianewarray.
314
315 2005-02-14  Andrew Haley  <aph@redhat.com>
316
317         PR java/19907
318         * expr.c (expand_byte_code): Call promote_arguments().
319         (promote_arguments): New function.
320         * decl.c (check_local_unnamed_variable): Remove special case for
321         new verifier.
322         (find_local_variable): Promote all boolean types to int
323         when searching for local variable decls.
324
325 2005-02-12  Kazu Hirata  <kazu@cs.umass.edu>
326
327         * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c,
328         parse-scan.y: Update copyright.
329
330 2005-02-11  Per Bothner  <per@bothner.com>
331
332         PR java/15543
333         * parse-scan.y (input_location): Remove variable.
334         (main_input_filename): New - replaces input_filename, which isn't
335         settable if USE_MAPPED_LOCATION.
336         * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE,
337         so we don't reference input_location or wfl_operator in that case.
338         * jv-scan.c (expand_location): Remove - no longer used.
339         (main): Set main_input_filename rather than input_filename.
340
341 2005-02-09  Richard Henderson  <rth@redhat.com>
342
343         * builtins.c (initialize_builtins): Call build_common_builtin_nodes.
344         * decl.c (java_init_decl_processing): Initialize const_ptr_type_node.
345
346 2005-02-08  Marcin Dalecki  <martin@dalecki.de>
347
348         * expr.c (add_type_assertion): Use the proper enumeration type,
349         since this is what htab_find_slot() is expecting.
350
351 2005-02-06  Joseph S. Myers  <joseph@codesourcery.com>
352
353         * gcj.texi: Update copyright dates.
354
355 2005-02-02  Tom Tromey  <tromey@redhat.com>
356
357         * gcj.texi (libgcj Runtime Properties): Default library_control
358         to 'cache'.
359
360 2005-02-02  Ranjit Mathew  <rmathew@hotmail.com>
361
362         PR java/15543
363         * parse-scan.y (formal_parameter): Use $2 (type) instead of $$
364         (modifiers) when square brackets are present in a declaration for
365         a final paramter.
366         * jv-scan.c (main): Set input_filename and input_line.
367
368 2005-02-01  Tom Tromey  <tromey@redhat.com>
369
370         PR java/19742:
371         * gjavah.c (get_field_name): Don't override name for JNI header.
372
373 2005-02-01  Roger Sayle  <roger@eyesopen.com>
374
375         * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR
376         of unsigned types using iushr and lushr JVM bytecodes.
377
378 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
379
380         PR java/19738
381         * gjavah.c (jni_print_float): Do not emit floating-point
382         initialiser for a static final field.
383         (jni_print_double): Likewise.
384
385 2005-02-01  Mark Mitchell  <mark@codesourcery.com>
386
387         Revert:
388         2005-01-31  Mark Mitchell  <mark@codesourcery.com>
389         * gjavah.c (print_field_info): Mark static data members of
390         floating-point type with "__extension__".
391
392 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
393
394         * gjavah.c (print_field_info): Mark static data members of
395         floating-point type with "__extension__".
396
397 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
398
399         PR java/9157
400         * parse.y (build_string_concatenation): Remove redundant if.
401         (patch_conditional_expr): Attempt to patch_string() the condition
402         of a ?: as well, in addition to its other operands.
403
404 2005-01-25  Tom Tromey  <tromey@redhat.com>
405
406         * Make-lang.in (java/java-tree-inline.o): Removed.
407
408 2005-01-25  Ranjit Mathew  <rmathew@hotmail.com>
409
410         PR java/19070
411         * parse.y (patch_binop): Allow comparisons against NULL only
412         if the other operand is of a reference type.
413
414 2005-01-24  Tom Tromey  <tromey@redhat.com>
415
416         * java-tree.h (gcj_abi_version): Declare.
417         * class.c (make_class_data): Push gcj_abi_version into "next"
418         field.  Renamed field.
419         * decl.c (gcj_abi_version): New global.
420         (parse_version): New function.
421         (java_init_decl_processing): Call it.  Renamed 'next' field.
422         Include version.h.
423         (GCJ_BINARYCOMPAT_ADDITION): New define.
424
425 2005-01-24  Roger Sayle  <roger@eyesopen.com>
426
427         PR java/19295
428         * jcf-write.c (generate_bytecode_insns): Conversions between
429         integer types of the same precision shouldn't generate widening
430         or narrowing conversion bytecodes.
431
432 2005-01-22  Kazu Hirata  <kazu@cs.umass.edu>
433
434         * java-except.h, java-tree.h: Remove unused prototypes.
435
436 2005-01-20  Andrew Pinski  <pinskia@gcc.gnu.org>
437
438         PR java/18091:
439         * jcf-write.c (perform_relocations): Don't call memcpy if source
440         and destination are the same.
441
442 2005-01-17  Tom Tromey  <tromey@redhat.com>
443
444         * verify-impl.c (get_short): Sign extend.
445         (get_int): Likewise.
446
447 2005-01-12  Ranjit Mathew  <rmathew@hotmail.com>
448
449         * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT
450         with TYPE_SIZE.
451
452 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
453
454         * verify.c: Revert to the version before the BC-ABI merge.
455
456 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
457
458         PR java/19277
459         * check-init.c (check_init): Take care of references that do not
460         have an explicit final variable declaration (e.g. array length
461         access) for pre/post in/de-crement operators.
462
463 2005-01-08  Mark Wielaard  <mark@klomp.org>
464
465         * parse.y (process_imports): Allocate (and free) original_name only
466         when not already defined.
467         * jcf-parse.c (read_class): Free results of find_class() and
468         lrealpath().
469         (java_parse_file): Keep pointer to head of file_list and free when
470         done. Free result of lrealpath().
471
472 2005-01-05  Tom Tromey  <tromey@redhat.com>
473
474         * gcj.texi (Standard Properties): java.ext.dirs is now used.
475
476 2004-12-20  Andrew Haley  <aph@redhat.com>
477
478         * typeck.c: Use fold_convert for ints and booleans.
479
480 2004-12-17  Andrew Haley  <aph@redhat.com>
481
482         PR java/18931
483         * typeck.c (convert): Use a CONVERT_EXPR when converting to
484         BOOLEAN_TYPE or CHAR_TYPE.
485         (convert_to_boolean, convert_to_char) : Remove.
486         * convert.h (convert_to_boolean, convert_to_char) : Remove.
487         * expr.c (expand_load_internal): Do type conversion if type is not
488         as required.
489
490 2004-12-13  Danny Smith  <dannysmith@users.sourceforge.net>
491
492         PR target/18459
493         * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION.
494         Update comment.
495
496 2004-12-07  Andrew Haley  <aph@redhat.com>
497
498         PR java/18811:
499         * jcf-parse.c (load_class): Remove sanity test for missing inner
500         class file.
501
502 2004-12-06  Tom Tromey  <tromey@redhat.com>
503
504         * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
505         (java.uninstall): Likewise.
506         (java.maintainer-clean): Likewise.
507         (.INTERMEDIATE): Likewise.
508         (java.install-man): Likewise.
509         (gcj-dbtool.pod): New target.
510         * gcj.texi (Code Generation): Document -findirect-dispatch.
511         (libgcj Runtime Properties): Document
512         gnu.gcj.precompiled.db.path.
513         (Top): Link to "Invoking gcj-dbtool".
514
515 2004-12-06  Tom Tromey  <tromey@redhat.com>
516
517         PR java/14853:
518         * java-tree.h (extract_field_decl): Declare.
519         * parse.y (extract_field_decl): Renamed from
520         strip_out_static_field_access_decl.  No longer static.
521         * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs.
522
523 2004-12-03  Tom Tromey  <tromey@redhat.com>
524
525         * lang.c (flag_new_verifier): Define.
526         (java_post_options): Set flag_new_verifier if indirect dispatch
527         is being used.
528         * lang.opt (fnew-verifier): Removed.
529
530 2004-12-03  Tom Tromey  <tromey@redhat.com>
531
532         PR bootstrap/14614:
533         * Make-lang.in (java.install-common): Only install transformed
534         gcjh if gcj-cross exists.
535
536 2004-12-03  Andrew Haley  <aph@redhat.com>
537
538         PR java/18812
539         * except.c (link_handler): Patch 'outer' field of siblings of the
540         range we're demoting.
541
542 2004-12-03  Andrew Haley  <aph@redhat.com>
543
544         PR java/18697
545         * class.c (layout_class_method): Don't fail to override a method
546         simply because it has DECL_ARTIFICIAL set.
547
548 2004-12-02  Tom Tromey  <tromey@redhat.com>
549
550         PR java/16675:
551         * parse.y (craft_constructor): Special case null_pointer_node.
552
553 2004-12-02  Tom Tromey  <tromey@redhat.com>
554
555         PR java/18741:
556         * java-gimplify.c (java_gimplify_expr): Don't call
557         SET_EXPR_LOCATION unless wrapped tree is an expression.
558
559 2004-11-27  Per Bothner  <per@bothner.com>
560
561         * jcf-parse.c (set_source_filename):  Improvement to Andrew's fix:
562         Fix fencepost error in 'i', which got executed one too many times.
563         Also, fold memcpy into explicit loop, as originally intended.
564         Also, free temporary 'buf' which otherwise leaks.
565
566 2004-11-27  Per Bothner  <per@bothner.com>
567
568         * expr.c (build_expr_wfl): Only declare last_file and last_filenode
569         local static variables if not USE_MAPPED_LOCATION.
570
571 2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>
572
573         * class.c, decl.c, expr.c: Fix comment typos.
574
575 2004-11-26  Andrew Pinski  <pinskia@physics.uc.edu>
576
577         PR java/18305
578         * decl.c (end_java_method): Call
579         attach_init_test_initialization_flags on all the init_decls.
580         * parse.y (attach_init_test_initialization_flags): Move to ...
581         * expr.c (attach_init_test_initialization_flags): here and
582         support BIND_EXPR also.
583         * java-tree.h (attach_init_test_initialization_flags): Prototype.
584         * jcf-parse.c (parse_class_file): Don't disable class init
585         optimization.
586
587 2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>
588
589         * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote
590         in diagnostics.
591
592 2004-11-24  Richard Henderson  <rth@redhat.com>
593
594         * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type,
595         vfy_string_type, vfy_throwable_type): Use ANSI declaration form.
596
597 2004-11-24  Tom Tromey  <tromey@redhat.com>
598
599         * verify.c (defer_merging): Don't use C++-style comment.
600         * verify.h (java_opcode): Added java_opcode_end.
601         * class.c (build_class_ref): Remove C++ comment and old FIXME.
602
603         * verify-impl.c (vfy_push_type): Removed bogus "return".
604         (initialize_stack): Use vfy_alloc and vfy_free.
605         (verify_instructions_0): Likewise.
606
607         * Merged gcj-abi-2-dev-branch to trunk.
608
609 2004-11-24  Andrew Haley  <aph@redhat.com>
610
611         * jcf-parse.c (parse_class_file): Set file_start_location.
612
613 2004-11-10  Tom Tromey  <tromey@redhat.com>
614
615         * class.c (make_field_value): Don't call build_static_field_ref.
616         (build_static_field_ref): Don't emit direct references when using
617         indirect dispatch.
618
619         * gcj.texi (Invoking gij): Document -verbose.  Put -verbose and
620         -verbose:class into man page synopsis.
621
622 2004-11-09  Tom Tromey  <tromey@redhat.com>
623
624         * expr.c (build_java_arraystore_check): Still generate check if
625         element type is itself an array.
626
627 2004-11-08  Tom Tromey  <tromey@redhat.com>
628
629         * java-tree.h (soft_check_assignment_node): Removed.
630         (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE.
631         * decl.c (java_init_decl_processing): Don't initialize
632         soft_check_assignment_node.
633
634 2004-11-05  Tom Tromey  <tromey@redhat.com>
635
636         * class.c (layout_class_methods): Don't add Miranda methods when
637         using indirect dispatch.
638
639 2004-11-05  Bryce McKinlay  <mckinlay@redhat.com>
640
641         * class.c (make_class_data): Call emit_assertion_table to set the
642         'assertion_table' field.
643         (build_signature_for_libgcj): Move here from expr.c.
644         (add_assertion_table_entry): New function. Callback for assertion
645         hashtable traversal.
646         (emit_assertion_table): New. Take class argument, and generate
647         assertion table DECL based on the TYPE_ASSERTIONS hashtable.
648         * decl.c (init_decl_processing): Define assertion_entry_type record.
649         Push 'assertion_table' class field instead of 'verify'.
650         * expr.c (type_assertion_eq): Compare 'assertion_code' field.
651         (type_assertion_hash): Include 'assertion_code' in hash.
652         (add_type_assertion): Rewritten. Take class and assertion_code
653         arguments. Add assertions to the TYPE_ASSERTIONS hashtable.
654         (can_widen_reference_to): Use new add_type_assertion() arguments.
655         * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE,
656         JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE.
657         (verify_identifier_node): Removed.
658         (assertion_entry_type, assertion_table_type): New.
659         (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type
660         assertion code definitions.
661         (struct type_assertion): Add assertion_code. Rename 'source_type' and
662         'target_type' to 'op1' and 'op2'.
663         (add_type_assertion): Declare.
664         (lang_printable_name_wls): Remove unused definition.
665         * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion
666         to emit runtime assertion.
667         (vfy_note_stack_type): Clean up non-C90 declarations.
668         (vfy_note_local_type): Likewise.
669         * verify.h (vfy_is_assignable_from): Declare.
670         * verify-impl.c (is_assignable_from_slow): Remove unused function.
671         (ref_compatible): Rename arguments. Call vfy_is_assignable_from()
672         instead of is_assignable_from_slow().
673         (types_compatible): Reinstate ref_compatible() call.
674
675 2004-11-04  Tom Tromey  <tromey@redhat.com>
676
677         * class.c (build_static_field_ref): Reverted previous patch.
678
679         * class.c (build_static_field_ref): Don't emit direct references
680         when using indirect dispatch.
681
682 2004-11-03  Tom Tromey  <tromey@redhat.com>
683
684         * expr.c (expand_java_arrayload): Set lhs_type_node.
685         (expand_java_arraystore): Set rhs_type_node.
686
687 2004-11-02  Tom Tromey  <tromey@redhat.com>
688
689         * jcf-parse.c (compute_class_name): Use filename length from zip
690         directory, not strlen.
691
692         * expr.c (expand_invoke): Mark new interface methods as abstract.
693
694 2004-11-01  Tom Tromey  <tromey@redhat.com>
695
696         * verify-impl.c (push_jump): Removed check for uninitialized
697         objects.
698         (push_exception_jump): Likewise.
699         (handle_ret_insn): Likewise.
700         (handle_jsr_insn): Likewise.
701         (state_check_no_uninitialized_objects): Removed.
702
703         * decl.c (check_local_unnamed_variable): Recognize
704         promoted-to-int parameters when using the new verifier.
705         * expr.c (expand_java_arraystore): Explicitly request array type
706         when using new verifier.
707         (expand_java_arrayload): Likewise.
708         (invoke_build_dtable): Don't pass object_type_node as
709         expression argument to build_java_indirect_ref.
710         (build_java_check_indexed_type): Do nothing.
711         (build_java_arraystore_check): Handle case where array doesn't
712         have array type.
713         (build_java_array_length_access): Likewise.
714         (expand_invoke): Handle case where interface overrides a method
715         from Object.
716         (pop_type_0): Always succeed for reference types.
717         (process_jvm_instruction): Don't pop a value in a dead
718         exception handler.
719         (pop_arguments): Convert arguments to correct types.
720
721 2004-10-29  Andrew Haley  <aph@redhat.com>
722
723         * jcf-parse.c (give_name_to_class): Remove line that was
724         incorrectly merged.
725
726 2004-10-29  Andrew Haley  <aph@redhat.com>
727
728         * jcf-parse.c (set_source_filename): Add code to build new sfname.
729
730 2004-10-20  Andrew Haley  <aph@redhat.com>
731
732         * decl.c (end_java_method): Don't expand if flag_syntax_only.
733
734 2004-10-26  Tom Tromey  <tromey@redhat.com>
735
736         * verify.h (vfy_notify_verified): Removed.
737         * verify-glue.c (vfy_notify_verified): Removed.
738
739 2004-10-26  Tom Tromey  <tromey@redhat.com>
740
741         * verify-impl.c (debug_print_state): Declare `i' before code.
742         (merge_types): Modify `t' when it is null_type.
743
744 2004-10-26  Tom Tromey  <tromey@redhat.com>
745
746         * verify-impl.c (type_print): Renamed from print.  Now static and
747         takes an argument.
748         (debug_print_state): Use type_print.
749
750 2004-10-25  Tom Tromey  <tromey@redhat.com>
751
752         * expr.c (build_invokeinterface): Compute correct offset for
753         index into interface methods.
754
755 2004-10-20  Tom Tromey  <tromey@redhat.com>
756
757         * java-tree.h (verify_jvm_instructions_new): Declare.
758
759         * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1
760         command line.
761
762         * verify-impl.c (verify_instructions): Correctly handle wide
763         types on the stack.
764         * verify-glue.c (vfy_get_class_name): Use DECL_NAME.
765         (vfy_get_component_type): Strip pointer types.
766         (vfy_find_class): Use get_type_from_signature.  Strip pointer
767         types.
768         Include java-except.h.
769
770 2004-10-20  Bryce McKinlay  <mckinlay@redhat.com>
771
772         * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t,
773         vfy_push_type_t, set_variable, add_new_state, merge_into,
774         handle_jsr_insn, branch_prepass, check_class_constant,
775         check_wide_constant, get_one_type, compute_static_types,
776         verify_instructions_0): Clean up C99 declarations after statements.
777
778 2004-10-20  Tom Tromey  <tromey@redhat.com>
779
780         * verify-impl.c (merge_refs): Compare reference against iterator,
781         not ref2.
782
783         * verify-glue.c (vfy_tag): Mask off resolved flag.
784
785 2004-10-19  Tom Tromey  <tromey@redhat.com>
786
787         * verify-impl.c (verify_instructions): Call vfy_note_local_type.
788         (init_state_with_stack): Initialize `this_type' in state.
789         (verify_method): Use debug_print.
790         * verify-glue.c (vfy_is_primitive): Removed debugging print.
791         (vfy_note_stack_depth): Reverted last patch.
792         (vfy_note_stack_type): Note pointer to Object, not Object.
793         (vfy_note_local_type): Likewise.
794
795         * verify.h (vfy_note_instruction_seen): Declare.
796         * verify-glue.c (verify_jvm_instructions_new): Set
797         BCODE_EXCEPTION_TARGET on target instruction.
798         (vfy_note_instruction_seen): New function.
799         * verify-impl.c (FLAG_INSN_SEEN): New define.
800         (verify_instructions_0): Set flag on instruction.  Save state for
801         PC=0 later.
802         (verify_instructions): Call vfy_note_instruction_seen.
803
804         * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error.
805         (verify_jvm_instructions_new): Call method_init_exceptions,
806         add_handler, and handle_nested_ranges.
807         * verify-impl.c (verify_method): Return 1 on success.
808         (verify_instructions_0): Save the state at PC=0.
809
810         * verify-impl.c (init_type_from_class): Set is_resolved and
811         ref_next on new ref_intersection.
812         (init_type_from_string): Likewise.
813
814 2004-10-15  Bryce McKinlay  <mckinlay@redhat.com>
815
816         * expr.c (expand_bytecode): Use verify_jvm_instructions_new
817         if flag_new_verifier is set.
818         * java-tree.h (flag_new_verifier): Declare.
819         * lang.opt (fnew-verifier): New option.
820         * verify-impl.c: Work around namespace pollution by undef'ing
821         'current_class'.
822         (struct verifier_context): Make 'bytecode' const.
823         (verify_fail_pc): Pass -1 PC argument to vfy_fail.
824         (types_compatible): For the BC-ABI, always consider reference types
825         compatible.
826         (check_class_constant): Use vfr->current_class.
827         (check_constant): Likewise.
828         (check_wide_constant): Likewise.
829         (check_field_constant): Check for 'L' at start of type name.
830         (get_one_type): Return pointer instead of type. Set type result in
831         caller via passed type pointer.
832         (compute_argument_types): Update to use new get_one_type arguments.
833         (compute_return_type): Likewise.
834         (make_verifier_context): New. Allocate and initialize 'vfr'.
835         (free_verifier_context): New. Free 'vfr' and its contents.
836         (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context
837         and free_verifier_context.
838
839 2004-10-15  Tom Tromey  <tromey@redhat.com>
840
841         * verify-glue.c (vfy_note_local_type): Mark argument as unused.
842         * verify.h (vfy_fail): Fixed formatting.
843
844         * verify-impl.c (vfr): Fixed comment formatting.
845         (collapse_type): New function.
846         (verify_instructions): Notify compiler about type map.
847         * verify.h (vfy_note_stack_depth): Updated.
848         (vfy_note_stack_type): Likewise.
849         (vfy_note_local_type): Likewise.
850         (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type):
851         Declare.
852         * verify-glue.c (vfy_note_stack_depth): Correctly size type
853         state.  Added `method' argument.
854         (vfy_note_stack_type): Renamed from vfy_note_type.  Added `method'
855         argument.
856         (vfy_note_local_type): New function.
857         (vfy_unsuitable_type): Likewise.
858         (vfy_return_address_type): Likewise.
859         (vfy_null_type): Likewise.
860
861         * verify.h (VFY_IN_GCC): Removed.
862         (VFY_WANT_TYPEMAP): Removed.
863         * verify-impl.c (verify_instructions_0): Removed useless "\".
864         (struct state) <next>: Uncomment.
865
866 2004-10-13  Bryce McKinlay  <mckinlay@redhat.com>
867
868         * verify-impl.c: Formatting fixes. Reformat C++-style comments to
869         C-style.
870
871 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
872
873         * Make-lang.in (verify.o): Re-enabled this target.
874         * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED.
875         (vfy_get_interface): Likewise.
876         (verify_jvm_instructions_new): Renamed from verify_jvm_instructions.
877         * verify.h (verify_jvm_instructions_new): Declare.
878         * verify-impl.c (free_state): Temporarily comment out unused
879         function.
880
881 2004-10-06  Tom Tromey  <tromey@redhat.com>
882
883         * java-tree.h (JV_STATE_READ): New enum value.
884
885 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
886
887         * verify.h: New file.
888
889 2004-10-05  Bryce McKinlay  <mckinlay@redhat.com>
890
891         * verify-impl.c, verify-glue.c, verify.h: New files.
892         * Make-lang.in: Add rules for verify-impl.o and verify-glue.o.
893
894 2004-09-24  Andrew Haley  <aph@redhat.com>
895
896         * decl.c (check_local_unnamed_variable): Always use the PARM_DECL
897         for a slot if it's of pointer type.
898
899 2004-09-14  Tom Tromey  <tromey@redhat.com>
900
901         * class.c (make_class_data): Correctly initialize "state" field.
902         Initialize "engine" field.
903         * decl.c (java_init_decl_processing): Add "engine" field.
904
905 2004-09-10  Andrew Haley  <aph@redhat.com>
906
907         PR java/12760
908         * expr.c (build_invokeinterface): Use fast method for interface
909         dispatch.
910         * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE,
911         JTI_ITABLE_PTR_TYPE.
912         (struct lang_type): Add  itable_methods, itable_decl, itable_syms_decl.
913         (emit_symbol_table): Add new arg, element_size.
914         * decl.c (java_init_decl_processing): Initialize Class.itable.
915         * class.c (GEN_TABLE): New macro.
916         (gen_indirect_dispatch_tables): Use it.  Add itable.
917         (make_class_data): Add new arg for emit_symbol_table().
918         Emit itable.
919         (add_miranda_methods): Make sure search_class has been parsed.
920         (emit_symbol_table): Add new arg, element_size.
921
922 2004-09-06  Andrew Haley  <aph@redhat.com>
923
924         * verify.c (merge_types): Return Object for all merges of
925         interfaces.
926         * expr.c (add_type_assertion): Don't generate assertions when
927         source type is array of Object.
928
929 2004-09-03  Andrew Haley  <aph@redhat.com>
930
931         * class.c (finish_class): Nullify TYPE_VERIFY_METHOD.
932
933         * lang.c (java_post_options): Force flag_verify_invocations if
934         we're not using indirect dispatch.
935
936         * expr.c (pop_type_0): Move test for interfaces before call to
937         can_widen_reference_to().
938         (build_signature_for_libgcj): Remove generation of canonical array
939         type.
940         (add_type_assertion): Canonicalize both arrays.
941         Don't assert that type X can be assigned to Object.
942         Don't assert that type X an be assigned to type X.
943         Don't assert that Object can be assigned to type X.
944         (can_widen_reference_to): Warn whenever we generate an assertion.
945         (process_jvm_instruction): Use throwable_type_node for the type of
946         an exception class.
947
948 2004-09-01  Andrew Haley  <aph@redhat.com>
949
950         * decl.c (java_init_decl_processing): Change
951         verify_identifier_node to "__verify".
952         * expr.c (add_type_assertion): Use verify_identifier_node for name.
953         * java-tree.h (verify_identifier_node): Change to "__verify".
954
955         * expr.c (build_signature_for_libgcj): New function.
956         (add_type_assertion): Use it to construct signatures for
957         source_type and target_type.
958
959 2004-08-27  Andrew Haley  <aph@redhat.com>
960
961         * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE.
962         (verify_identifier_node): New.
963         (TYPE_VERIFY_METHOD): New.
964         (struct type_assertion): New type.
965         * expr.c (type_assertion_eq): New function.
966         (type_assertion_hash): New function.
967         (add_type_assertion): New function.
968         (can_widen_reference_to): Call add_type_assertion().
969         * decl.c (java_init_decl_processing): Add verify_identifier_node.
970         * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type).
971         (finish_class): Output TYPE_VERIFY_METHOD (type).
972
973         * decl.c (end_java_method): Nullify unused fields.
974
975 2004-08-17  Andrew Haley  <aph@redhat.com>
976
977         * verify.c (defer_merging): Quieten.
978         * jcf-parse.c (load_class): Only try to open a class file if it's
979         java.lang.Object or if it's part of the current compilation.
980         Check that the class we just tried to load is the class we just
981         loaded.  Quieten.
982         (java_parse_file): Set flag_verify_invocations off if we're
983         compiling from .class.
984         (parse_zip_file_entries): Abort if we try to read a dummy class.
985         * expr.c (can_widen_reference_to): Quieten.
986         (build_invokevirtual): Abort if we try to invokevirtual an
987         interface.
988         (expand_invoke): Don't build a non-interface call to an interface.
989         (build_instanceof): Don't do premature optimization if
990         flag_verify_invocations is not set.
991         * class.c (set_super_info): Disable code that inherits TYPE_DUMMY
992         from superclass.
993         (build_static_field_ref): Add correct type conversion for
994         field_address.
995         (add_miranda_methods): Disable generation of Miranda methods for
996         dummy classes.
997         (layout_class_method): Don't complain about non-static method
998         overrides static method with dummy classes.
999
1000 2004-08-13  Tom Tromey  <tromey@redhat.com>
1001
1002         * class.c (build_static_field_ref): Re-enable atable lookups for
1003         static fields.
1004
1005         * parse.y (strip_out_static_field_access_decl): Indentation fix.
1006
1007 2004-08-11  Tom Tromey  <tromey@redhat.com>
1008
1009         * gcj.texi (libgcj Runtime Properties): Document new properties.
1010
1011 2004-08-06  Andrew Haley  <aph@redhat.com>
1012
1013         * jcf-parse.c (load_class): Check that we really have loaded the
1014         class we're looking for.
1015
1016 2004-07-19  Andrew Haley  <aph@redhat.com>
1017
1018         * verify.c (verify_jvm_instructions): Comment change only.
1019
1020         * typeck.c (build_java_array_type): Add size field to array name.
1021
1022         * java-tree.h (LOCAL_SLOT_P): New.
1023         (update_aliases): Add PC argument.
1024         (pushdecl_function_level): New function.
1025
1026         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
1027         MODIFY_EXPR, and SAVE_EXPR.
1028         (java_gimplify_modify_expr): New function.
1029
1030         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
1031         (expand_iinc): Pass PC to update_aliases().
1032         (STORE_INTERNAL): Likewise.
1033         (process_jvm_instruction): Likewise.
1034
1035         * decl.c (base_decl_map): New variable.
1036         (uniq): New variable.
1037         (update_aliases): Rewrite with more thorough checking.
1038         (debug_variable_p): New function.
1039         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
1040         (check_local_named_variable): Delete whole function.
1041         (initialize_local_variable): New function.
1042         (check_local_unnamed_variable): Add checks and comments.
1043         (find_local_variable): Rewrite.
1044         (java_replace_reference): New function.
1045         (function_binding_level): New variable.
1046         (pushdecl_function_level): New function.
1047         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
1048         (maybe_pushlevels): Call pushdecl() on each of the new decls.
1049         (start_java_method): Reset uniq.  Create base_decl_map.  Set
1050         function_binding_level.
1051         (end_java_method): Null unused fields to save memory.
1052
1053 2004-06-29  Andrew Haley  <aph@redhat.com>
1054
1055         * except.c (expand_start_java_handler): Push a new binding level.
1056         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
1057         register_exception_range() to register where we'll do it.
1058         (expand_end_java_handler): Remove old bogus code.  Replace with
1059         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
1060         the top of the expression we're curently building.
1061         (maybe_end_try): Delete.
1062         * decl.c (binding_level.exception_range): New field.
1063         (clear_binding_level): Add field exception_range.  Reformat.
1064         (poplevel): Call expand_end_java_handler().
1065         (poplevel): Call java_add_stmt only if functionbody is false.
1066         (maybe_poplevels): Don't call maybe_end_try() from here.
1067         (end_java_method): Clear no longer used trees in function decl.
1068         (register_exception_range): New function.
1069         * java-tree.h (register_exception_range, struct eh_range): Declare.
1070
1071 2004-06-22  Andrew Haley  <aph@redhat.com>
1072
1073         * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of
1074         the otable.
1075         * check-init.c (get_variable_decl): Teach check-init about
1076         FIELD_DECLs addressed via the otable.
1077         * jcf-parse.c (load_class): Check CLASS_LOADED_P, not
1078         CLASS_PARSED_P.
1079
1080 2004-05-28  Andrew Haley  <aph@redhat.com>
1081
1082         * jcf-parse.c (load_class): Don't try to read a class that we've
1083         already read.
1084
1085         * expr.c (build_invokeinterface): Use the old-fashioned way of
1086         doing indirect dispatch: look up interfaces by name.
1087         * java-tree.h (enum java_tree_index): Add
1088         JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE
1089         * decl.c (java_init_decl_processing): Add
1090         soft_lookupinterfacemethodbyname_node.
1091
1092         * gjavah.c (print_method_info): Final methods have vtable entries,
1093         so gjavah needs to output them.
1094         * class.c (layout_class_method): Generate vtable entries for final
1095         methods.
1096         * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect
1097         dispatch, even if a method is final.
1098
1099 2004-05-25  Andrew Haley  <aph@redhat.com>
1100
1101         * class.c (build_symbol_entry): Convert the names of constructors
1102         to init_identifier_node when generating an entry for the indirect
1103         dispatch table.
1104
1105         * expr.c (build_known_method_ref): Generate indirect calls for
1106         all methods marked DECL_EXTERNAL or TREE_PUBLIC.
1107
1108 2004-05-24  Andrew Haley  <aph@redhat.com>
1109
1110         * expr.c (build_known_method_ref): Make sure ARRAY_REF access to
1111         atable element is of the right type.
1112
1113         * class.c (build_static_field_ref): Cast pointer to correct type
1114         for field.
1115
1116 2004-04-20  Bryce McKinlay  <mckinlay@redhat.com>
1117
1118         * Merged with HEAD as of 20040514. Diff against
1119         gcj-abi-2-merge-20040514.
1120
1121 2004-04-16  Andrew Haley  <aph@redhat.com>
1122
1123         * verify.c (check_pending_block): Disable subroutine checks.
1124         (defer_merging): New function.
1125         (merge_types): If types are dummy, use defer_merging to combine them.
1126         (verify_jvm_instructions): If invocation is invokeinterface and
1127         target is dummy, assume target really is an interface.
1128
1129         * parse.y (patch_invoke): Break out call to java_create_object.
1130
1131         * lang.c (flag_verify_invocations): New.
1132
1133         * jcf-parse.c (load_class): If we've already failed to load a
1134         class, don't try again.
1135         (load_class): If we can't find a .class file, don't fail, but emit
1136         a warning.
1137         (parse_class_file): Don't act on dummy methods.
1138
1139         * java-tree.h (flag_verify_invocations): New.
1140         (TYPE_DUMMY): New.
1141         (lang_type.dummy_class): New field.
1142         (java_create_object): New function.
1143         (METHOD_DUMMY): New.
1144
1145         * expr.c (build_field_ref): Widen field offset.
1146         (pop_type_0): If the type in stack_type_map is a TREE_LIST, check
1147         that each of its elements is compatible with the one we're
1148         popping.
1149         (pop_type_0): Issue a warning to say that we need to generate a
1150         runtime check.
1151         (java_create_object): New function.
1152         (build_field_ref): Only generate hard refs if we're not using
1153         indirect dispatch.
1154         (expand_java_field_op): If we're using !verify_invocations and we
1155         see a missing field, generate a decl for it.
1156
1157         (expand_invoke): If a class doesn't have the method we seek and
1158         we're using !flag_verify_invocations, generate a decl for the
1159         method now.
1160
1161         (build_known_method_ref): Always use indirect dispatch via the
1162         atable for static methods.
1163
1164         (expand_java_NEW): Break out object creation into new function,
1165         java_create_object.
1166
1167         (can_widen_reference_to): Issue a warning to say that we need to
1168         generate a runtime check.
1169
1170         * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass.
1171         (make_method_value): Also use index for interfaces.
1172         (make_class_data): Skip dummy field for inherited data.
1173         Don't build method array for dummy methods.
1174         Set size_in_byte to -1 when using inirect dispatch
1175         Don't build a hard class ref if we don't have a hard ref to our
1176         superclass, or if we're using inirect dispatch.
1177         Null out dispatch tables.
1178
1179         (layout_class_method): Don't complain about non-static method
1180         overrides static method is method is artificial.
1181
1182         (build_static_field_ref): Disable atable references to static
1183         fields for the time being.
1184
1185         (layout_class_methods): Check for CLASS_INTERFACE as
1186         well as CLASS_ABSTRACT.
1187
1188 2004-11-24  Steven Bosscher  <stevenb@suse.de>
1189
1190         * class.c (make_class_data): Don't check flag_inline_functions.
1191         * lang.c (flag_really_inline): Remove unused flag.
1192         (java_handle_option): Don't set it here.  Remove special handling
1193         of flag_inline_functions for Java.
1194         (java_init): Don't set flag_inline_trees here.  Already done...
1195         (java_post_options): ...here.  Don't clear flag_inline_functions.
1196
1197 2004-11-24  Steven Bosscher  <stevenb@suse.de>
1198
1199         * java-gimplify.c (java_gimplify_labeled_block_expr): New function.
1200         (java_gimplify_exit_block_expr): New function.
1201         (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and
1202         LABELED_BLOCK_EXPR.
1203         * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def.
1204         (EXIT_BLOCK_EXPR): Likewise.
1205         * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h.
1206         (LABELED_BLOCK_BODY): Likewise.
1207         (EXIT_BLOCK_LABELED_BLOCK): Likewise.
1208         * jcf-write.c (generate_bytecode_insns): Don't handle the unused
1209         EXIT_BLOCK_RETURN operand.  Use EXIT_BLOCK_LABELED_BLOCK instead of
1210         TREE_OPERAND.
1211         * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR.
1212         (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and
1213         EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND.  Don't handle the
1214         second operand of EXIT_BLOCK_EXPR.
1215         * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of
1216         TREE_OPERAND.
1217         (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes.
1218
1219 2004-11-23  Ben Elliston  <bje@au.ibm.com>
1220
1221         * xref.h (xref_flag_value): Remove.
1222         (xref_set_data, xref_get_data): Likewise.
1223         (xref_set_current_fp): Likewise.
1224         (XREF_NONE): Likewise.
1225         (XREF_GET_DATA): Likewise.
1226         * xref.c (xref_flag_value): Remove.
1227         (xref_set_data, xref_get_data): Likewise.
1228         (xref_set_current_fp): Likewise.
1229
1230 2004-11-23  Ben Elliston  <bje@au.ibm.com>
1231
1232         * gjavah.c (output_directory): Make static.
1233         (temp_directory): Likewise.
1234
1235 2004-11-15  Tom Tromey  <tromey@redhat.com>
1236
1237         * decl.c (instn_ptr_type_node): Removed.
1238         (lineNumbers_ptr_type_node): Removed.
1239         (jint_type): Removed.
1240         (jint_ptr_type): Removed.
1241
1242 2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>
1243
1244         PR java/15576
1245         * check-init.c (check_init): Ignore DECL_EXPR.
1246         * expr.c (always_initialize_class_p): Reenable.
1247         (build_class_init): Use a variable to store the decl.  Also use
1248         boolean_false_node instead of integer_zero_node.
1249         * parse.y (attach_init_test_initialization_flags): Add a decl_expr
1250         to the block.
1251
1252 2004-11-08  Tom Tromey  <tromey@redhat.com>
1253
1254         PR java/16843:
1255         * gjavah.c (HANDLE_END_FIELD): Call print_field_info when
1256         generating a JNI header.
1257         (print_field_info): Handle JNI headers.
1258         (jni_print_float): Likewise.
1259         (jni_print_double): Likewise.
1260
1261 2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
1262
1263         * decl.c (end_java_method): Remove duplicated code.
1264
1265 2004-11-06  Zack Weinberg  <zack@codesourcery.com>
1266             Gerald Pfeifer  <gerald@pfeifer.com>
1267
1268         * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H
1269         as well.
1270
1271 2004-11-02  Bryce McKinlay  <mckinlay@redhat.com>
1272
1273         PR java/17265
1274         * class.c: Reinstate 2004-08-18 patch.
1275         (make_local_function_alias): Don't create an alias for extern (native)
1276         functions.
1277
1278 2004-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1279
1280         PR java/17265
1281         * class.c (make_local_function_alias): Revert 2004-08-18 change.
1282         (make_method_value): Likewise.
1283
1284 2004-10-21  Andrew Haley  <aph@redhat.com>
1285
1286         PR java/18091:
1287         * jcf-parse.c (set_source_filename): Add code to build new sfname.
1288
1289 2004-10-20  Andrew Haley  <aph@redhat.com>
1290
1291         * decl.c (end_java_method): Don't expand if flag_syntax_only.
1292         Remove duplicated code block.
1293
1294 2004-10-18  Steven Bosscher  <stevenb@suse.de>
1295
1296         * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn):
1297         New rules to work around old Bison warnings.
1298
1299 2004-10-17  Steven Bosscher  <stevenb@suse.de>
1300
1301         * class.c (ident_subst): Always alloca buffer.
1302         * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy
1303         opcode after including javaop.def.
1304         * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the
1305         conditional expression that exits, to avoid warnings.
1306         * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as
1307         a user of an extension.
1308         * win32-host.c: Move check down to have non-empty file when
1309         WIN32 is not defined.
1310
1311         * Make-lang.in (java-warn): Add STRICT_WARN.
1312         (java/jcf-io.o-warn): Don't have Werror for this file.
1313         * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use.
1314
1315 2004-10-16  Hans-Peter Nilsson  <hp@bitrange.com>
1316
1317         * expr.c (expr_add_location): Move declaration to before all
1318         statements.
1319         * parse.y (java_expand_classes): Ditto.
1320         * lex.c (java_peek_unicode): Ditto.
1321
1322 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
1323
1324         * check-init.c: Use %<, %> and %q for quoting in diagnostics,
1325         if possible, else convert `foo' to 'foo'.
1326         * class.c: Likewise.
1327         * decl.c: Likewise.
1328         * expr.c: Likewise.
1329         * jcf-io.c: Likewise.
1330         * jcf-parse.c: Likewise.
1331         * lang.c: Likewise.
1332         * lex.c: Likewise.
1333         * parse.h: Likewise.
1334
1335 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
1336
1337         * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and
1338         rename parameter 'msg' to 'msgid' in function declaration.
1339         (issue_warning_error_from_context): Likewise.
1340         (yyerror): Rename parameter 'msg' to 'msgid'.
1341         (all over): Use new quoting style for diagnostics.
1342
1343 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
1344
1345         * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c,
1346         jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c:
1347         Update copyright.
1348
1349 2004-10-14  Matt Austern  <austern@apple.com>
1350
1351         * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct
1352         pointer_set_t* now.
1353
1354 2004-10-13  Tom Tromey  <tromey@redhat.com>
1355
1356         PR java/15578:
1357         * lang.opt (--extdirs): Document.
1358         * jvspec.c (lang_specific_driver): Recognize -encoding and
1359         -extdirs.
1360
1361 2004-10-06  Ulrich Weigand  <uweigand@de.ibm.com>
1362
1363         * parse.y (issue_warning_error_from_context): Use va_list *
1364         instead of va_list parameter.
1365         (parse_error_context): Update call.
1366         (parse_warning_context): Likewise.
1367
1368 2004-10-05  Zack Weinberg  <zack@codesourcery.com>
1369
1370         * parse.y, parse-scan.y: Add list of diagnostic messages to
1371         insulate translation template from version of yacc/bison used
1372         to compile the grammar.
1373
1374 2004-10-05  Ranjit Mathew  <rmathew@hotmail.com>
1375
1376         Prepare for %q, %< and %> in diagnostic message strings.
1377         * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2.
1378         Name second parameter 'msgid'.
1379         * parse.y: Additionally include pretty-print.h and diagnostic.h.
1380         (issue_warning_error_from_context): Use pretty-printer functions
1381         instead of vsprintf for constructing formatted messages. Rename
1382         parameter 'msg' to 'msgid'.
1383         (parse_error_context): Rename parameter 'msg' to 'msgid'.
1384         (parse_warning_context): Likewise.
1385
1386 2004-10-05  Andrew Haley  <aph@redhat.com>
1387
1388         PR java/17779
1389         * jcf-parse.c (parse_zip_file_entries): If a class has a
1390         superclass and a TYPE_SIZE of zero, lay it out.
1391
1392 2004-09-30  Andrew Haley  <aph@redhat.com>
1393
1394         PR java/17733
1395         * jcf-parse.c (compute_class_name): Rewrite.
1396
1397 2004-10-01  Jan Hubicka  <jh@suse.cz>
1398
1399         * java.c (java_expand_body): Update call of tree_rest_of_compilation.
1400
1401 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
1402
1403         * lex.c: Fix a comment typo.
1404
1405 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
1406
1407         * java-tree.h: Fix a comment typo.
1408
1409 2004-09-30  Per Bothner  <per@bothner.com>
1410
1411         Simplify lexer.  Implement --enable-mapped-location support.
1412         * jcf-parse.c (parse_class_file):  Use linemap_line_start.
1413         (parse_source_file_1): Pass filename as extra parameter, so we can call
1414         linemap_add and set input_location here, rather than in both callers.
1415         (read_class): Pass copied filename to parse_source_file_1.
1416         Don't initialize wfl_operator - only needed for source compilation.
1417         (read_class, jcf_parse):  Call linemap_add with LC_LEAVE.
1418         * lex.h:  Remove a bunch of debugging macros.
1419         * lex.h (struct_java_line, struct java_error):  Remove types.
1420         (JAVA_COLUMN_DELTA):  Remove - use java_lexer.next_colums instead.
1421         (struct java_lc_s):  Remove prev_col field.
1422         (struct java_lexer):  New fields next_unicode, next_columns, and
1423         avail_unicode.  New position field, and maybe token_start field.
1424         Don't need hit_eof field - use next_unicode == -1 instead.
1425         (JAVA_INTEGERAL_RANGE_ERROR):  Rename to JAVA_RANGE_ERROR.
1426         (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR):  Update accordingly.
1427         * parse.h:  Various changes for USE_MAPPED_LOCATION.
1428         (EXPR_WFL_EMIT_LINE_NOTE): XXX
1429         (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros.
1430         (struct parser_ctxt):  New file_start_location field.
1431         Remove p_line, c_line fields since we no longer save lines.
1432         Remove elc, lineno, and current_jcf fields - no longer used.
1433         * parse.y:  Updates for USE_MAPPED_LOCATION and new lexer.
1434         Don't use EXPR_WFL_ADD_COL since that isn't trivial with
1435         source_location and is probably not needed anymore anyway.
1436         Use new expr_add_Location function.
1437         (SET_EXPR_LOCATION_FROM_TOKEN):  New convenience macro.
1438         (java_pop_parser_context):  Minor cleanup.
1439         (java_parser_context_save_global, java_parser_context_restore_global,
1440         java_pop_parser_context):  Save/restore input_location as a unit.
1441         (issue_warning_error_from_context):  If USE_MAPPED_LOCATION take
1442         a source_location instead of a wfl context node.
1443         (check_class_interface_creation):  input_filename is not addressable.
1444         (create_artificial_method):  Calling java_parser_context_save_global
1445         and java_parser_context_restore_global is overkill.  Instead,
1446         temporarily set input_location from class decl.
1447         (java_layout_seen_class_methods): Set input_location from method decl.
1448         (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION.
1449         (finish_loop_body):  Likewise.
1450         * lex.c: Updates for USE_MAPPED_LOCATION.  Use build_unknwon_wfl.
1451         (java_sprint_unicode):  Take a character, not index in line.
1452         (java_sneak_uncode):  Replaced by java_peek_unicode.
1453         (java_unget_unicode):  No longer used.
1454         (java_allocate_new_line. java_store_unicode):  Removed, since we
1455         no longer remember "lines".
1456         (java_new_lexer):  Update for new data structures.
1457         (java_read_char):  Move unget_value checking to java_read_unicode.
1458         (java_get_unicode, java_peek_unicode, java_next_unicode): New more
1459         efficient functions that are used directly when lexing.
1460         (java_read_unicode_collapsing_terminators):  No longer needed.
1461         (java_parse_end_comment, java_parse_escape_sequence, do_java_lex):
1462         Re-organize to use java_peek_unicode to avoid java_unget_unicode.
1463         (java_parse_escape_sequence):  Rewrite to be simpler / more efficient.
1464         (do_java_lex):  Lots of movings around to avoid java_unget_unicode,
1465         combine switch branches, and test for common token kinds earlier.
1466         (java_lex_error):  Rewrite.
1467         * jv-scan.c (expand_location): New function, copied from tree.c.
1468         (main): Set ctxp->filename instead of setting input_filename directly.
1469
1470 2004-09-30  Per Bothner  <per@bothner.com>
1471
1472         More cleanup for --enable-mapped-location.
1473         * class.c (push_class):  If USE_MAPPED_LOCATION don't set
1474         input_location here.  Instead do it in give_name_to_class.
1475         (build_class_ref):  Set DECL_ARTIFICIAL, for the sake of dwarf2out.
1476         * expr.c (expand_byte_code): Call linemap_line_start.
1477         * expr.c (build_expr_wfl):  If USE_MAPPED_LOCATION, change final
1478         parameters to a source_location.  Don't need EXPR_WFL_FILENAME_NODE.
1479         (expr_add_location):  New function, if USE_MAPPED_LOCATION.
1480         * class.c (maybe_layout_super_class):  Adjust build_expr_wfl call
1481         to USE_MAPPED_LOCATION case.
1482
1483         * java-tree.h (JAVA_FILE_P, ZIP_FILE_P):  Remove unused macros.
1484         * jcf-parse.c (java_parse_file): Don't set input_filename.
1485         Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames.
1486         Create a list of TRANSLATION_UNIT_DECL.
1487         (current_file_list):  Is now a TRANSLATION_UNIT_DECL chain.  The
1488         reason is so we can set a DECL_SOURCE_LOCATION for each file.
1489         (java_parse_file):  Don't set unused ZIP_FILE_P, JAVA_FILE_P..
1490         Create line-map LC_ENTER/LC_LEAVE entries for archive itself.
1491         (file_start_location):  New static.
1492         (set_source_filename):  Avoid extra access to input_filename macro.
1493         Concatenate new name with class's package prefix.
1494         (set_source_filename, give_name_to_class): Update.
1495         (give_name_to_class):  Set class's "line 0" input_location here.
1496         (parse_class_file):  Set input_location as a unit.
1497
1498         * jcf-parse.c (load_class): Sanity test if missing inner class file.
1499
1500 2004-09-29  Per Bothner  <per@bothner.com>
1501
1502         * java-tree.h:  Redefine some macros and add some declaration
1503         to handle the USE_MAPPED_LOCATION case.
1504         * parse.h (EXPR_WFL_QUALIFICATION):  Use operand 1, not 2.
1505         * java-tree.h (EXPR_WFL_FILENAME_NODE):  Use operand 2, not 1.
1506         * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in
1507         USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone.
1508
1509         * check-init.c (check_init): Handle USE_MAPPED_LOCATION case.
1510         * decl.c (finish_method, java_add_stmt): Likewise.
1511         * java-gimplify.c (java-gimplify.c):  Likewise.
1512         * jcf-write.c (generate_bytecode_insns):  Likewise.
1513         * lang.c (java_post_options): Likewise - call linemap_add.
1514
1515 2004-09-29  Andrew Haley  <aph@redhat.com>
1516
1517         PR java/17007
1518         * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the
1519         result of TRUNC_MOD_EXPR.
1520         (patch_unaryop): Likewise for CONVERT_EXPR, which may throw.
1521         * decl.c (java_init_decl_processing): Mark
1522         soft_lookupinterfacemethod_node and soft_instanceof_node pure.
1523
1524 2004-09-28  Tom Tromey  <tromey@redhat.com>
1525
1526         PR java/15710:
1527         * class.c (add_miranda_methods): Load superinterface if not
1528         already loaded.
1529
1530 2004-09-28  Andrew Haley  <aph@redhat.com>
1531
1532         PR java/17586
1533         * jcf-parse.c (load_class): Don't try to read a class that we've
1534         already read.
1535
1536 2004-09-28  Andrew Haley  <aph@redhat.com>
1537
1538         * jcf-parse.c (load_class): Back out previous broken patch.
1539
1540 2004-09-28  Andrew Haley  <aph@redhat.com>
1541
1542         PR java/17586
1543         * jcf-parse.c (load_class): Don't try to read a class that we've
1544         already read.
1545         Check that we really did read the right class.
1546
1547 2004-09-25  Tom Tromey  <tromey@redhat.com>
1548
1549         PR java/17500:
1550         * parse.y (create_artificial_method): Use add_method_1.
1551
1552 2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>
1553
1554         * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix
1555         comment typos.
1556         * gcj.texi: Fix typos.
1557
1558 2004-09-24  Tom Tromey  <tromey@redhat.com>
1559
1560         PR java/15656:
1561         * parse.y (class_instance_creation_expression): Set `$$' to NULL
1562         in error parts of rule.
1563         (unary_expression): Don't call error_if_numeric_overflow when $1
1564         is NULL.
1565
1566 2004-09-24  Tom Tromey  <tromey@redhat.com>
1567
1568         PR java/16789:
1569         * parse.y (resolve_qualified_expression_name): Set
1570         CAN_COMPLETE_NORMALLY on first call when chaining static calls.
1571         * expr.c (force_evaluation_order): Check for empty argument list
1572         after stripping COMPOUND_EXPR.
1573
1574 2004-09-23  Andrew Haley  <aph@redhat.com>
1575
1576         PR java/16927:
1577         * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of
1578         COND_EXPRs.
1579
1580 2004-09-23  Tom Tromey  <tromey@redhat.com>
1581
1582         PR java/17329:
1583         * java-gimplify.c (java_gimplify_expr) <SAVE_EXPR>: Ignore case
1584         where operand is null.
1585
1586 2004-09-23  Tom Tromey  <tromey@redhat.com>
1587
1588         PR java/17380:
1589         * parse.y (not_accessible_p): Allow access to protected members
1590         even when class is not static.
1591
1592 2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>
1593
1594         * Make-lang.in: Revert the gcc-none.o change.
1595
1596 2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>
1597
1598         * parse.y (patch_anonymous_class): VEC_space returns true if there
1599         is space.
1600
1601 2004-09-21  Matt Austern  <austern@apple.com>
1602
1603         Fix bootstrap.
1604         * gjavah.c (free_method_name_list): Fix function definition so
1605         it's a proper C prototype.
1606
1607 2004-09-21  Tom Tromey  <tromey@redhat.com>
1608
1609         PR java/17575:
1610         * gjavah.c (free_method_name_list): New method.
1611         (main): Call it.
1612
1613 2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
1614             Zack Weinberg  <zack@codesourcery.com>
1615
1616         * java-tree.def: Use tree_code_class enumeration constants
1617         instead of code letters.
1618         * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for
1619         new tree-class enumeration constants.
1620
1621 2004-09-13  Tom Tromey  <tromey@redhat.com>
1622
1623         PR java/17216:
1624         * class.c (layout_class_method): Put synthetic methods into the
1625         vtable.
1626
1627 2004-09-11  Andrew Pinski  <apinski@apple.com>
1628
1629         * Make-lang.in (java/ggc-none.c): Change dependency
1630         for ggc.h into $(GGC_H).
1631
1632 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
1633
1634         * Make-lang.in (java/win32-host.o): Add dependency on
1635         coretypes.h.
1636         * win32-host.c: Add includes for coretypes.h, jcf.h
1637
1638 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
1639
1640         * Make-lang.in (GCJH_OBJS): Change dependency from
1641         ggc-none.o to java/ggc-none.o
1642         (JCFDUMP_OBJS): Likewise.
1643         (java/ggc-none.o): New target.
1644
1645 2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>
1646
1647         * boehm.c (get_boehm_type_descriptor):  Adjust build_int_cst calls.
1648         * class.c (build_utf8_ref, build_static_field_ref,
1649         make_field_value, make_method_value, get_dispatch_table,
1650         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
1651         * constants.c (get_tag_node, build_ref_from_constant_pool,
1652         build_constants_constructor): Likewise.
1653         * decl.c (java_init_decl_processing): Likewise.
1654         * expr.c (build_java_array_length_access, build_newarray,
1655         expand_java_multianewarray, expand_java_pushc, expand_iinc,
1656         build_java_binop, build_field_ref, expand_java_add_case,
1657         expand_java_call, build_known_method_ref, build_invokevirtual,
1658         build_invokeinterface, build_jni_stub): Likewise.
1659         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
1660         * jcf-parse.c (get_constant): Likewise.
1661         * lex.c (do_java_lex): Likewise.
1662         * parse.y (patch_binop, patch_unaryop, patch_cast,
1663         build_newarray_node, patch_newarray): Likewise.
1664         * resource.c (compile_resource_data): Likewise.
1665         * typeck.c (build_prim_array_type): Likewise.
1666
1667 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
1668
1669         * decl.c (java_init_decl_processing): Adjust
1670         initialize_sizetypes call.
1671
1672 2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>
1673
1674         * jv-scan.c (fancy_abort): Add.
1675
1676 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
1677
1678         * expr.c (build_java_arrayaccess): Use convert to change
1679         len's type.
1680
1681 2004-08-19  Bryce McKinlay  <mckinlay@redhat.com>
1682
1683         * class.c (make_local_function_alias): Allocate extra space for 'L'
1684         in name buffer. Reported by Thomas Neumann.
1685
1686 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
1687
1688         * parse.h (JAVA_RADIX10_FLAG): Rename to ...
1689         (JAVA_NOT_RADIX10_FLAG): ... here.  Invert meaning.
1690         * lex.c (do_java_lex): Adjust.
1691         (error_if_numeric_overflow): Likewise.
1692
1693 2004-08-18  Andrew Pinski  <apinski@apple.com>
1694
1695         * class.c (make_local_function_alias): Only make a new decl if we
1696         support alias attribute on all decls.
1697
1698 2004-08-18  Bryce McKinlay  <mckinlay@redhat.com>
1699
1700         * class.c (make_local_function_alias): New function. Create local
1701         alias for public method DECL.
1702         (make_method_value): Use make_local_function_alias.
1703         * parse.y (craft_constructor): Don't special-case anonymous classes.
1704         Always set ctor_name to init_identifier_node.
1705         (lookup_method_invoke): Call layout_class_method when creating
1706         anonymous class constructor.
1707
1708 2004-08-18  Richard Henderson  <rth@redhat.com>
1709
1710         * java-gimplify.c (java_gimplify_expr): Move '2' handling into
1711         default case.  Treat '<' similarly.  Update for
1712         is_gimple_formal_tmp_var name change.
1713
1714 2004-08-17  Andrew Haley  <aph@redhat.com>
1715
1716         * lang.c (lang_printable_name): Obey verbose flag.
1717         * parse.y (constructor_circularity_msg): Set VERBOSE arg for
1718         lang_printable_name().
1719         (verify_constructor_circularity, get_printable_method_name,
1720         check_abstract_method_definitions, java_check_regular_methods,
1721         java_check_abstract_methods, check_inner_class_access,
1722         fix_constructors, patch_method_invocation, patch_return):
1723         Likewise.
1724         * expr.c (pop_type_0): Likewise.
1725
1726         * java-tree.h (lang_printable_name_wls): Delete.
1727
1728 2004-08-16  Tom Tromey  <tromey@redhat.com>
1729
1730         PR java/8473:
1731         * parse.y (primary): Changed for initialized and uninitialized
1732         array creations.
1733         (array_access): Handle array_creation_initialized.
1734         (array_creation_expression): Split into
1735         array_creation_initialized and array_creation_uninitialized.
1736
1737 2004-08-16  Andrew Haley  <aph@redhat.com>
1738
1739         * jcf-write.c (find_constant_index): Canonicalize NaNs when
1740         generating bytecode.
1741
1742 2004-08-16  Elliot Lee <sopwith@redhat.com>
1743
1744         PR java/9677
1745         * jcf-parse.c (java_parse_file): Handle filenames with embedded
1746         spaces, and quoted filelists.
1747
1748 2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>
1749
1750         * boehm.c (get_boehm_type_descriptor): Use build_int_cst.
1751         * class.c (build_utf8_ref, build_static_field_ref,
1752         make_field_value, make_method_value, get_dispatch_table,
1753         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
1754         * constants.c (get_tag_node,  build_ref_from_constant_pool,
1755         build_constants_constructor): Likewise.
1756         * decl.c (java_init_decl_processing): Likewise.
1757         * expr.c (build_java_array_length_access, build_newarray,
1758         expand_java_multianewarray, expand_java_pushc, expand_iinc,
1759         build_java_binop, build_field_ref, expand_java_add_case,
1760         expand_java_call, build_known_method_ref, build_invokevirtual,
1761         build_invokeinterface, build_jni_stub): Likewise.
1762         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
1763         * jcf-parse.c (get_constant): Likewise.
1764         * lex.c (do_java_lex): Likewise.
1765         * parse.y (patch_binop, patch_unaryop, patch_cast,
1766         build_null_of_type, patch_newarray): Likewise.
1767         * resource.c (compile_resource_data): Likewise.
1768         * typeck.c (build_prim_array_type): Likewise.
1769
1770 2004-08-10  Bryce McKinlay  <mckinlay@redhat.com>
1771
1772         * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var.
1773         Don't create BLOCK here or call java_gimplify_block.
1774
1775 2004-08-09  H.J. Lu  <hongjiu.lu@intel.com>
1776
1777         * java-tree.h (flag_deprecated): Removed.
1778         * lang.opt (Wdeprecated): Use existing Var(warn_deprecated).
1779         * parse.y (check_deprecation): Check warn_deprecated instead of
1780         flag_deprecated.
1781
1782 2004-08-06  Kelley Cook  <kcook@gcc.gnu.org>
1783
1784         * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant,
1785         flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check,
1786         flag_hash_synchronization, flag_assert, flag_jni, flag_newer,
1787         flag_check_references, flag_extraneous_semicolon, flag_deprecated,
1788         flag_force_classes_archive_check, flag_optimize_sci,
1789         flag_indirect_dispatch): Remove explicit declarations.
1790         * lang.opt: Add implicit declare/define/assign.  Remove obsolete
1791         final comment.
1792
1793 2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>
1794
1795         PR bootstrap/14893
1796         * Make-lang.in (java.install-man): Install from either build
1797         tree or source tree, whichever has the file first.
1798
1799 2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>
1800
1801         * jcf-parse.c (get_constant): Adjust force_fit_type call.
1802         * lex.h (SET_LVAL_NODE_TYPE): Remove.
1803         * lex.c (java_perform_atof): Use SET_LVAL_NODE directly.
1804         (do_java_lex): Likewise. Adjust force_fit_type call.
1805
1806 2004-08-04  Roger Sayle  <roger@eyesopen.com>
1807             Andrew Haley  <aph@redhat.com>
1808
1809         * typeck.c (convert_ieee_real_to_integer): Call fold on the range
1810         checking trees as they're being built.
1811         (convert): Call convert_ieee_real_to_integer if we're
1812         converting a constant, even if we're writing a class file.
1813
1814 2004-08-02  Bryce McKinlay  <mckinlay@redhat.com>
1815
1816         PR java/16701
1817         * parse.y (fold_constant_for_init): Call resolve_field_access with
1818         correct current_class context.
1819
1820 2004-08-01  Roger Sayle  <roger@eyesopen.com>
1821
1822         * decl.c (update_aliases, initialize_local_variable): Replace calls
1823         to build with calls to buildN.
1824         * java-gimplify.c (java_gimplify_modify_expr): Likewise.
1825         * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise.
1826         * parse.h (BUILD_THROW): Likewise.
1827         * parse.y (switch_expression, synchronized_statement,
1828         catch_clause_parameter, array_creation_expression,
1829         conditional_expression, make_qualified_name,
1830         resolve_qualified_expression_name, patch_method_invocation,
1831         patch_invoke, build_method_invocation, build_new_invocation,
1832         build_assignment, patch_assignment, build_binop, patch_binop,
1833         build_string_concatenation, build_incdec, patch_unaryop,
1834         patch_cast, build_array_ref, build_newarray_node, patch_newarray,
1835         patch_return, build_if_else_statement, build_labeled_block,
1836         build_new_loop, build_loop_body, build_bc_statement,
1837         build_assertion, encapsulate_with_try_catch, build_try_statement,
1838         build_try_finally_statement, patch_synchronized_statement,
1839         emit_test_initialization): Likewise, replace build with buildN.
1840
1841 2004-07-28  Eric Christopher  <echristo@redhat.com>
1842
1843         * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
1844         (java_unsafe_for_reeval): Ditto.
1845
1846 2004-07-26    <hp@bitrange.com>
1847
1848         * parse.y (build_super_invocation): Adjust declaration order to
1849         avoid declaration after statement.
1850
1851 2004-07-25  Bernardo Innocenti  <bernie@develer.com>
1852
1853         * decl.c: Rename all identifiers named `class' to `cl'.
1854
1855 2004-07-25  Richard Henderson  <rth@redhat.com>
1856
1857         * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P.
1858
1859 2004-07-23  Mike Stump  <mrs@apple.com>
1860
1861         * boehm.c (set_bit): Improve type safety wrt unsignedness.
1862         * gjavah.c (throwable_p, decode_signature_piece,
1863         print_full_cxx_name, print_include, add_namelet, add_class_decl,
1864         process_file): Likewise.
1865         * jcf-dump.c (main): Likewise.
1866         * jcf-io.c (read_zip_member): Likewise.
1867         * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant,
1868         give_name_to_class, get_class_constant): Likewise.
1869         * jcf-write.c (find_constant_wide, push_long_const,
1870         generate_classfile): Likewise.
1871         * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise.
1872         * parse.y (read_import_dir): Likewise.
1873         * typeck.c (parse_signature_type): Likewise.
1874         * verify.c (verify_jvm_instructions): Likewise.
1875         * zextract.c (find_zip_file_start, read_zip_archive): Likewise.
1876
1877 2004-07-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
1878
1879         * Make-lang.in: Replace rmic and rmiregistry references with
1880         grmic and grmiregistry.
1881         * gcj.texi: Likewise.
1882
1883 2004-07-20  Andrew Haley  <aph@redhat.com>
1884
1885         PR java/16431.
1886         * verify.c (verify_jvm_instructions): Comment change only.
1887
1888         * typeck.c (build_java_array_type): Add size field to array name.
1889
1890         * java-tree.h (LOCAL_SLOT_P): New.
1891         (update_aliases): Add PC argument.
1892         (pushdecl_function_level): New function.
1893
1894         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
1895         MODIFY_EXPR, and SAVE_EXPR.
1896         (java_gimplify_modify_expr): New function.
1897
1898         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
1899         (expand_iinc): Pass PC to update_aliases().
1900         (STORE_INTERNAL): Likewise.
1901         (process_jvm_instruction): Likewise.
1902
1903         * decl.c (base_decl_map): New variable.
1904         (uniq): New variable.
1905         (update_aliases): Rewrite with more thorough checking.
1906         (debug_variable_p): New function.
1907         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
1908         (check_local_named_variable): Delete whole function.
1909         (initialize_local_variable): New function.
1910         (check_local_unnamed_variable): Add checks and comments.
1911         (find_local_variable): Rewrite.
1912         (java_replace_reference): New function.
1913         (function_binding_level): New variable.
1914         (pushdecl_function_level): New function.
1915         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
1916         (maybe_pushlevels): Call pushdecl() on each of the new decls.
1917         (start_java_method): Reset uniq.  Create base_decl_map.  Set
1918         function_binding_level.
1919         (end_java_method): Null unused fields to save memory.
1920
1921 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
1922
1923         * class.c (add_interface_do): Remove.
1924         (set_super_info, interface_of_p, maybe_add_interface,
1925         add_interface, make_class_data, layout_class,
1926         add_miranda_methods): Adjust BINFO accessors and addition.
1927         * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO
1928         accessors.
1929         * jcf-write.c (generate_classfile): Likewise.
1930         * parse.y (patch_anonymous_class, check_inner_circular_reference,
1931         check_circular_reference, java_complete_class,
1932         check_abstract_method_definitions,
1933         java_check_abstract_method_definitions,
1934         check_interface_throws_clauses, java_check_abstract_methods,
1935         lookup_java_interface_method2,
1936         find_applicable_accessible_methods_list): Adjust BINFO accessors
1937         and addition.
1938         * typeck.c (find_method_in_interfaces): Adjust BINFO accessors.
1939
1940 2004-07-18  Roger Sayle  <roger@eyesopen.com>
1941
1942         * builtins.c (max_builtin, min_builtin,
1943         java_build_function_call_expr): Replace calls to build with buildN.
1944         * class.c (build_class_ref, build_static_field_ref,
1945         get_dispatch_table, make_class_data, layout_class_method): Likewise.
1946         * constants.c (build_ref_from_constant_pool): Likewise.
1947         * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method,
1948         add_stmt_to_compound): Likewise.
1949         * except.c (build_exception_object_ref, expand_end_java_handler):
1950         Likewise.
1951         * java-gimplify.c (java_gimplify_case_expr,
1952         java_gimplify_default_expr, java_gimplify_block,
1953         java_gimplify_new_array_init, java_gimplify_try_expr): Likewise.
1954         * jcf-write.c (generate_bytecode_insns): Likewise.
1955         * typeck.c (convert_ieee_real_to_integer): Likewise.
1956
1957 2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>
1958
1959         * java-tree.h (builtin_function): Declare.
1960
1961 2004-07-16  Steven Bosscher  <stevenb@suse.de>
1962
1963         * parse.y (java_complete_expand_methods, java_expand_classes): Don't
1964         abuse restore_line_number_status.
1965
1966 2004-07-15  Frank Ch. Eigler  <fche@redhat.com>
1967
1968         g++/15861
1969         * jcf-parse.c (java_emit_static_constructor): Specify default
1970         priority.
1971
1972 2004-07-13  Per Bothner  <per@bothner.com>
1973
1974         * java-tree.h (all_class_filename):  Remove useless macro.
1975         (enum java_tree_index):  Remove JTI_ALL_CLASS_FILENAME constant.
1976         (BUILD_FILENAME_IDENTIFIER_NODE):  Remove useless macro.
1977         * parse.y (java_parser_context_restore_global):  Replace
1978         BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier.
1979         * jcf-parse.c (read_class, java_parse_file):  Likewise.
1980
1981 2004-07-12  Bryce McKinlay  <mckinlay@redhat.com>
1982
1983         PR java/16474
1984         gjavah.c (print_field_info): Emit constant only if field is static.
1985
1986 2004-07-11  Roger Sayle  <roger@eyesopen.com>
1987
1988         * expr.c (java_truthvalue_conversion, flush_quick_stack,
1989         java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr,
1990         build_java_ret, build_java_throw_out_of_bounds_exception,
1991         build_java_array_length_access, java_check_reference,
1992         build_java_arrayaccess, build_java_arraystore_check, build_newarray,
1993         build_anewarray, expand_java_multianewarray, expand_java_arraystore,
1994         expand_java_arrayload, build_java_monitor, expand_java_return,
1995         expand_load_internal, expand_java_NEW, build_get_class,
1996         build_instanceof, expand_java_CHECKCAST, expand_iinc,
1997         build_java_soft_divmod, build_java_binop, build_field_ref,
1998         expand_compare, expand_java_goto, expand_java_switch,
1999         expand_java_add_case, build_class_init, build_known_method_ref,
2000         invoke_build_dtable, build_invokevirtual, build_invokeinterface,
2001         expand_invoke, build_jni_stub, expand_java_field_op,
2002         java_expand_expr, expand_byte_code, STORE_INTERNAL,
2003         force_evaluation_order, emit_init_test_initialization): Convert
2004         calls to "build" into calls to the prefered "buildN" functions.
2005
2006 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
2007
2008         * java-tree.h (set_block): Remove.
2009         * lang.c (java_clear_binding_stack): New.
2010         (LANG_HOOKS_CLEAR_BINDING_STACK): Define.
2011         * decl.c (struct binding_level): Remove this_block.
2012         (clear_binding_level): Likewise.
2013         (poplevel): Don't handle this_block.
2014         (set_block): Remove.
2015
2016 2004-07-10  Bryce McKinlay  <mckinlay@redhat.com>
2017
2018         * class.c (common_enclosing_context_p): Remove statement with no
2019         side-effects.
2020
2021 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
2022
2023         PR java/8618
2024         * parse.y (create_anonymous_class): Remove 'location' argument. Use
2025         the WFL from TYPE_NAME to get line number for the decl. Fix comment.
2026         (craft_constructor): Inherit access flags for implicit constructor
2027         from the enclosing class.
2028         (create_class): Fix comment typo.
2029         (resolve_qualified_expression_name): Pass type of qualifier to
2030         not_accessible_p, not the type in which target field was found.
2031         (not_accessible_p): Handle inner classes. Expand protected
2032         qualifier-subtype check to enclosing instances, but don't apply this
2033         check to static members. Allow protected access to inner classes
2034         of a subtype. Allow private access within common enclosing context.
2035         (build_super_invocation): Get WFL line number info from current
2036         class decl.
2037         (build_incomplete_class_ref): Update for new create_anonymous_class
2038         signature.
2039         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use
2040         common_enclosing_instance_p.
2041         * class.c (common_enclosing_context_p): New. Determine if types
2042         share a common enclosing context, even across static contexts.
2043         (common_enclosing_instance_p): Renamed from
2044         common_enclosing_context_p. Determines if types share a common
2045         non-static enclosing instance.
2046         * java-tree.h (common_enclosing_instance_p): Declare.
2047         * jcf-write.c (get_method_access_flags): New. Surpress private flag
2048         for inner class constructors.
2049         (generate_classfile): Use get_method_access_flags.
2050
2051 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
2052
2053         * class.c (interface_of_p): Check for null TYPE_BINFO.
2054
2055 2004-07-09  Nathan Sidwell  <nathan@codesourcery.com>
2056
2057         * class.c (make_class): Do not create binfo here.
2058         (set_super_info): Create it here.
2059         * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo.
2060
2061 2004-07-08  Richard Henderson  <rth@redhat.com>
2062
2063         * expr.c (case_identity, get_primitive_array_vtable,
2064         java_expand_expr, emit_init_test_initialization): Remove.
2065         * java-tree.h (java_expand_expr): Remove.
2066         * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove.
2067
2068 2004-07-07  Per Bothner  <per@bothner.com>
2069
2070         * class.c (build_static_field_ref):  Add a NOP_EXPR; otherwise we
2071         get internal error due to mismatched types.
2072
2073         * gcj.texi (Invoking gij):  Document new -verbose:class flag.
2074
2075         * gcj.texi (Linking):   New node.  Document -lgij usage.
2076
2077 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
2078
2079         * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
2080         (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise.
2081         * java/class.c (set_super_info, class_depth, interface_of_p,
2082         maybe_add_interface, add_interface, make_class_data,
2083         layout_class, add_miranda_methods): Adjust BINFO macros.
2084         * expr.c (can_widen_reference_to, lookup_field): Likewise.
2085         * jcf-write.c (generate_classfile): Likewise.
2086         * parse.y (patch_anonymous_class,
2087         check_inner_circular_reference, check_circular_reference,
2088         java_complete_class, check_abstract_method_definitions,
2089         java_check_abstract_method_definitions,
2090         check_interface_throws_clauses, java_check_abstract_methods,
2091         lookup_java_interface_method2,
2092         find_applicable_accessible_methods_list): Likewise.
2093         * typeck.c (find_method_in_interface): Likewise.
2094         * verify.c (merge_types): Likewise.
2095
2096 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
2097
2098         * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1.
2099         * class.c (add_interface_do): Use BINFO_VIRTUAL_P.
2100
2101 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
2102
2103         * class.c (make_class): Use make_tree_binfo.
2104         (set_super_info, add_interface_do): Likewise.
2105         * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO.
2106
2107 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
2108
2109         * verify.c: Correct array element access formatting thinko.
2110
2111 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
2112
2113         * verify.c: Insert a short blurb at the start referring to the JVMS.
2114         (merge_type_state): Remove redundant nested if statement.
2115         (verify_jvm_instructions): Ensure current_subr is initialised to
2116         NULL_TREE.
2117         Minor formatting fixes all over the place.
2118
2119 2004-07-02  Richard Henderson  <rth@redhat.com>
2120
2121         * jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.
2122
2123 2004-07-01  Richard Henderson  <rth@redhat.com>
2124
2125         * class.c (registerClass_libfunc): Remove.
2126         (init_class_processing): Don't set it.
2127         (emit_register_classes): Take list_p parameter.  Fill it in
2128         with _Jv_RegisterClass calls.
2129         * decl.c (java_init_decl_processing): Don't call
2130         init_resource_processing.
2131         * jcf-parse.c (java_emit_static_constructor): New.
2132         (java_parse_file): Call it.
2133         * resource.c (registerResource_libfunc): Remove.
2134         (init_resource_processing): Remove.
2135         (write_resource_constructor): Take list_p parameter.  Fill it in
2136         with _Jv_RegisterResource calls.
2137         * java-tree.h: Update prototypes.
2138
2139 2004-06-29  Bryce McKinlay  <mckinlay@redhat.com>
2140
2141         PR java/1262
2142         * class.c (layout_class_method): Do not override package-private
2143         method if its in a different package.
2144         (split_qualified_name): Move here from parse.y. Rename from
2145         breakdown_qualified. Add comment.
2146         (in_same_package): Move here from parse.y. Add comment.
2147         * java-tree.h (break_down_qualified, in_same_package): Declare.
2148         (in_same_package): Likewise.
2149         * parse.y (breakdown_qualified, in_same_package): Moved to class.c.
2150         Callers updated.
2151
2152 2004-06-29  Andrew Haley  <aph@redhat.com>
2153
2154         * except.c (expand_start_java_handler): Push a new binding level.
2155         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
2156         register_exception_range() to register where we'll do it.
2157         (expand_end_java_handler): Remove old bogus code.  Replace with
2158         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
2159         the top of the expression we're curently building.
2160         (maybe_end_try): Delete.
2161         * decl.c (binding_level.exception_range): New field.
2162         (clear_binding_level): Add field exception_range.  Reformat.
2163         (poplevel): Call expand_end_java_handler().
2164         (poplevel): Call java_add_stmt only if functionbody is false.
2165         (maybe_poplevels): Don't call maybe_end_try() from here.
2166         (end_java_method): Clear no longer used trees in function decl.
2167         (register_exception_range): New function.
2168         * java-tree.h (register_exception_range, struct eh_range): Declare.
2169
2170 2004-06-28  Bryce McKinlay  <mckinlay@redhat.com>
2171
2172         * jcf-write.c (get_classfile_modifiers): Formatting fixes.
2173
2174 2004-06-27  Ranjit Mathew  <rmathew@hotmail.com>
2175
2176         Formatting fixes.
2177         * expr.c (class_has_finalize_method): Fix method name indentation.
2178         (expand_java_call): Remove K&R style parameter declaration.
2179         (expand_invoke): Fix statement indentation.
2180         (expand_java_field_op): Likewise.
2181         * parse-scan.y: Fix typo.
2182         (reset_report): Fix method name indentation.
2183         * parse.y (unresolved_type_p, build_expr_block): Remove extra blank
2184         line. Fix typos.
2185         * verify.c (verify_jvm_instructions): Document parameters, insert
2186         page break.
2187         * lang.c (lang_init_source): Fix method name indentation.
2188         * class.c (common_enclosing_context_p): Likewise.
2189         (emit_symbol_table): Fix parameter list indentation.
2190         * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style
2191         parameter declaration.
2192         * constants.c: Fix copyright notice indentation.
2193         * typeck.c (find_method_in_superclasses): Fix parameter list
2194         indentation.
2195         (find_method_in_interfaces): Likewise.
2196         * zextract.c (makelong): Fix method name indentation.
2197
2198 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
2199
2200         PR java/15715.
2201         * parse.y (create_interface): Set correct access modifiers for
2202         interfaces.
2203         * jcf-write.c (get_classfile_modifiers): New function.
2204         (generate_classfile): Use get_classfile_modifiers, not
2205         get_access_flags.
2206
2207 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
2208
2209         * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super"
2210         dependency to current parser context, not NULL_TREE, for top-level
2211         classes.
2212         (jdep_resolve_class): Enable member access check for all inner
2213         class dependencies.
2214
2215 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
2216
2217         * parse.y (qualify_and_find): Pass type decl, not identifier, to
2218         load_class.
2219
2220 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
2221
2222         PR java/15734
2223         * expr.c (expand_java_field_op): Ensure that target class for static
2224         field access has been loaded.
2225
2226 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
2227             Ranjit Mathew  <rmathew@hotmail.com>
2228
2229         PR java/1207, java/16178
2230         * jcf-parse.c (load_class): Return immediately if passed a type decl
2231         where CLASS_FROM_SOURCE_P is set. Remove FIXME.
2232         * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P
2233         before calling load_class.
2234         (qualify_and_find): Likewise.
2235         (find_in_imports_on_demand): Likewise.
2236         (find_applicable_accessible_methods_list): Likewise.
2237
2238 2004-06-24  Bryce McKinlay  <mckinlay@redhat.com>
2239
2240         * parse.y (java_layout_seen_class_methods): Don't call load_class
2241         on class defined by source parser.
2242
2243 2004-06-23  Bryce McKinlay  <mckinlay@redhat.com>
2244
2245         * parse.y (set_nested_class_simple_name_value): Removed.
2246         (java_complete_expand_class): Remove calls to
2247         set_nested_class_simple_name_value.
2248
2249 2004-06-22  Andrew Haley  <aph@redhat.com>
2250             Ranjit Mathew  <rmathew@hotmail.com>
2251
2252         Fixes PR java/16113.
2253         * decl.c (force_poplevels): Remove call to expand_end_bindings.
2254
2255 2004-06-22  Ranjit Mathew  <rmathew@hotmail.com>
2256
2257         * parse.y (create_class): Correct diagnostic message about
2258         java.lang.Object extending anything else.
2259
2260 2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2261
2262         * class.c (build_class_ref): Add new operand for COMPONENT_REF.
2263         (build_static_field_ref): Likewise and add new operands for ARRAY_REF.
2264         * constants.c (build_ref_from_constant_pool): Likewise.
2265         * expr.c (build_java_array_length_access): Likewise.
2266         (build_get_class, build_field_ref, build_known_method_ref): Likewise.
2267         (invoke_build_dtable, build_invokevirtual): Likewise.
2268         (build_invokeinterface, java_expand_expr): Likewise.
2269         (emit_init_test_initialization): Likewise.
2270         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
2271         * parse.y (make_qualifed_name, build_array_ref): Likewise.
2272
2273 2004-06-21  Andrew Haley  <aph@redhat.com>
2274
2275         * java-gimplify.c (java_gimplify_block): set TREE_USED on the new
2276         block.
2277
2278 2004-06-21  Joseph S. Myers  <jsm@polyomino.org.uk>
2279
2280         * jcf.h (struct JCF): Change java_source, right_zip and finished
2281         to unsigned int.
2282         * lex.h (struct java_lexer): Change hit_eof, read_anything,
2283         byte_swap and use_fallback to unsigned int.
2284         * parse.h (struct _jdep): Change flag0 to unsigned int.
2285
2286 2004-06-17  Ranjit Mathew  <rmathew@hotmail.com>
2287
2288         Fixes PR java/13948
2289         * parse.y (java_layout_seen_class_methods): Ensure class is loaded
2290         before trying to lay out its methods.
2291         * jcf-parse.c (read_class): Track parsed files using canonical paths
2292         obtained via lrealpath from libiberty.
2293         (java_parse_file): Likewise.
2294         (parse_source_file_1): Rename formal parameter to reflect its
2295         modified purpose. Minor formatting fix.
2296
2297 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
2298
2299         * class.c (emit_register_classes): Make the function uninlinable,
2300         do not set current_function_cannot_inline.
2301         * resource.c (write_resource_constructor): Do not reset
2302         flag_inline_functions around rest_of_compilation.
2303
2304 2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>
2305
2306         PR java/15769
2307         * expr.c (java_truthvalue_conversion): Handle
2308         UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
2309         ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
2310         i.e. return the expression.
2311
2312 2004-06-03 Mark G. Adams  <mark.g.adams@sympatico.ca>
2313
2314         * gjavah.c: Include version.h
2315
2316 2004-05-31  Bryce McKinlay  <mckinlay@redhat.com>
2317
2318         * jcf-write.c (generate_bytecode_conditional): Correct handling
2319         of unordered conditionals. Add comment.
2320
2321 2004-05-29  Ranjit Mathew  <rmathew@hotmail.com>
2322             Per Bothner  <per@bothner.com>
2323
2324         * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a
2325         local variable was initialised upon declaration.
2326         * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if
2327         variable was final and initialised upon declaration.
2328         * check-init.c (check_final_reassigned): Give error only if a blank
2329         final is not definitely unassigned or if an initialised final is
2330         reassigned.
2331         (check_bool_init): Respect JLS2 16.1.7 requirements for boolean
2332         assignment expressions. Remove case MODIFY_EXPR, label do_default.
2333         (check_init): Perform initialised-variable-removing-optimisation
2334         only on non-final local variables.
2335
2336 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
2337
2338         * jcf-write.c (generate_bytecode_conditional): Handle binops
2339         UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR,
2340         and LTGT_EXPR.
2341         (generate_bytecode_insns): Likewise.
2342
2343 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
2344
2345         * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR,
2346         UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR.
2347
2348 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
2349
2350         * gcj.texi (Object allocation): Remove _Jv_AllocBytes.
2351         (Mixing with C++): Document JvAllocBytes and RawDataManaged.
2352
2353 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
2354
2355         * decl.c (struct binding_level): Add GTY marker. Compile
2356         binding_depth unconditionally.
2357         (current_binding_level, free_binding_level, global_binding_level):
2358         Likewise.
2359         (clear_binding_level): Unconditionally set binding_depth.
2360         (make_binding_level): Use ggc_alloc_cleared, not xmalloc.
2361
2362 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
2363
2364         * lex.c (java_new_lexer): Set 'encoding'.
2365         (java_read_char): Improve error message for unrecognized characters.
2366         * lex.h (struct java_lexer): New field 'encoding'.
2367
2368 2004-05-23  Paolo Bonzini  <bonzini@gnu.org>
2369
2370         * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o.
2371
2372 2004-05-21  Mark Wielaard  <mark@klomp.org>
2373
2374         * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not
2375         extern.
2376
2377 2004-05-19  Paolo Bonzini  <bonzini@gnu.org>
2378
2379         * typeck.c: Remove non-printable character 160.
2380
2381 2004-05-17  Ranjit Mathew  <rmathew@hotmail.com>
2382
2383         * check-init.c: Correct minor typos.
2384
2385 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
2386
2387         * Make-lang.in, expr.c, java-gimplify.c: Rename
2388         tree-simple.[ch] to tree-gimple.[ch].
2389
2390 2004-05-14  Ranjit Mathew  <rmathew@hotmail.com>
2391
2392         * java-gimplify.c (java_gimplify_expr): Correct minor typos.
2393
2394 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
2395
2396         Merge from tree-ssa-20020619-branch.  See
2397         ChangeLog.tree-ssa for details.
2398
2399         * Make-lang.in, builtins.c, check-init.c, class.c,
2400         constants.c, decl.c, except.c, expr.c, java-except.h,
2401         java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c,
2402         lang.c, lang.opt, parse.y, resource.c: Merged.
2403         * java-gimplify.c: New file.
2404
2405 2004-05-10  Andrew Haley  <aph@redhat.com>
2406
2407         * parse.y (create_class): Set TYPE_VFIELD.
2408         * decl.c (java_init_decl_processing): Likewise.
2409
2410         * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment.
2411         * class.c (make_method_value): Replace DECL_VINDEX with call to
2412         get_method_index().
2413         (get_dispatch_vector): Likewise.
2414         (layout_class_method): Likewise.
2415         Replace set of DECL_VINDEX with call to set_method_index().
2416         (set_method_index): New function.
2417         (get_method_index): New function.
2418         * java-tree.h (set_method_index): New function decl.
2419         (get_method_index): New function decl.
2420
2421 2004-05-10  Andrew Pinski  <pinskia@physics.uc.edu>
2422
2423         * parse.y (check_pkg_class_access): Add new argument
2424         and use it when cl is NULL to call lookup_cl on it.
2425         (parser_check_super_interface): Do not call lookup_cl.
2426         Pass this_decl to check_pkg_class_access and NULL
2427         instead of lookup_cl.
2428         (parser_check_super): Update for change in
2429         check_pkg_class_access.
2430         (do_resolve_class): Likewise.
2431         (process_imports): Likewise.
2432         (find_in_imports_on_demand): Likewise.
2433         (resolve_qualified_expression_name): Likewise.
2434
2435 2004-05-06  Ranjit Mathew  <rmathew@hotmail.com>
2436
2437         Fixes PR java/9685, PR java/15073
2438         * parse.y (accessibility_string): New method.
2439         (not_accessible_field_error): Use accessibility_string()
2440         instead of java_accstring_lookup().
2441         (resolve_qualified_expression_name): Check with
2442         check_pkg_class_access() before allowing access using
2443         qualified names.
2444         Fix comment typo.
2445         Use check_pkg_class_access() instead of not_accessible_p()
2446         for unqualified types.
2447         (not_accessible_p): Use DECL_CONTEXT (member) instead of
2448         REFERENCE for package-private access checking.
2449         (patch_method_invocation): Use accessibility_string() instead
2450         of java_accstring_lookup().
2451
2452 2004-04-30  Ranjit Mathew  <rmathew@hotmail.com>
2453
2454         Fixes PR java/15133
2455         * gjavah.c (struct method_name): Add member is_native.
2456         (overloaded_jni_method_exists_p): Match candidate method only if
2457         it is native.
2458         (print_method_info): Initialise is_native flag from the method's
2459         access flags.
2460
2461 2004-04-30  Roger Sayle  <roger@eyesopen.com>
2462
2463         * builtins.c (java_builtins): Add acos, asin, ceil and floor.
2464         (initialize_builtins): Likewise, define acos, asin, ceil and floor.
2465
2466 2004-04-22  Roger Sayle  <roger@eyesopen.com>
2467
2468         * resource.c (write_resource_constructor): Guard call to possibly
2469         NULL targetm.asm_out.constructor with targetm.have_ctors_dtors.
2470
2471 2004-04-19  Bryce McKinlay  <mckinlay@redhat.com>
2472
2473         * class.c (make_class_data): Add new field aux_info.
2474         * decl.c (java_init_decl_processing): Push type and decl for
2475         `aux_info'.
2476
2477 2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>
2478
2479         * expr.c (expand_java_NEW): Don't use size argument for
2480         _Jv_AllocObject calls.
2481         * parse.y (patch_invoke): Likewise.
2482
2483 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
2484
2485         * expr.c (build_invokeinterface): Remove unused variables to
2486         fix warnings.
2487
2488 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
2489
2490         * class.c (get_interface_method_index): New function. Return dispatch
2491         index for interface method.
2492         (make_method_value): For interface methods, set index field to
2493         iface dispatch index, not DECL_VINDEX.
2494         * expr.c (build_invokeinterface): Use get_interface_method_index.
2495
2496 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2497
2498         * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.
2499
2500 2004-03-31  Andrew Haley  <aph@redhat.com>
2501
2502         PR java/14104
2503         * jcf-io.c (opendir_in_zip): Tidy up error handling.
2504
2505 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
2506
2507         * builtins.c, expr.c, jcf.h, parse.h: Use new shorter
2508         form of GTY markers.
2509
2510 2004-03-25  Marcus Meissner  <meissner@suse.de>
2511
2512         PR java/14689:
2513         * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir.
2514
2515 2004-03-23  Tom Tromey  <tromey@redhat.com>
2516
2517         PR java/14315:
2518         * jcf-write.c (make_class_file_name): Don't report if mkdir
2519         failed with EEXIST.
2520
2521 2004-03-23  Tom Tromey  <tromey@redhat.com>
2522
2523         * gcj.texi (Extensions): Document GCJ_PROPERTIES.
2524
2525 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2526
2527         * class.c, gjavah.c, lang.c: Fix comment typos.
2528         * gcj.texi: Fix typos.
2529
2530 2004-03-19  Per Bothner  <per@bothner.com>
2531
2532         * gcj.texi (Code Generation):  Document new flags and assert defaults.
2533
2534         * class.c (assume_compiled_node_struct):  Rename type to
2535         class_flag_node_struct, as it is now also used for enable_assertions.
2536         Rename assume_compiled_node typedef.  Rename excludep field to value.
2537         (find_assume_compiled_node):  Rename function to find_class_flag_node.
2538         Minor optimization - avoid needless strlen.
2539         (add_assume_compiled):  Some tweaking and optimization.
2540         Rename and generalize to add_class_flag takem an extra parameter.
2541         (add_assume_compled):  New just calls add_class_flag.
2542         (add_enable_assert, enable_assertions):  New functions.
2543         (enable_assert_tree):  New static.
2544         * java-tree.h (add_enable_assert, enable_assertions): New declarations.
2545         * lang.opt (fenable-assertions, fenable-assertions=,
2546         fdisable-assertions, fdisable-assertions=):  New options.
2547         * lang.c (java_handle_option):  Handle new options.
2548         * parse.y (build_incomplete_class_ref):  Handle class$ in an inner
2549         class in an interface - create helper class nested in outer interface.
2550         (build_assertion):  Short-circuit if enable_assertions is false.
2551
2552 2004-03-18  Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2553
2554         * java-tree.h: Changes throughout to add checking to macros
2555         and numerous whitespace changes.
2556         (VAR_OR_FIELD_CHECK): New macro.
2557         * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC,
2558         FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL.
2559
2560 2004-03-16  Per Bothner  <per@bothner.com>
2561
2562         * jcf-jump.c (options):  New --print-constants option.
2563         * gcj.texi (Invoking jcf-dump):  Document --print-constants.
2564
2565         * jcf-dump.c (flag_print_constant_pool):  Default to off.
2566         (print_constant_terse_with_index):  New helper function.
2567         (various places):  Check flag_print_constant_pool where missing.
2568         (main):  If verbose set flag_print_constant_pool.
2569         (HANDLE_INNERCLASSES_ATTRIBUTE):  Null inner class name is anonymous.
2570
2571 2004-03-15  Andrew Haley  <aph@redhat.com>
2572
2573         PR java/14581
2574         * parse.y (java_complete_lhs): Check that final variable has an
2575         initializer.
2576
2577 2004-03-12  Andrew Haley  <aph@redhat.com>
2578
2579         PR java/14551
2580         * typeck.c (convert): Clear TREE_OVERFLOW after an integer
2581         conversion.
2582
2583 2004-02-29  Roger Sayle  <roger@eyesopen.com>
2584
2585         * jcf-parse.c (java_parse_file): Handle the case that input_filename
2586         is NULL.
2587
2588 2004-02-27  Per Bothner  <per@bothner.com>
2589
2590         * parse.y (build_assertion):  Re-do 02-25 change following Jeff Sturm
2591         suggestion:  Use build_incomplete_class_ref.
2592         This fixes PR java/13508, java/11714.
2593
2594 2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
2595
2596         * java/parse.h: Update copyright.
2597
2598 2004-02-26  Andrew Haley  <aph@redhat.com>
2599
2600         PR java/14231:
2601         * parse.y (check_interface_throws_clauses): Check for
2602         !METHOD_INVISIBLE (iface_method).
2603         * class.c (layout_class_methods): Check for CLASS_INTERFACE as
2604         well as CLASS_ABSTRACT.
2605
2606 2004-02-25  Per Bothner  <per@bothner.com>
2607
2608         * parse.y (build_assertion):  If we're in an inner class, create the
2609         class$ helper routine in the outer class.
2610
2611 2004-02-19  Richard Henderson  <rth@redhat.com>
2612
2613         * parse.y (switch_label): Use make_node for DEFAULT_EXPR.
2614
2615 2004-02-16  Geoffrey Keating  <geoffk@apple.com>
2616
2617         * Make-lang.in (java.install-man): Add extra dependencies.
2618
2619 2004-02-13  Geoffrey Keating  <geoffk@apple.com>
2620
2621         * Make-lang.in: Install man pages under the same names
2622         (possibly transformed) as the program they document.
2623
2624 2004-02-10  Joseph S. Myers  <jsm@polyomino.org.uk>
2625
2626         * gjavah.c: Include "intl.h".
2627         (error): New function.
2628         (main): Call gcc_init_libintl.
2629         (get_field_name, throwable_p, print_c_decl, print_full_cxx_name,
2630         print_stub_or_jni, process_file, main): Use error rather than
2631         fprintf.
2632         (print_method_info, usage, help, version, main): Mark strings for
2633         translation with _.  Avoid splitting up sentences.  Send
2634         information messages to stdout.
2635         * jcf-dump.c: Include "intl.h".
2636         (main): Call gcc_init_libintl.
2637         (process_class, usage, help, version, main, CHECK_PC_IN_RANGE):
2638         Mark error, usage and version messages for translation with _.
2639         Avoid splitting up sentences.
2640         * jv-scan.c: Include "intl.h".
2641         (fatal_error, warning): Change parameter s to msgid.  Translate
2642         messages.
2643         (main): Call gcc_init_libintl.
2644         (usage, help, version): Mark error, usage and version messages for
2645         translation with _.  Avoid splitting up sentences.
2646         * jvgenmain.c: Include "intl.h".
2647         (main): Call gcc_init_libintl.
2648         (usage, main): Mark error messages for translation with _.
2649         * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS,
2650         JVGENMAIN_OBJS): Add intl.o.
2651         (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o,
2652         java/jvgenmain.o): Update dependencies.
2653
2654 2004-02-08  Per Bothner  <per@bothner.com>
2655
2656         * parse.y (resolve_qualified_expression_name):  In case of inaccessible
2657         class don't use not_accessible_field_error, which can get confused.
2658
2659 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
2660
2661         Make-lang.in (po-generated):  Delete.
2662
2663 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
2664
2665         * Make-lang.in (java/decl.o, java/expr.o, java/parse.o):
2666         Depend on target.h.
2667         * decl.c: Include target.h.
2668         (start_java_method): Replace PROMOTE_PROTOTYPES with
2669         targetm.calls.promote_prototypes.
2670         * expr.c: Include target.h.
2671         (pop_arguments): Replace PROMOTE_PROTOTYPES with
2672         targetm.calls.promote_prototypes.
2673         * parse.y: Include target.h.
2674         (start_complete_expand_method): Replace PROMOTE_PROTOTYPES
2675         with targetm.calls.promote_prototypes.
2676
2677 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
2678
2679         * typeck.c: Update copyright.
2680
2681 2004-02-02  Tom Tromey  <tromey@redhat.com>
2682
2683         * decl.c (java_init_decl_processing): Remove duplicate
2684         gnu/gcj/RawData.
2685
2686 2004-01-30  Kelley Cook  <kcook@gcc.gnu.org>
2687
2688         * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir).
2689
2690 2004-01-28  Andrew Pinski  <pinskia@physics.uc.edu>
2691
2692         * expr.c (build_field_ref): Move variable
2693         definition up.
2694
2695 2004-01-28  Andrew Haley  <aph@redhat.com>
2696
2697         * expr.c (build_field_ref): Widen field offset.
2698
2699 2004-01-27  Andrew Haley  <aph@redhat.com>
2700
2701         java/13273
2702         * parse.y (check_interface_throws_clauses): Make sure class_decl
2703         has been loaded.
2704
2705 2004-01-22  Jeff Sturm  <jsturm@one-point.com>
2706
2707         PR java/13733
2708         * parse.y (patch_assignment): Don't modify lhs_type for
2709         reference assignments.
2710
2711 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
2712
2713         * Make-lang.in: Replace $(docdir) with doc.
2714         (java.info, java.srcinfo, java.man, java.srcman): New rules.
2715         (java.install-man): Revamp rule.
2716
2717 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
2718
2719         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME,
2720         GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell)
2721         instead of deferred backquote.
2722
2723 2004-01-16  Andrew Pinski  <pinskia@physics.uc.edu>
2724
2725         * typeck.c (find_method_in_interfaces): Move variable
2726         definition up.
2727
2728 2004-01-16  Andrew Haley  <aph@redhat.com>
2729
2730         PR java/13273:
2731         * typeck.c (shallow_find_method): New.
2732         (find_method_in_superclasses): New.
2733         (find_method_in_interfaces): New.
2734         (lookup_do): Rewrite.
2735         * java-tree.h (SEARCH_ONLY_INTERFACE): Delete.
2736
2737         * jcf-parse.c (read_class): Save and restore output_class.
2738         * decl.c (java_expand_body): Set output_class from fndecl.
2739
2740 2004-01-15  Michael Chastain  <mec.gnu@mindspring.com>
2741
2742         * class.c (gen_indirect_dispatch_tables): Fix string length
2743         calculations.
2744
2745 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
2746
2747         * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory.
2748         (java.srcextra): Copy above back to source directory if requested.
2749         (po-generated): Delete reference to $(parsedir).
2750         (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir).
2751         Use implicit rule.
2752
2753 2004-01-14  Jan Hubicka  <jh@suse.cz>
2754
2755         * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
2756         estimation.
2757
2758 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
2759
2760         * java-tree.h (java_expand_expr): Change prototype.
2761         * expr.c (java_expand_expr): Add alt_rtl parameter.
2762
2763 2004-01-09  Andrew Haley  <aph@redhat.com>
2764
2765         PR java/12755:
2766         * parse.y (java_fix_constructors):  Set output_class.
2767         (java_reorder_fields): Likewise.
2768         (java_layout_classes): Likewise.
2769         (java_expand_classes): Generate indirect dispatch tables.
2770         (java_expand_classes): Set output_class.
2771         (java_finish_classes): Likewise.
2772         * lang.c (java_init): Turn on always_initialize_class_p if we're
2773         using indirect dis[atch.
2774         (java_decl_ok_for_sibcall): Use output_class, not current_class.
2775         (java_get_callee_fndecl): Use class local atable.
2776         * jcf-parse.c
2777         (always_initialize_class_p): Decl moved to java-tree.h.
2778         (HANDLE_CLASS_INFO): Set output_class.
2779         (read_class): Likewise.
2780         (parse_class_file): Call gen_indirect_dispatch_tables.
2781         (parse_zip_file_entries): Set output_class.
2782         (java_parse_file): Set output_class.  Don't emit symbol tables.
2783         * java-tree.h (output_class): New.
2784         Remove global declarations for otable, atable, and ctable.
2785         (always_initialize_class_p): moved here from decl.c.
2786         (DECL_OWNER): New.
2787         (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL,
2788         TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL,
2789         TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New.
2790         (struct lang_type): Add otable_methods, otable_decl,
2791         otable_syms_decl, atable_methods, atable_decl, atable_syms_decl,
2792         ctable_decl, catch_classes, type_to_runtime_map.
2793         * expr.c (build_field_ref): Make otable, atable, and ctable class
2794         local rather than global.
2795         (build_known_method_ref): Likewise.
2796         (build_invokeinterface): Likewise.
2797         (java_expand_expr): Pass runtime type (rather than actual type) to
2798         expand_start_catch.
2799         * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for
2800         this class.  Look up each class in that map to delete duplicates.
2801         (expand_end_java_handler): Pass runtime type (rather than actual
2802         type) to expand_start_catch.
2803         * decl.c: (always_initialize_class_p): Decl moved to java-tree.h.
2804         (do_nothing): New.
2805         (java_init_decl_processing): Rearrange things.  Remove global
2806         declarations of otable, atable, and ctable.
2807         (java_init_decl_processing): Make lang_eh_runtime_type do_nothing.
2808         (java_expand_body): Set output_class.
2809         * constants.c (build_constant_data_ref): Use output_class, not
2810         current_class.
2811         (alloc_name_constant): Likewise.
2812         * class.c (gen_indirect_dispatch_tables): New.
2813         (build_class_ref): Generate hard reference to superclass, even if
2814         using indirect dispatch.
2815         (build_static_field_ref): Use class local atable.
2816         (make_class_data): Generate hard reference to superclass, even if
2817         using indirect dispatch.
2818         Generate symbolic references to interfaces when using indirect
2819         dispatch.
2820         (make_class_data): Emit otable, atable, and ctable.
2821         Make otable, atable, and ctable class local rather than global.
2822         (emit_catch_table): Make otable, atable, and ctable class local
2823         rather than global.
2824
2825 2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>
2826
2827         * parse.y (catch_clause_parameter): Fix typo.
2828
2829         PR java/13404
2830         * parse.y: (catch_clause_parameter): Return early if $3, aka
2831         formal_parameter, is null.
2832
2833 2003-12-20  Kazu Hirata  <kazu@cs.umass.edu>
2834
2835         * class.c: Remove uses of "register" specifier in
2836         declarations of arguments and local variables.
2837         * decl.c: Likewise.
2838         * expr.c: Likewise.
2839         * gjavah.c: Likewise.
2840         * jcf-dump.c: Likewise.
2841         * jcf-io.c: Likewise.
2842         * jcf-parse.c: Likewise.
2843         * jcf-write.c: Likewise.
2844         * keyword.h: Likewise.
2845         * parse.y: Likewise.
2846         * typeck.c: Likewise.
2847         * verify.c: Likewise.
2848
2849 2003-12-06  Kelley Cook  <kcook@gcc.gnu.org>
2850
2851         * Make-lang.in (GCJ_CROSS_NAME): Delete.
2852         (java.install_common, java.install-man): Adjust for above.
2853         (java.uninstall): Likewise.
2854
2855 2003-12-03  Michael Koch  <konqueror@gmx.de>
2856
2857         * class.c (make_class_data):
2858         Push field value to 'hack_signers' instead of 'signers'.
2859         * decl.c (java_init_decl_processing):
2860         Push field 'hack_signers' instead of 'signers'.
2861
2862 2003-12-03  Zack Weinberg  <zack@codesourcery.com>
2863
2864         * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before
2865         including iconv.h.
2866
2867 2003-12-03  Ralph Loader  <rcl@ihug.co.nz>
2868
2869         PR java/12374:
2870         * parse.y (qualify_ambiguous_name): Remove lots of broken
2871         field access processing - there's no need to do that here,
2872         because we have resolve_field_access.  Remove
2873         RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else.
2874         * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't
2875         used.
2876
2877 2003-12-01  Jeff Sturm  <jsturm@one-point.com>
2878
2879         Fix PR java/13237
2880         * parse.y (java_complete_lhs): Save location prior to patching
2881         CALL_EXPR.
2882
2883 2003-11-25  Mohan Embar  <gnustuff@thisiscool.com>
2884
2885         PR java/12548
2886         * resource.c (write_resource_constructor): Append
2887         "_resource" to constructor identifier name.
2888
2889 2003-11-25  Jeff Sturm  <jsturm@one-point.com>
2890
2891         Fix PR java/13183.
2892         * constants.c (cpool_for_class): New function.
2893         (outgoing_cpool): Remove global variable.
2894         (alloc_name_constant): Use cpool_for_class.
2895         (build_constants_constructor): Likewise.
2896         * decl.c (java_expand_body): Set current_class.
2897         * java-tree.h (outgoing_cpool) Remove declaration.
2898         (init_outgoing_cpool): Likewise.
2899         * jcf-parse.c (init_outgoing_cpool): Remove function.
2900         (parse_class_file): Don't call init_outgoing_cpool.
2901         * parse.y (java_complete_expand_methods): Don't call
2902         init_outgoing_cpool.  Don't save outgoing_cpool.
2903         (java_expand_classes): Don't restore outgoing_cpool.
2904         (java_finish_classes): Likewise.
2905
2906 2003-11-24  Mohan Embar  <gnustuff@thisiscool.com>
2907
2908         * Make-lang.in: (java.install-common) Add
2909         symlink for $(target_noncanonical)-gcjh for
2910         native builds.
2911
2912 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
2913
2914         * Make-lang.in (java.extraclean): Delete.
2915
2916 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
2917
2918         * Make-lang.in (check-java): Add.
2919
2920 2003-11-19  Jeff Sturm  <jsturm@one-point.com>
2921
2922         Fix PR java/13024.
2923         * except.c (prepare_eh_table_type): Allocate variable-sized
2924         buffer `buf' with alloca.
2925
2926 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
2927
2928         Fix PR java/12857.
2929
2930         decl.c (java_init_decl_processing): Don't initialize
2931         class_not_found_type_node, no_class_def_found_type_node.
2932
2933         java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE,
2934         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index.
2935         (class_not_found_type_node, no_class_def_found_type_node):
2936         Don't define.
2937
2938         parse.y (build_dot_class_method_invocation): Add this_class
2939         argument.  Qualify method invocations to a different class.
2940         (create_new_parser_context): Initialize saved_data_ctx to 0.
2941         (java_parser_context_save_global): Initialize saved_data_ctx to 1.
2942         (build_dot_class_method): Don't load classes.  Register
2943         incomplete types.
2944         (build_incomplete_class_ref): Special cases for interfaces
2945         and inner classes.  Move build_dot_class_method call to here...
2946         (patch_incomplete_class_ref): ...from here.  Pass current_class
2947         to build_dot_class_method_invocation.
2948         (build_assertion): Pass class_type to
2949         build_dot_class_method_invocation.
2950         (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node.
2951
2952 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
2953
2954         Fix PR java/12739.
2955         * java-tree.h (BLOCK_EMPTY_P): Define.
2956         * parse.y (java_complete_lhs): Check for empty blocks
2957         in TRY_FINALLY_EXPR case.
2958
2959 2003-11-17  Andrew Haley  <aph@redhat.com>
2960
2961         * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
2962         (struct lang_decl_var:freed): New variable.
2963         * decl.c (poplevel): Mark local vars that have gone out of scope.
2964         (push_jvm_slot): Don't use the RTL of a var that has gone out of
2965         scope.
2966
2967 2003-11-16  Jason Merrill  <jason@redhat.com>
2968
2969         * Make-lang.in (java.tags): Create TAGS.sub files in each directory
2970         and TAGS files that include them for each front end.
2971
2972 2003-11-15  Tom Tromey  <tromey@redhat.com>
2973
2974         * gjavah.c (print_stub_or_jni): Pass `env' to FatalError.
2975
2976 2003-11-12  Jason Merrill  <jason@redhat.com>
2977
2978         PR optimization/12547
2979         * lang.c (java_tree_inlining_walk_subtrees): Just walk
2980         BLOCK_EXPR_BODY directly.
2981
2982 2003-11-12  Andrew Haley  <aph@redhat.com>
2983
2984         PR java/11045
2985         * parse.y (fold_constant_for_init): Check that we really do have a
2986         constant.
2987
2988         PR java/11533
2989         * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for
2990         init_test_decls being inlined.
2991
2992         PR java/12890:
2993         * parse.y (do_resolve_class): Check return value from
2994         breakdown_qualified().
2995
2996 2003-11-11  Tom Tromey  <tromey@redhat.com>
2997
2998         PR java/12915:
2999         * parse.y (merge_string_cste): Handle case where we have a
3000         pointer that happens to be zero, not null_pointer_node.
3001
3002 2003-11-10  Tom Tromey  <tromey@redhat.com>
3003
3004         * jcf-parse.c (classify_zip_file): Correctly compare
3005         filename_length against length of manifest file's name.
3006
3007 2003-11-08  Tom Tromey  <tromey@redhat.com>
3008
3009         PR java/12894:
3010         * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file.
3011
3012 2003-11-06  Andrew Haley  <aph@redhat.com>
3013
3014         * expr.c (java_stack_swap): Make sure destination stack slots are
3015         of the correct type.
3016
3017 2003-11-03  Kelley Cook  <kcook@gcc.gnu.org>
3018
3019         * Make-lang.in (dvi): Move targets to $(docobjdir).
3020         (gcj.dvi): Simplify rule and adjust target.
3021         (gcj.info): Simplify rule.
3022         (gcj.pod): New intermediate rule.
3023         (gcjh.pod): Likewise.
3024         (jv-scan.pod): Likewise.
3025         (jcf-dump.pod): Likewise.
3026         (gij.pod): Likewise.
3027         (jv-convert.pod): Likewise.
3028         (rmic.pod): Likewise.
3029         (rmiregistry.pod): Likewise.
3030         (gcj.1): Delete.
3031         (gcjh.1): Delete.
3032         (jv-scan.1): Delete.
3033         (jcf-dump.1): Delete.
3034         (gij.1): Delete.
3035         (jv-convert.1): Delete.
3036         (rmic.1): Delete.
3037         (rmiregistry.1): Delete.
3038
3039 2003-11-02  Jeff Sturm  <jsturm@one-point.com>
3040
3041         Fixes PR java/12866.
3042         * parse.y (resolve_qualified_expression_name): Move test
3043         for outer field access methods from here...
3044         (check_thrown_exceptions) ...to here.
3045
3046 2003-11-01  Kelley Cook  <kcook@gcc.gnu.org>
3047
3048         * .cvsignore: Delete.
3049
3050 2003-10-28  Frank Ch. Eigler  <fche@redhat.com>
3051
3052         * verify.c (verify_jvm_instructions): Don't warn about legal
3053         eh binding regions generated for example by jdk 1.4.1.
3054
3055 2003-10-24  David S. Miller  <davem@redhat.com>
3056
3057         * jcf-parse.c (jcf_parse): Fix args to fatal_error().
3058
3059 2003-10-22  Andrew Haley  <aph@redhat.com>
3060
3061         * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
3062         (java_get_callee_fndecl): New.
3063
3064         * jcf-parse.c (java_parse_file): Call emit_catch_table().
3065
3066         * java-tree.h (ctable_decl): New.
3067         (catch_classes):  New.
3068         (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.
3069
3070         * decl.c (java_init_decl_processing): Add catch_class_type.
3071         Add ctable_decl.
3072         Add catch_classes field.
3073
3074         * class.c (build_indirect_class_ref): Break out from
3075         build_class_ref.
3076         (make_field_value): Check flag_indirect_dispatch.
3077         (make_class_data): Ditto.
3078         Tidy uses of PUSH_FIELD_VALUE.
3079         Add field catch_classes.
3080         (make_catch_class_record): New.
3081
3082         * java-tree.h (PUSH_FIELD_VALUE): Tidy.
3083
3084 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
3085
3086         * jcf-write.c: Follow spelling conventions.
3087         * parse.y: Likewise.
3088
3089 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
3090
3091         * ChangeLog: Fix typos.
3092         * expr.c: Fix comment typos.
3093         * jcf-write.c: Likewise.
3094         * lang.c: Likewise.
3095         * lex.c: Likewise.
3096         * mangle.c: Likewise.
3097         * parse-scan.y: Likewise.
3098         * parse.y: Likewise.
3099
3100 2003-10-22  Tom Tromey  <tromey@redhat.com>
3101
3102         * expr.c (expand_byte_code): Only warn about dead bytecode when
3103         extra_warnings is set.
3104
3105 2003-10-22  Bryce McKinlay  <bryce@mckinlay.net.nz>
3106
3107         Fix for PR java/12586.
3108         * mangle.c (find_compression_record_match): Don't iterate through
3109         package namespace elements unless they all match compression_table
3110         entries.
3111
3112 2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>
3113
3114         * Make-lang.in (info): Honor $(parsedir) and $(docobjdir).
3115         (generate-manpages): Likewise.
3116         (java.maintainer-clean): Likewise.
3117         (gcj.info): Likewise.
3118         (gcj.1): Likewise.
3119         (gcjh.1): Likewise.
3120         (jv-scan.1): Likewise.
3121         (jcf-dump.1): Likewise.
3122         (gij.1): Likewise.
3123         (jv-convert.1): Likewise.
3124         (rmic.1): Likewise.
3125         (rmiregistry.1): Likewise.
3126         (java.install-man): Likewise.
3127         (parse-scan.o): Move and define complete compile line.
3128         (parse.o): Likewise.
3129         (jcf-tree-inline.o): Move.
3130
3131 2003-10-20  Mark Mitchell  <mark@codesourcery.com>
3132
3133         * Make-lang.in (info): Update dependencies.
3134         (java.install-info): Remove.
3135         ($(srcdir)/java/gcj.info): Replace with ...
3136         ($(docobjdir)/gcj.info): ... this.
3137
3138 2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>
3139
3140         * Make-lang.in: Replace uses of $(target_alias) with
3141         $(target_noncanonical).
3142
3143 2003-10-09  Tom Tromey  <tromey@redhat.com>
3144
3145         * decl.c (java_init_decl_processing): Declare signers field.
3146         * class.c (make_class_data): Set signers field.
3147
3148 2003-10-09  Jason Merrill  <jason@redhat.com>
3149
3150         * parse.y (patch_assignment): Use make_node to create a BLOCK.
3151         * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a
3152         POINTER_TYPE.
3153
3154 2003-10-06  Mark Mitchell  <mark@codesourcery.com>
3155
3156         * Make-lang.in (java.info): Replace with ...
3157         (info): ... this.
3158         (java.dvi): Replace with ...
3159         (dvi): ... this.
3160         (java.generated-manpages): Replace with ...
3161
3162 2003-10-03  Kelley Cook  <kelleycook@wideopenwest.com>
3163
3164         * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros.
3165
3166 2003-10-01  Andrew Haley  <aph@redhat.com>
3167
3168         * jcf-parse.c (java_parse_file): Write otable and atable.
3169         * java-tree.h (atable_methods): New.
3170         (atable_decl): New.
3171         (atable_syms_decl): New.
3172         (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL,
3173         JTI_ATABLE_SYMS_DECL.  Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*.
3174         (symbol_*type): Rename method_symbol* to symbol*type.
3175         (emit_offset_symbol_table): Delete.
3176         (emit_symbol_table): New.
3177         (get_symbol_table_index): New.
3178         (atable_type): New.
3179         * expr.c (build_field_ref): Handle flag_indirect_dispatch.
3180         (build_known_method_ref): Likewise.
3181         (get_symbol_table_index): Rename from get_offset_table_index.
3182         Parameterize to allow re-use by differing types of symbol table.
3183         (build_invokevirtual): Pass table to get_offset_table_index.
3184         * decl.c (java_init_decl_processing): Push types and decls for
3185         atable and atable_syyms.
3186         * class.c (build_static_field_ref): Handle flag_indirect_dispatch.
3187         (make_class_data): Add new fields atable and atable_syms.
3188         (emit_symbol_table): Rename from emit_offset_symbol_table.
3189         Parameterize to allow re-use by different types of symbol table.
3190         (build_symbol_entry): Renamed from build_method_symbols_entry.
3191
3192 2003-09-30  Roger Sayle  <roger@eyesopen.com>
3193
3194         * jcf-write.c (generate_bytecode_insns): Implement evaluate-once
3195         semantics for SAVE_EXPR, by caching the result in a temporary.
3196
3197 2003-09-28  Richard Henderson  <rth@redhat.com>
3198
3199         * check-init.c (check_init): Save and restore input_location
3200         instead of file and line separately.
3201         * decl.c (java_expand_body): Likewise.
3202         * jcf-write.c (generate_bytecode_insns): Likewise.
3203         * parse.y (safe_layout_class): Likewise.
3204         * jcf-parse.c (read_class, parse_class_file): Likewise.
3205         (java_parse_file): Use %H for warning locator.
3206
3207 2003-09-28  Roger Sayle  <roger@eyesopen.com>
3208
3209         * expr.c (java_check_reference): Use the semantics of COND_EXPRs
3210         with void-type branches instead of using a COMPOUND_EXPR.
3211
3212 2003-09-28  Jeff Sturm  <jsturm@one-point.com>
3213
3214         * decl.c (java_optimize_inline, dump_function): Remove.
3215         * java-tree.h (java_optimize_inline): Remove declaration.
3216         * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set.
3217         * parse.y (source_end_java_method, java_expand_classes):
3218         Likewise.  Remove dead code.
3219
3220 2003-09-27  Roger Sayle  <roger@eyesopen.com>
3221
3222         * lang.c (java_init_options): Set flag_evaluation_order.
3223         * expr.c (force_evaluation_order): Don't attempt to force
3224         evaluation order of binary operations using save_expr.
3225         * parse.y (java_complete_lhs): No longer need to call
3226         force_evaluation_order when constructing binary operators.
3227
3228 2003-09-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
3229             Bryce McKinlay  <bryce@mckinlay.net.nz>
3230
3231         PR java/1333:
3232         * parse.y (not_accessible_field_error): New function.
3233         (resolve_expression_name): Check field access permissions.
3234         (resolve_qualified_expression_name): Use
3235         not_accessible_field_error.
3236         (resolve_qualified_expression_name): Likewise.
3237
3238 2003-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3239
3240         * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value.
3241
3242 2003-09-23  Roger Sayle  <roger@eyesopen.com>
3243
3244         * jcf-write.c (generate_bytecode_insns): Optimize binary operations
3245         with equal operands without side-effects.
3246
3247 2003-09-22  Jeff Sturm  <jsturm@one-point.com>
3248
3249         * decl.c (java_init_decl_processing): Don't emit otable decls
3250         if flag_indirect_dispatch is not set.
3251
3252 2003-09-21  Richard Henderson  <rth@redhat.com>
3253
3254         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
3255         resource.c: Revert.
3256
3257 2003-09-21  Richard Henderson  <rth@redhat.com>
3258
3259         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
3260         resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.
3261
3262 2003-09-20  Richard Henderson  <rth@redhat.com>
3263
3264         * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
3265
3266 2003-09-18  Roger Sayle  <roger@eyesopen.com>
3267
3268         * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
3269         * check-init.c (check_init): Likewise.
3270
3271 2003-09-18  Roger Sayle  <roger@eyesopen.com>
3272
3273         * jcf-write.c (generate_bytecode_insns): Add support for fconst_2.
3274
3275 2003-09-16  Andrew Haley  <aph@redhat.com>
3276
3277         * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR.
3278
3279 2003-09-17  Ranjit Mathew  <rmathew@hotmail.com>
3280
3281         Fixes PR java/9577
3282         * mangle.c (find_compression_record_match): Skip
3283         over a "6JArray" (the array template mangled string)
3284         IDENTIFIER_NODE.
3285         (mangle_array_type): Correct minor typo.
3286         (atms): Move definition to the beginning.
3287
3288 2003-09-16  Bryce McKinlay  <bryce@mckinlay.net.nz>
3289
3290         * class.c (add_miranda_methods): Ensure super-interfaces are laid
3291         out. Fix for PR java/12254.
3292
3293 2003-09-11  Richard Henderson  <rth@redhat.com>
3294
3295         * parse.y (source_end_java_method): Update for new
3296         cgraph_finalize_function argument.
3297
3298 2003-09-09  Richard Henderson  <rth@redhat.com>
3299
3300         * parse.y (source_end_java_method): Update call to
3301         cgraph_finalize_function.
3302
3303 2003-09-03  Jeff Sturm  <jsturm@one-point.com>
3304
3305         * decl.c (java_expand_body): New function.
3306         * expr.c (build_class_init): Set DECL_IGNORED_P.
3307         * java-tree.h (start_complete_expand_method,
3308         java_expand_body): Declare.
3309         * jcf-parse.c (cgraph.h): Include.
3310         (java_parse_file): Handle flag_unit_at_a_time.
3311         * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING,
3312         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
3313         (java_estimate_num_insns): Use walk_tree_without_duplicates.
3314         (java_start_inlining): New function.
3315         * parse.h (java_finish_classes): Declare.
3316         * parse.y: Include cgraph.h.
3317         (block): Don't special-case empty block production.
3318         (craft_constructor): Set DECL_INLINE.
3319         (source_end_java_method): Handle flag_unit_at_a_time.
3320         Replace inline code with call to java_expand_body.
3321         (start_complete_expand_method): Remove static modifier.
3322         (java_expand_method_bodies): Patch function tree for
3323         class initialization and/or synchronization as needed.
3324         Don't begin RTL expansion yet.
3325         (java_expand_classes): Check flag_unit_at_a_time before
3326         calling finish_class.
3327         (java_finish_classes): New function.
3328         (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type.
3329         (patch_assignment): Set DECL_CONTEXT on temporary variable.
3330         (emit_test_initialization): Set DECL_IGNORED_P.
3331
3332 2003-09-03  Roger Sayle  <roger@eyesopen.com>
3333
3334         * builtins.c (enum builtin_type): Delete unused enumeration.
3335         * Make-lang.in (java/builtins.o): Remove built-types.def dependency.
3336
3337 2003-08-28  Tom Tromey  <tromey@redhat.com>
3338
3339         * gcj.texi (Extensions): Document gcjlib URLs.
3340
3341 2003-08-20  Tom Tromey  <tromey@redhat.com>
3342
3343         * gcj.texi (Extensions): Added xref.
3344         (libgcj Runtime Properties): Document
3345         gnu.gcj.runtime.VMClassLoader.library_control.
3346
3347 2003-08-20  Andrew Haley  <aph@redhat.com>
3348
3349         * except.c (prepare_eh_table_type): Use new encoding for exception
3350         handlers when using -fno-assume-compiled.
3351
3352 2003-08-13  Tom Tromey  <tromey@redhat.com>
3353
3354         * gcj.texi (Invoking gij): Document -X and -?.
3355
3356 2003-08-13  Mohan Embar  <gnustuff@thisiscool.com>
3357
3358         * Make-lang.in: Added missing win32-host.o to JAVA_OBJS,
3359         GCJH_OBJS, JCFDUMP_OBJS
3360         * win32-host.c: Removed the unnecessary and broken dependency
3361         on jcf.h
3362
3363 2003-08-11  Tom Tromey  <tromey@redhat.com>
3364
3365         * parse.y (java_check_regular_methods): Typo fixes.  Call
3366         check_interface_throws_clauses.  Use
3367         check_concrete_throws_clauses.
3368         (check_interface_throws_clauses): New function.
3369         (check_concrete_throws_clauses): New function.
3370         (hack_is_accessible_p): New function.
3371         (find_most_specific_methods_list): Added FIXME.
3372         * typeck.c (lookup_do): Use `flags' argument to decide what to
3373         do.  Reimplemented.
3374         (lookup_argument_method_generic): New function.
3375         (lookup_argument_method2): Removed.
3376         * jcf.h (ACC_INVISIBLE): New define.
3377         * jcf-write.c (generate_classfile): Skip invisible methods.
3378         * class.c (add_miranda_methods): New function.
3379         (layout_class_methods): Use it.
3380         (get_access_flags_from_decl): Use ACC_INVISIBLE.
3381         * java-tree.h (METHOD_INVISIBLE): New define.
3382         (lang_decl_func) [invisible]: New field.
3383         (lookup_argument_method_generic): Declare.
3384         (SEARCH_INTERFACE): New define.
3385         (SEARCH_SUPER): Likewise.
3386         (SEARCH_ONLY_INTERFACE): Likewise.
3387         (SEARCH_VISIBLE): Likewise.
3388         (lookup_argument_method2): Removed declaration.
3389
3390 2003-08-05  Tom Tromey  <tromey@redhat.com>
3391
3392         Fix for PR java/11600:
3393         * parse.y (java_complete_lhs): See whether we're calling a method
3394         on an array.
3395         (check_thrown_exceptions): Added `is_array_call' argument;
3396         fixed `clone' checking; updated all callers.
3397
3398 2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>
3399
3400         * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h).
3401
3402 2003-08-03  Tom Tromey  <tromey@redhat.com>
3403
3404         * java-tree.h (METHOD_TRANSIENT): Removed.
3405         * decl.c (pushdecl): Removed some dead code.
3406         * class.c (get_access_flags_from_decl): Can't have transient
3407         method.
3408         (add_method_1): Can't have a transient method.
3409
3410 2003-07-28  Andreas Jaeger  <aj@suse.de>
3411
3412         * jvspec.c: Convert to ISO C90 prototypes.
3413
3414 2003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
3415
3416         * decl.c (force_poplevels): Fix warning call.
3417
3418 2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3419
3420         * expr.c (expand_java_field_op): Don't use xxx_with_decl
3421         (expand_java_field_op): Likewise.
3422         * class.c (layout_class_method): Likewise
3423         (emit_register_classes): Likewise.
3424         * decl.c (pushdecl): Likewise.
3425         (poplevel): Likewise.
3426         (force_poplevels): Likewise.
3427         (give_name_to_locals): Likewise.
3428         * check-init.c (check_for_initialization): Likewise.
3429
3430 2003-07-24  Jason Merrill  <jason@redhat.com>
3431
3432         * java-tree.h: Move boolean_type_node et al to the back end.
3433
3434 2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3435
3436         * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary
3437         casts.
3438
3439 2003-07-19  Neil Booth  <neil@daikokuya.co.uk>
3440
3441         * lang.opt: Don't show -MD_ and -MDD_.
3442
3443 2003-07-18  Neil Booth  <neil@daikokuya.co.uk>
3444
3445         * lang-options.h: Remove.
3446         * lang.opt: Add help text.
3447
3448 2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>
3449
3450         * expr.c: Remove the last argument to expand_assignment().
3451
3452 2003-07-09  Jan Hubicka  <jh@suse.cz>
3453
3454         * java-tree.h (DECL_NUM_STMTS): Rename to...
3455         (DECL_ESTIMATED_INSNS): ... this.
3456         * lang.c (java_estimate_num_insns, java_estimate_num_insns_1):
3457         New static functions.
3458         (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define.
3459         * parser.y (add_stmt_to_compound): Do not account statements.
3460
3461 2003-07-08  Mark Wielaard  <mark@klomp.org>
3462
3463         * gcj.texi: CNI now expands to Compiled Native Interface.
3464
3465 2003-07-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3466
3467         * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND.
3468
3469 2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>
3470
3471         * expr.c (expand_byte_code): Adjist emit_line_note call.
3472
3473 2003-07-06  Neil Booth  <neil@daikokuya.co.uk>
3474
3475         * lang.c (java_handle_option): Don't handle filenames.
3476
3477 2003-07-02  Zack Weinberg  <zack@codesourcery.com>
3478
3479         * jcf-path.c: Don't default-define PATH_SEPARATOR nor
3480         DIR_SEPARATOR.
3481         Use FILENAME_CMP.
3482         * jcf-write.c: Don't default-define DIR_SEPARATOR.
3483         * jcf.h: Delete COMPARE_FILENAMES definition.
3484
3485 2003-07-02  Neil Booth  <neil@daikokuya.co.uk>
3486
3487         * lang.c (java_init_options): Update prototype.
3488
3489 2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
3490
3491         * decl.c (poplevel): Adjust define_label call.
3492
3493 2003-06-27  Zack Weinberg  <zack@codesourcery.com>
3494
3495         * gjavah.c (flag_jni): Make non-static.
3496         * parse-scan.y (ctxp): Make non-static.
3497
3498         * class.c (build_method_symbols_entry)
3499         * expr.c (get_offset_table_index)
3500         * jcf-parse.c (jcf_parse):
3501         Mark the definition static, matching the forward declaration.
3502
3503 2003-06-26  Neil Booth  <neil@daikokuya.co.uk>
3504
3505         * lang.c (java_handle_option): Don't check for missing arguments.
3506
3507 2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>
3508
3509         * class.c (push_class): Use a location_t to save place.
3510         (emit_register_classes): Set input_location. Adjust
3511         expand_function_end call.
3512         * resource.c (write_resource_constructor): Likewise.
3513         * decl.c (end_java_method): Adjust expand_function_end call.
3514         * parse.y (source_end_java_method): Likewise.
3515
3516 2003-06-17  Robert Abeles  <rabeles@archaelogic.com>
3517
3518         * lang.c (java_handle_option): Likewise.
3519
3520 2003-06-16  Neil Booth  <neil@daikokuya.co.uk>
3521
3522         * lang.c (java_handle_option): Special-casing of optional
3523         joined arguments no longer needed.
3524         * lang.opt: Update switches that take optional argument.
3525
3526 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
3527
3528         * lang.opt: Declare Java.
3529         * lang.c (java_init_options): Update.
3530
3531 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
3532
3533         * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h.
3534
3535 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
3536
3537         * lang-specs.h: Rewrite -MD and -MMD to append an underscore.
3538         * lang.c (java_handle_option): -MD and -MMD have an underscore.
3539         * lang.opt: -MD and -MMD have an underscore.
3540
3541 2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>
3542
3543         * class.c (emit_register_classes): Adjust init_function_start
3544         call.
3545         * decl.c (complete_start_java_method): Likewise.
3546         * resource.c (write_resource_constructor): Likewise.
3547
3548 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
3549
3550         * Make-lang.in: Update to use options.c and options.h.
3551         * lang.c: Include options.h not j-options.h.
3552         (java_handle_option): Abort on unrecognized option.
3553         (java_init_options): Request Java switches.
3554
3555 2003-06-11  Neil Booth  <neil@daikokuya.co.uk>
3556
3557         * Make-lang.in: Handle mostlyclean.
3558
3559 2003-06-11  Tom Tromey  <tromey@redhat.com>
3560
3561         * lang.c (java_handle_option): Update dependency_tracking for
3562         OPT_MF case.
3563
3564         * lang.c (java_handle_option): OPT_fbootclasspath_ can take an
3565         empty argument.
3566
3567 2003-06-10  Andrew Haley  <aph@redhat.com>
3568
3569         * resource.c (write_resource_constructor): Use expand_expr to
3570         generate the address of the label attached to a resource.
3571         * Make-lang.in (java/resource.o): Add expr.h
3572
3573 2003-06-10  Andrew Haley  <aph@redhat.com>
3574
3575         * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
3576         (java_decl_ok_for_sibcall): New.
3577
3578 2003-06-09  Neil Booth  <neil@daikokuya.co.uk>
3579
3580         * Make-lang.in (JAVA_OBJS, java/lang.o): Update.
3581         (java/j-options.c, java/j-options.h): New.
3582         * java-tree.h (resource_name, compile_resource_file,
3583         compile_resource_data): Constify.
3584         * jcf-write.c (jcf_write_base_directory): Similarly.
3585         * jcf.h (jcf_write_base_directory): Similarly.
3586         * lang.c: Include j-options.h.
3587         (cl_options_count, cl_options, string_option, java_decode_option,
3588         lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION,
3589         process_option_with_no): Remove.
3590         (resource_name): Constify.
3591         (LANG_HOOKS_HANDLE_OPTION): Override.
3592         (java_handle_option): New.
3593         (java_init): Don't call jcf_path_init.
3594         (java_init_options): Call jcf_path_init.
3595         * lang.opt: New.
3596         * resource.c (compile_resource_data, compile_resource_file): Constify.
3597
3598 2003-06-09  Nathan Sidwell  <nathan@codesourcery.com>
3599
3600         * java-tree.h (DECL_FUNCTION_LAST_LINE): New.
3601         (struct lang_decl_func): Add last_line field.
3602         * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
3603         DECL_SOURCE_LINE_LAST): Remove.
3604         * parse.y (missing_return_error, finish_method_declaration,
3605         lookup_cl, start_artificial_method_body, source_end_java_method,
3606         start_complete_expand_method): Adjust.
3607
3608 2003-06-08  Tom Tromey  <tromey@redhat.com>
3609
3610         * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and
3611         fno-assume-compiled.
3612
3613 2003-06-08  Roger Sayle  <roger@eyesopen.com>
3614
3615         * builtins.c (define_builtin_type, builtin_types): Delete.
3616         (define_builtin): Rewritten to take just the built-in code,
3617         the function's name, type and fallback library function name.
3618         All built-ins used by Java are implicit and BUILT_IN_NORMAL.
3619         (initialize_builtins): Overhaul to define the GCC builtins
3620         used by gcj manually, providing the Java run-time's
3621         implementations as the fallback library function.
3622
3623 2003-06-08  Anthony Green  <green@redhat.com>
3624
3625         * parse.y (patch_cast): Fix conversions from floating-point to
3626         integral types.
3627
3628 2003-06-08  Neil Booth  <neil@daikokuya.co.uk>
3629
3630         * Make-lang.in: Update.
3631         * lang.c: Include opts.h. Define cl_options_count and cl_options.
3632
3633 2003-06-07  Neil Booth  <neil@daikokuya.co.uk>
3634
3635         * lang.c (java_init_options): Update.
3636
3637 2003-06-05  Jan Hubicka  <jh@suse.cz>
3638
3639         * Make-lang.in:  Add support for stageprofile and stagefeedback
3640
3641 2003-05-31  Roger Sayle  <roger@eyesopen.com>
3642
3643         * lang.c (java_init_options): Prescribe wrap-around two's
3644         complement arithmetic overflow by setting flag_wrapv.
3645
3646 2003-05-29  Roger Sayle  <roger@eyesopen.com>
3647
3648         * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete.
3649         (builtin_record): Add an additional builtin_code field to
3650         record which GCC built-in corresponds to the Java function.
3651         (java_builtins):  Add new entries for atan, atan2, exp, log,
3652         pow and tan.
3653         (max_builtin, min_builtin, abs_builtin): Perform constant
3654         folding on the resulting tree.
3655         (java_build_function_call_expr): Likewise, perform constant
3656         folding on the resulting tree.
3657         (initialize_builtins): The NULL creators are now allowed in
3658         the java_builtins table, which is now terminated by an entry
3659         with builtin_code == END_BUILTINS.
3660         (check_for_builtin): Likewise.  If the matching creator is
3661         NULL, construct the call using java_build_function_call_expr
3662         directly with the decl for the corresponding builtin_code.
3663
3664 2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>
3665
3666         * win32-host.c: Normalize copyright boilerplate.
3667
3668 2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3669
3670         * parse.y (print_int_node): Use string concatentation on
3671         HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
3672         function calls into one.
3673
3674 2003-05-13  Zack Weinberg  <zack@codesourcery.com>
3675
3676         * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to
3677         fatal_io_error with calls to fatal_error; add ": %m" to the end of
3678         all the affected error messages.
3679
3680 2003-05-13  Richard Henderson  <rth@redhat.com>
3681
3682         * class.c (layout_class_method): Set DECL_EXTERNAL.
3683         * decl.c (java_mark_decl_local, java_mark_class_local): New.
3684         * java-tree.h (java_mark_class_local): Declare.
3685         * jcf-parse.c (parse_class_file): Use it.
3686         * parse.y (java_expand_classes): Likewise.
3687
3688 2003-05-04  Nathan Sidwell  <nathan@codesourcery.com>
3689
3690         * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h.
3691         * lex.h: #include input.h.
3692         * jv-scan.c (input_filename): Remove.
3693
3694 2003-05-02  Tom Tromey  <tromey@redhat.com>
3695
3696         PR java/10491:
3697         * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
3698         (handle_inner_classes): New function.
3699
3700 2003-05-01  Tom Tromey  <tromey@redhat.com>
3701
3702         PR java/10459:
3703         * parse.y (finish_for_loop): Do nothing if update expression is a
3704         EXPR_WFL_NODE wrapping nothing.
3705         (java_complete_lhs) <COMPOUND_EXPR>: Likewise.
3706
3707 2003-05-02  Nathan Sidwell  <nathan@codesourcery.com>
3708
3709         * lex.h (input_lineno): Remove declaration.
3710         * parse-scan.y: #include input.h.
3711         (input_filename): Remove declaration.
3712         (input_location): Add definition.
3713         (input_line): Remove definition.
3714
3715 2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>
3716
3717         * lex.h (lineno): Rename to ...
3718         (input_line): ... here
3719         * parse-scan.y (lineno): Rename to ...
3720         (input_line): ... here.
3721         (reset_report): Rename lineno to input_line.
3722         * check-init.c (check_init): Likewise.
3723         * class.c (push_class): Likewise.
3724         * decl.c (complete_start_java_method, end_java_method): Likewise.
3725         * expr.c (expand_byte_code): Likewise.
3726         * jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
3727         * jcf-write.c (generate_bytecode_insns): Likewise.
3728         * lex.c (java_init_lex, java_allocate_new_line,
3729         do_java_lex): Likewise.
3730         * parse.h (YYNOT_TWICE): Likewise.
3731         * parse.y (empty_statement, expression_statement,
3732         java_pop_parser_context, java_parser_context_save_global,
3733         yyerror, register_fields, method_header, safe_layout_class,
3734         find_in_imports_on_demand, create_artificial_method,
3735         source_end_java_method, start_complete_expand_method,
3736         build_thisn_assign, java_complete_lhs,
3737         maybe_absorb_scoping_block): Likewise.
3738
3739 2003-04-20  Mohan Embar  <gnustuff@thisiscool.com>
3740
3741         * jcf-io.c (find_class): use DIR_SEPARATOR instead of
3742         '/' when computing java source filename
3743
3744 2003-04-13  Tom Tromey  <tromey@redhat.com>
3745
3746         * gjavah.c (print_c_decl): Indentation fix.
3747
3748 2003-04-12  Zack Weinberg  <zack@codesourcery.com>
3749
3750         * class.c (make_field_value, make_method_value, get_dispatch_table)
3751         (make_class_data, emit_offset_symbol_table)
3752         * constants.c (build_constants_constructor)
3753         * java-tree.h (START_RECORD_CONSTRUCTOR)
3754         * parse.y (maybe_build_array_element_wfl):
3755         Use build_constructor.
3756
3757 2003-04-10  Eric Blake  <ebb9@email.byu.edu>
3758
3759         PR java/10253:
3760         * parse.y (string_convert_int_cst): Always use at least one digit
3761         in string conversion. Remove ASCII dependence.
3762         (merge_string_cste): Fix merging of 3-byte UTF-8 characters.
3763
3764 2003-03-16  Mohan Embar  <gnustuff@thisiscool.com>
3765
3766         * Make-lang.in: added win32-host.c
3767         * jcf.h: defined macro JCF_OPEN_EXACT_CASE which
3768         resolves to open() on non-Win32 platforms and
3769         Win32-specific jcf_open_exact_case() on Win32
3770         * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE
3771         when trying .java and .class files
3772         * win32-host.c: added to repository. Defines
3773         Win32-specific jcf_open_exact_case()
3774
3775 2003-04-10  Andrew Haley  <aph@redhat.com>
3776
3777         * jcf-write.c (struct jcf_partial): num_jsrs: new field.
3778         (maybe_free_localvar): Renamed from localvar_free.
3779         Add new arg, really.
3780         (generate_bytecode_insns): Set new variable, jsrs.
3781         Only free local vars if no jsr insns have been emittted.
3782         Call maybe_free_localvar, not localvar_free.
3783
3784 2003-03-30  Joseph S. Myers  <jsm@polyomino.org.uk>
3785
3786         * gcj.texi: Remove @ at start of file.
3787
3788 2003-03-25  Tom Tromey  <tromey@redhat.com>
3789
3790         * parse.y (create_interface): Call CHECK_DEPRECATED.
3791
3792 2003-03-23  Zack Weinberg  <zack@codesourcery.com>
3793
3794         * Make-lang.in: Link jcf-dump against $(LDEXP_LIB).
3795
3796 2003-03-21  Zack Weinberg  <zack@codesourcery.com>
3797
3798         * javaop.h (jfloat, jdouble): Make them structures mirroring
3799         the bit fields of IEEE float and double respectively.
3800         (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS,
3801         JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New.
3802         (union Word, union DWord): Delete.
3803         (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match.
3804
3805         * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK,
3806         D_NAN_MASK): Delete.
3807         (jni_print_float, jni_print_double): New.  Generate
3808         hexadecimal floating constants.
3809         (print_field_info): Use jni_print_float/double.
3810
3811         * jcf-dump.c: Include math.h.  Use ldexp/frexp to assemble
3812         finite floating point numbers for output; special case
3813         non-finite floats.
3814
3815 2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>
3816
3817         * lang.c (java_dump_tree): Change return type from 'int' to 'bool'.
3818         Replace 0 and 1 with true and false in return statements.
3819
3820 2003-03-19  Tom Tromey  <tromey@redhat.com>
3821
3822         * lex.c (do_java_lex): Renamed from java_lex.
3823         (java_lex): New function.
3824         Include timevar.h.
3825
3826 2003-03-13  Tom Tromey  <tromey@redhat.com>
3827
3828         * parse.y (resolve_inner_class): Error if qualifier is a primitive
3829         type.
3830
3831 2003-03-04  Andrew Haley  <aph@redhat.com>
3832
3833         * gjavah.c (is_first_data_member): New global variable.
3834         (print_c_decl): If it's the first data member, align it as the
3835         superclass.
3836         (process_file): Set is_first_data_member.
3837
3838 2003-03-11  Tom Tromey  <tromey@redhat.com>
3839
3840         * parse.y (resolve_field_access): Initialize class if field is
3841         found in another static field.
3842         * expr.c (build_class_init): Don't optimize out initialization of
3843         implemented interface.
3844
3845 2003-03-11  Andrew Haley  <aph@redhat.com>
3846
3847         * jcf-io.c (caching_stat): Initialize origsep to remove compiler
3848         warning.
3849
3850 2003-03-10  Ranjit Mathew  <rmathew@hotmail.com>
3851
3852         * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR
3853         and DIR_SEPARATOR_2 for a target.
3854         Correct minor typos.
3855
3856         * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR
3857         and DIR_SEPARATOR_2 for a target into account.
3858
3859 2003-03-08  Neil Booth  <neil@daikokuya.co.uk>
3860
3861         * lang.c (java_init): Update prototype, move code to java_post_options.
3862         (java_post_options): Similarly.
3863
3864 2003-03-05  Ranjit Mathew  <rmathew@hotmail.com>
3865
3866         * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to
3867         compare file name components depending on the case-sensitivity
3868         or otherwise of the host file system.
3869
3870         * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of
3871         "strcmp" to compare file name components.
3872         Use IS_DIR_SEPARATOR instead of comparing directly against
3873         DIR_SEPARATOR.
3874         (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of
3875         comparing directly against DIR_SEPARATOR.
3876
3877 2003-03-04  Tom Tromey  <tromey@redhat.com>
3878
3879         * Make-lang.in (java.tags): New target.
3880
3881 2003-03-01  Roger Sayle  <roger@eyesopen.com>
3882
3883         * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3.
3884         (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3.
3885
3886 2003-03-01  Tom Tromey  <tromey@redhat.com>
3887
3888         * parse.y (jdep_resolve_class): Only check deprecation if we found
3889         a decl.
3890
3891 2003-02-28  Tom Tromey  <tromey@redhat.com>
3892
3893         PR java/9695:
3894         * class.c (maybe_layout_super_class): Always pass a WFL to
3895         do_resolve_class.
3896         * parse.y (do_resolve_class): Updated comment to explain
3897         parameters.
3898
3899 2003-02-26  Tom Tromey  <tromey@redhat.com>
3900
3901         * jcf-write.c (generate_classfile): Check whether class is
3902         deprecated before writing attribute count.
3903
3904 2003-02-25  Roger Sayle  <roger@eyesopen.com>
3905
3906         * java/decl.c (java_init_decl_processing): Get soft_fmod_node from
3907         built_in_decls[BUILT_IN_FMOD] rather than define it ourselves.
3908
3909 2003-02-23  Tom Tromey  <tromey@redhat.com>
3910
3911         * lang-options.h: Added -Wdeprecated.
3912         * gcj.texi (Warnings): Document -Wdeprecated.
3913         * java-tree.h (flag_deprecated): Declare.
3914         * lang.c (lang_W_options): Added deprecated.
3915         (flag_deprecated): New global.
3916         * chartables.h: Rebuilt.
3917         * gen-table.pl (process_one): Look at whitespace.
3918         (print_tables): Define LETTER_SPACE, LETTER_MASK.
3919         * parse.h (CLEAR_DEPRECATED): New macro.
3920         (CHECK_DEPRECATED_NO_RESET): New macro.
3921         * jcf-parse.c (handle_deprecated): New function.
3922         (HANDLE_DEPRECATED_ATTRIBUTE): New define.
3923         * jcf-reader.c (get_attribute): Handle Deprecated attribute.
3924         * parse.y (resolve_type_during_patch): Check deprecation.
3925         (jdep_resolve_class): Likewise.
3926         (process_imports): Likewise.
3927         (resolve_expression_name): Likewise.
3928         (check_deprecation): Strip arrays from decl.  Check
3929         flag_deprecated.
3930         (patch_method_invocation): Also check the particular constructor
3931         for deprecation.
3932         (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop.
3933         * jcf-write.c (append_deprecated_attribute): New function.
3934         (generate_classfile): Generate deprecated attribute when
3935         appropriate.
3936         * lex.c (java_parse_doc_section): Return type now void.  Rewrote.
3937         (java_lex) [case '*']: Simplify logic.
3938         (java_start_char_p): Use LETTER_MASK.
3939         (java_part_char_p): Likewise.
3940         (java_space_char_p): New function.
3941
3942 2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
3943
3944         Change base class access representation.
3945         * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
3946         (add_interface_do): Likewise.
3947
3948 2003-02-12  Ranjit Mathew  <rmathew@hotmail.com>
3949
3950         * decl.c (java_init_decl_processing): Change
3951         soft_lookupjnimethod_node to reflect the change in
3952         signature of _Jv_LookupJNIMethod in libjava/jni.cc
3953         * expr.c (build_jni_stub): Calculate and pass the size
3954         on the stack of the arguments to a JNI function. Use
3955         new target macro MODIFY_JNI_METHOD_CALL to allow a
3956         target to modify the call to a JNI method.
3957
3958 2003-02-08  Roger Sayle  <roger@eyesopen.com>
3959
3960         * jcf-io.c (java_or_class_file): Use libiberty's lbasename
3961         instead of basename to avoid compiler warnings on Tru64.
3962
3963 2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>
3964
3965         * gcj.texi: Update to GFDL 1.2.
3966
3967 2003-01-31  Andrew Haley  <aph@redhat.com>
3968
3969         * parse.y (java_expand_classes): Scan the whole class list looking
3970         for access methods that haven't yet been expanded.
3971
3972 2003-01-31 Adrian Bunk <bunk@fs.tum.de>
3973
3974         Fix for java/4269:
3975
3976         * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO
3977         to fix bootstrap on sparc-unknown-netbsdelf1.5.
3978         * jcf-parse.c: Likewise.
3979
3980 2003-01-31  Mark Wielaard  <mark@klomp.org>
3981
3982         * gjavah.c (throwable_p): Allocate 1 more byte for string.
3983
3984 2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
3985
3986         * class.c (make_class): Use BINFO_ELTS.
3987         (set_super_info): Likewse.
3988         (add_interface_do): Likewise.
3989
3990 2003-01-30  Tom Tromey  <tromey@redhat.com>
3991
3992         * jcf-parse.c (read_class): Update identifier's class value if it
3993         changed during parsing.
3994
3995 2003-01-30  Loren James Rittle  <ljrittle@acm.org>
3996
3997         * Make-lang.in (po-generated): Find the targets in $(parsedir).
3998         Propagate change to all other rules as required.
3999         (java/parse-scan.o): Add explicit dependency on
4000         $(parsedir)/java/parse-scan.c .
4001
4002 2003-01-29  Tom Tromey  <tromey@redhat.com>
4003
4004         * parse.y (patch_assignment): Only transform the rhs of an
4005         assignment when compiling to native.
4006
4007 2003-01-28  Tom Tromey  <tromey@redhat.com>
4008
4009         * jcf-write.c (generate_bytecode_conditional): Typo fixes.
4010
4011 2003-01-28  Tom Tromey  <tromey@redhat.com>
4012
4013         * lex.c (java_lex): Don't include UEOF as part of token.
4014         (java_read_unicode): Error if \u sequence prematurely terminated.
4015
4016 2003-01-27  Tom Tromey  <tromey@redhat.com>
4017
4018         * parse.y (java_check_regular_methods): Check for construct after
4019         checking types in throws clause.
4020
4021 2003-01-24  Tom Tromey  <tromey@redhat.com>
4022
4023         * class.c (build_static_field_ref): Only a String or numeric field
4024         can fold to a constant.
4025
4026 2003-01-23  Tom Tromey  <tromey@redhat.com>
4027
4028         * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of
4029         file name in resource buffer.
4030
4031 2003-01-23  Tom Tromey  <tromey@redhat.com>
4032
4033         * expr.c (build_known_method_ref): Use method's context to find
4034         method table index.
4035
4036 2003-01-23  Tom Tromey  <tromey@redhat.com>
4037
4038         * constants.c (set_constant_entry): Allocated cleared memory.
4039
4040 2003-01-22  Tom Tromey  <tromey@redhat.com>
4041
4042         * java-tree.h: Don't use PARAMS.
4043         * resource.c: Add prototypes for all functions.
4044         (write_resource_constructor): Use `const char *' to avoid
4045         warning.
4046
4047 2003-01-22 Nathanael Nerode  <neroden@gcc.gnu.org>
4048
4049         * jcf-parse.c (process_zip_dir): Remove unused variable.
4050
4051 2003-01-22  Tom Tromey  <tromey@redhat.com>
4052
4053         * expr.c (build_invokeinterface): Abort if method's context is not
4054         an interface.
4055
4056 2003-01-22  Tom Tromey  <tromey@redhat.com>
4057
4058         * gcj.texi (Input and output files): Mention non-class entries.
4059         * decl.c (java_init_decl_processing): Call
4060         init_resource_processing.
4061         * java-tree.h (compile_resource_data, write_resource_constructor,
4062         compile_resource_file, init_resource_processing): Declare.
4063         * config-lang.in (gtfiles): Added resource.c.
4064         * Make-lang.in (gt-java-resource.h): New target.
4065         (JAVA_OBJS): Added resource.o.
4066         (java/resource.o): New target.
4067         * resource.c: New file.
4068         * class.c (compile_resource_file): Moved to resource.c.
4069         (registerResource_libfunc): Likewise.
4070         (utf8_decl_list): Mark with GTY; now static.
4071         * jcf-parse.c (classify_zip_file): New function.
4072         (parse_zip_file_entries): Use it; compile .properties files.
4073         (process_zip_dir): Use classify_zip_file and compute_class_name.
4074         Don't write class name into zip directory.
4075         (java_parse_file): Call write_resource_constructor.
4076         (compute_class_name): New function.
4077         * jcf-io.c (read_zip_member): Reindented.
4078
4079 2003-01-21  Tom Tromey  <tromey@redhat.com>
4080
4081         * class.c (supers_all_compiled): New function.
4082         (make_class_data): Use it.
4083
4084 2003-01-21  Tom Tromey  <tromey@redhat.com>
4085
4086         * parse.y (method_header): Native method can't be strictfp.
4087         No method can be transient or volatile.
4088
4089 2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4090
4091         Make-lang.in (jvspec.o-warn): Add -Wno-error.
4092
4093 2003-01-18  Kazu Hirata  <kazu@cs.umass.edu>
4094
4095         * check-init.c: Fix comment typos.
4096         * class.c: Likewise.
4097         * constants.c: Likewise.
4098         * decl.c: Likewise.
4099         * except.c: Likewise.
4100         * expr.c: Likewise.
4101         * java-except.h: Likewise.
4102         * java-tree.h: Likewise.
4103         * javaop.h: Likewise.
4104         * jcf-dump.c: Likewise.
4105         * jcf-io.c: Likewise.
4106         * jcf-parse.c: Likewise.
4107         * jcf-write.c: Likewise.
4108         * lang.c: Likewise.
4109         * mangle.c: Likewise.
4110         * typeck.c: Likewise.
4111         * verify.c: Likewise.
4112
4113 2003-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4114
4115         * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H).
4116         * jcf-write.c: Include "tm_p.h".
4117
4118 2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4119
4120         * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*.
4121
4122 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4123
4124         * builtins.c (java_build_function_call_expr): Renamed from
4125         build_function_call_expr.  All callers changed.
4126
4127         * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H).
4128         * jcf-parse.c: Include tm_p.h.
4129
4130         * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
4131         warning.
4132
4133 2003-01-14  Tom Tromey  <tromey@redhat.com>
4134
4135         * class.c (make_class_data): Check that super is compiled before
4136         building class reference to it.
4137
4138 2003-01-14  Andrew Haley  <aph@redhat.com>
4139
4140         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
4141         varargs function -- correct.
4142
4143 2003-01-14  Andrew Haley  <aph@redhat.com>
4144
4145         * decl.c (java_init_decl_processing): Temporarily back out previous patch.
4146
4147 2003-01-14  Andrew Haley  <aph@redhat.com>
4148
4149         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
4150         varargs function -- correct.
4151
4152         * parse.y (patch_assignment): Copy the rhs of an assignment into a
4153         temporary if the RHS is a reference.
4154
4155 2003-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4156
4157         * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf.
4158         * keyword.h: Regenerated.
4159
4160         * All Files: Convert to ISO C style function definitions.
4161
4162 2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
4163
4164         * parse.y (check_pkg_class_access): ANSIfy definition.
4165
4166 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4167
4168         * decl.c, parse-scan.y, parse.y: Don't cast return value of
4169         xmalloc et al.
4170
4171         * class.c, gjavah.c, parse.y, verify.c: Don't use PTR.
4172
4173 2003-01-09  Geoffrey Keating  <geoffk@apple.com>
4174
4175         Merge from pch-branch:
4176
4177         2002-12-02  Geoffrey Keating  <geoffk@apple.com>
4178
4179         * Make-lang.in (java/gjavah.o): Update dependencies.
4180         * gjavah.c: Include ggc.h.
4181
4182         2002-08-16  Geoffrey Keating  <geoffk@redhat.com>
4183
4184         * Make-lang.in (GCJH_OBJS): Add ggc-none.o.
4185         (JCFDUMP_OBJS): Add ggc-none.o.
4186         (java/jcf-dump.o): Depend on GGC_H.
4187         * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate
4188         CPool substructures.
4189         * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs.
4190         * jcf-dump.c: Include ggc.h.
4191
4192         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
4193
4194         * jcf.h (union cpool_entry): New.
4195         (struct CPool): Use gengtype to mark.  Change field 'data' to be
4196         an array of unions.
4197         (struct JCF): Use gengtype to mark.
4198         (CPOOL_UINT): Update for new cpool_entry type.
4199         (CPOOL_USHORT1): Likewise.
4200         (CPOOL_USHORT2): Likewise.
4201         (CPOOL_FINISH): Use GC to free cpool subfields.
4202         * parse.h (struct parser_ctxt): Mark field current_jcf.
4203         * lex.c (java_init_lex): Use GC to allocate struct JCF.
4204         * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type.
4205         (main_jcf): Use gengtype to mark.
4206         (ggc_mark_jcf): Delete.
4207         (get_constant): Update for new cpool_entry type.
4208         (give_name_to_class): Likewise.
4209         (get_class_constant): Likewise.
4210         (init_outgoing_cpool): Use GGC to allocate struct CPool.
4211         (java_parse_file): Use GGC to allocate struct JCF.
4212         (init_jcf_parse): Don't call ggc_add_root.
4213         * jcf-reader.c (jcf_parse_constant_pool): Update for new
4214         cpool_entry type.
4215         * java-tree.h (current_jcf): Use gengtype to mark.
4216         (CPOOL_UTF): Update for new cpool_entry type.
4217         (outgoing_cpool): Use gengtype to mark.
4218         (struct lang_type): GC struct JCF and struct CPool.
4219         * config-lang.in (gtfiles): Add jcf.h.
4220         * constants.c (find_tree_constant): New.
4221         (set_constant_entry): Allocate cpool subfields using GGC.  Update
4222         for new cpool_entry type.
4223         (find_constant1): Update for new cpool_entry type.
4224         (find_constant2): Likewise.
4225         (find_utf8_constant): Use find_tree_constant.
4226         (find_class_or_string_constant): Remove unnecessary cast to jword.
4227         Update for new cpool_entry type.
4228         (count_constant_pool_bytes): Update for new cpool_entry type.
4229         (write_constant_pool): Likewise.
4230         (alloc_name_constant): Use find_tree_constant.
4231         (build_constants_constructor): Update for new cpool_entry type.
4232
4233         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
4234
4235         * parse.y (mark_parser_ctxt): Delete.
4236         (goal): Don't use ggc_add_root.
4237         (create_new_parser_context): Use GC to allocate struct parser_ctxt.
4238         (java_pop_parser_context): Let GC free parser_ctxt.
4239         (java_parser_context_resume): Likewise.
4240         * parse.h (struct parser_ctxt): Use gengtype to mark.
4241         (ctxp): Likewise.
4242         (ctxp_for_generation): Likewise.
4243         * lex.h (struct java_lc_s): Mark for gengtype.
4244         (java_lexer): Rearrange for gengtype.
4245         * config-lang.in (gtfiles): Add lex.h, parse.h.
4246
4247 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4248
4249         * All Files: Remove PARAMS macro.
4250
4251         * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c,
4252         jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or
4253         `__STDC__' macros.
4254
4255         * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and
4256         VA_CLOSE.
4257
4258 2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
4259
4260         * Make-lang.in (java.install-common, java.uninstall,
4261         java.install-info, java.install-man): Prepend $(DESTDIR)
4262         to destination paths in all (un)installation commands.
4263         (java.install-common): Rewrite $(LN) command to support
4264         DESTDIR with "ln" as well as with "ln -s".
4265
4266 2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
4267
4268         * java-tree.h: Protect against multiple inclusion.
4269
4270 2003-01-07  Tom Tromey  <tromey@redhat.com>
4271
4272         * class.c (add_assume_compiled): Don't adjust parent if we're
4273         already at the root of tree.
4274
4275 2003-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4276
4277         * lang.c (dump_compound_expr): Prototype.
4278
4279 2003-01-03  Tom Tromey  <tromey@redhat.com>
4280
4281         Fix for PR java/8712:
4282         * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR,
4283         when simply checking against `null'.
4284
4285 2003-01-03  Tom Tromey  <tromey@redhat.com>
4286
4287         * gcj.texi (Standard Properties): Document http.proxyHost and
4288         http.proxyPort.
4289
4290         * gcj.texi (GNU Classpath Properties): Document new properties.
4291
4292 2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
4293
4294         * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf,
4295         java/lang-options.h, java/mangle.c, java/mangle_name.c,
4296         java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years.
4297
4298 2003-01-01  Steven Bosscher  <s.bosscher@student.tudelft.nl>
4299
4300         * Make-lang.in, boehm.c, buffer.c,
4301           buffer.h, builtins.c, class.c,
4302           config-lang.in, constants.c,
4303           convert.h, decl.c, except.c,
4304           expr.c, java-except.h,
4305           java-tree.h, javaop.def,
4306           jcf-parse.c, jcf-write.c,
4307           jv-scan.c, jvgenmain.c,
4308           jvspec.c, keyword.gperf,
4309           keyword.h, lang-options.h,
4310           lang-specs.h, lang.c, lex.c,
4311           lex.h, mangle.c, mangle_name.c,
4312           parse-scan.y, parse.h, parse.y,
4313           typeck.c, verify.c, xref.c,
4314           xref.h: Replace "GNU CC" with
4315           "GCC" in the copyright header.
4316
4317         * check-init.c, gjavah.c, javaop.h,
4318           jcf-depend.c, jcf-dump.c, jcf-io.c,
4319           jcf-path.c, jcf-reader.c, jcf.h,
4320           zextract.c, zipfile.h: These files are
4321           "part of GCC". Also say "GCC" not "GNU CC".
4322
4323 2002-12-30  DJ Delorie  <dj@redhat.com>
4324
4325         * Make-lang.in: Protect against texi2pod/pod2man failing.
4326
4327 2002-12-28  Joseph S. Myers  <jsm@polyomino.org.uk>
4328
4329         * gcj.texi: Use @copying.
4330
4331 2002-12-27  Mark Mitchell  <mark@codesourcery.com>
4332
4333         * gjavah.c (print_name_for_stub_or_jni): Adjust call to
4334         print_cxx_classname.
4335         (print_cxx_classname): Add add_scope parameter.
4336         (print_class_decls): Do not emit a semicolon after the extern
4337         "Java" block.
4338         (process_file): Adjust calls to print_cxx_classname.
4339
4340 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
4341
4342         * gcj.texi: Include Cover Texts in man page.
4343
4344 2002-12-23  Jeff Sturm  <jsturm@one-point.com>
4345
4346         * class.c (build_static_field_ref): Check FIELD_FINAL.
4347
4348         * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF
4349         instead of current_constant_pool_data_ref.
4350         * java-tree.h (current_constant_pool_data_ref): Undefine.
4351         (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove.
4352         * jcf-parse.c (init_outgoing_cpool): Don't initialize
4353         current_constant_pool_data_ref.
4354
4355         * except.c (prepare_eh_table_type ): Use DECL_NAME of class type,
4356         not build_internal_class_name.
4357
4358         * parse.y (patch_incomplete_class_ref): Always emit `class$' method.
4359         Use it when class ref isn't certain to be compiled.
4360
4361 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
4362
4363         * gcj.texi: Include gcc-common.texi.
4364         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on
4365         $(srcdir)/doc/include/gcc-common.texi.
4366
4367 2002-12-22  Anthony Green  <green@redhat.com>
4368
4369         * gcj.texi (Limitations): Add note about org.xml.sax and
4370         org.w3c.dom.
4371
4372 2002-12-20  Tom Tromey  <tromey@redhat.com>
4373
4374         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case
4375         where minimum case value is Integer.MIN_VALUE.
4376         Fixes PR java/8955.
4377
4378 2002-12-18  Andrew Haley  <aph@redhat.com>
4379
4380         * parse.y (patch_invoke): Force evaluation order when `check' is
4381         set.  For PR libgcj/8945.
4382
4383 2002-12-16  Mark Mitchell  <mark@codesourcery.com>
4384
4385         * gcj.texi: Change version number to 3.4.
4386
4387 2002-12-05  Ranjit Mathew <rmathew@hotmail.com>
4388         Andrew Haley <aph@redhat.com>
4389
4390         * parse.y (source_end_java_method): Remove custom encoding of line
4391         numbers for a function decl before passing it to the back end.
4392
4393 2002-12-03  Andrew Haley  <aph@redhat.com>
4394
4395         * class.c (make_class_data): New field, "chain".
4396         * decl.c (java_init_decl_processing): Likewise.
4397
4398 2002-12-02  Tom Tromey  <tromey@redhat.com>
4399
4400         For PR java/8740:
4401         * parse.y (do_resolve_class): Handle qualified name via
4402         recursion.
4403
4404 2002-11-30  Zack Weinberg  <zack@codesourcery.com>
4405
4406         * boehm.c, buffer.c, builtins.c, check-init.c, class.c,
4407         constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c,
4408         jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c,
4409         jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c,
4410         parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c:
4411         Include coretypes.h and tm.h.
4412         * Make-lang.in: Update dependencies.
4413
4414 2002-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4415
4416         * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant.
4417
4418 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
4419
4420         * jcf-reader.c: Don't expand JCF_readu4 inside the
4421         expansion of JCF_SKIP.
4422
4423 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
4424
4425         * jcf-reader.c: Don't expand JCF_readu4 inside the
4426         expansion of JCF_SKIP.
4427
4428 2002-11-22  Tom Tromey  <tromey@redhat.com>
4429
4430         * parse.y (patch_binop): Cast right hand side of shift expression
4431         to `int'.  Fixes PR java/8676.
4432
4433 2002-11-22  Ranjit Mathew <rmathew@hotmail.com>
4434             Andrew Haley <aph@redhat.com>
4435
4436         * gcc/java/jcf-write.c (write_classfile): Remove target
4437         class file, if it exists, before renaming the temporary
4438         class file to it.
4439
4440 2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>
4441
4442         * jvspec.c (lang_specific_spec_functions): New.
4443
4444 2002-11-18  Tom Tromey  <tromey@redhat.com>
4445
4446         Fix for PR java/7912:
4447         * expr.c (can_widen_reference_to): Allow cast of array to
4448         Cloneable or Serializable.
4449         * java-tree.h (java_lang_cloneable_identifier_node): Declare.
4450         (java_io_serializable_identifier_node): Likewise.
4451         * parse.y (java_lang_cloneable, java_io_serializable): Removed.
4452         (valid_ref_assignconv_cast_p): Use new identifier nodes.
4453         * lex.c (java_init_lex): Don't initialize java_lang_cloneable and
4454         java_io_serializable.
4455         * decl.c (java_init_decl_processing): Initialize
4456         java_lang_cloneable_identifier_node and
4457         java_io_serializable_identifier_node.
4458         (java_lang_cloneable_identifier_node): New global.
4459         (java_io_serializable_identifier_node): Likewise.
4460
4461 2002-11-14  Jens-Michael Hoffmann  <jensmh@gmx.de>
4462
4463         * buffer.c: Remove unnecessary casts.
4464         * check-init.c: Likewise.
4465         * class.c: Likewise.
4466         * constants.c: Likewise.
4467         * decl.c: Likewise.
4468         * except.c: Likewise.
4469         * gjavah.c: Likewise.
4470         * jcf-io.c: Likewise.
4471         * jcf-parse.c: Likewise.
4472         * jcf-path.c: Likewise.
4473         * jvspec.c: Likewise.
4474         * lang.c: Likewise.
4475         * lex.c: Likewise.
4476         * verify.c: Likewise.
4477
4478 2002-11-06  Tom Tromey  <tromey@redhat.com>
4479
4480         * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in
4481         a JNI header.
4482
4483 2002-11-05  Tom Tromey  <tromey@redhat.com>
4484
4485         Fix for PR java/6388.
4486         * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while.
4487         * java-tree.h (enum java_tree_index): New values
4488         JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE.
4489         (decimal_int_max, decimal_long_max): New defines.
4490         * lex.c (yylex): Rewrote range checking.  Sign extend literals.
4491         (error_if_numeric_overflow): Rewrote range checking.
4492         * decl.c (java_init_decl_processing): Initialize decimal_int_max,
4493         decimal_long_max.
4494
4495 2002-11-02  Tom Tromey  <tromey@redhat.com>
4496
4497         * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE.
4498
4499         * class.c (make_method_value): Put class name, not signature, into
4500         `throws' field.  For PR java/8415.
4501
4502 2002-10-24  Tom Tromey  <tromey@redhat.com>
4503
4504         * gcj.texi (Invoking gij): Document --showversion.
4505         (Standard Properties): java.library.path now set.
4506
4507 2002-10-23  Tom Tromey  <tromey@redhat.com>
4508
4509         * gjavah.c (decode_signature_piece): In JNI mode, print
4510         `jobjectArray' when array depth is nonzero.
4511         Fixes PR java/8296.
4512
4513 2002-10-15  Andrew Haley  <aph@redhat.com>
4514
4515         * parse.y (patch_invoke): Call force_evaluation_order on a static
4516         arg list.
4517         (resolve_qualified_expression_name): Call force_evaluation_order
4518         on a arg list that is part of a Qualified Expression Name.
4519
4520         * lang.c (dump_compound_expr): New.
4521         (java_dump_tree): New.
4522
4523 2002-10-20  Ranjit Mathew <rmathew@hotmail.com>
4524
4525         * gcj.texi: Added item describing the GCJ runtime property
4526         "gnu.gcj.progname".
4527
4528 2002-10-15  Richard Henderson  <rth@redhat.com>
4529
4530         * jcf-parse.c (get_constant): Fix type warning.
4531
4532 2002-10-15  Andrew Haley  <aph@redhat.com>
4533
4534         * java-tree.h (java_inlining_merge_static_initializers): Declare.
4535         (java_inlining_map_static_initializers): Declare.
4536
4537 2002-10-14  Andrew Haley  <aph@redhat.com>
4538
4539         * tree-inline.c (remap_block): All local class initialization
4540         flags go in the outermost scope.
4541         (expand_call_inline): Call java_inlining_map_static_initializers.
4542         (expand_call_inline): Call java_inlining_merge_static_initializers.
4543         * java/lang.c (merge_init_test_initialization): New.
4544         (java_inlining_merge_static_initializers): New.
4545         (inline_init_test_initialization): New.
4546         (java_inlining_map_static_initializers): New.
4547
4548 2002-10-11  Mark Wielaard  <mark@klomp.org>
4549
4550         * gcj.texi (Compatibility): Add Limitations and Extensions section.
4551
4552 2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4553
4554         * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.
4555
4556 2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4557
4558         * parse.y (merge_string_cste): Add parentheses around & within |.
4559
4560 2002-10-08  Tom Tromey  <tromey@redhat.com>
4561
4562         * parse.y (variable_declarator_id): Simplify error path for
4563         array declarator error.  For PR java/8003.
4564
4565 2002-10-08  Zack Weinberg  <zack@codesourcery.com>
4566
4567         * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with
4568         bug_report_url.
4569
4570 2002-10-08  Andrew Haley  <aph@redhat.com>
4571
4572         * parse.y (attach_init_test_initialization_flags): Check for
4573         error_mark_node.
4574
4575 2002-10-07  Anthony Green  <green@redhat.com>
4576
4577         * parse.y (merge_string_cste): Fix bug in string concatenation.
4578
4579 2002-10-03  Michael Koch  <konqueror@gmx.de>
4580
4581         * gcj.texi (Standard properties):
4582         Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit.
4583
4584 2002-10-02  Roger Sayle  <roger@eyesopen.com>
4585
4586         PR optimization/6627
4587         * lang.c (java_init): If storing the vbit in function
4588         pointers, ensure that force_align_functions_log is atleast
4589         one to aid compatability with g++ vtables.
4590
4591 2002-10-01  Nathan Sidwell  <nathan@codesourcery.com>
4592
4593         * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
4594         foul of type-based aliasing.
4595
4596 2002-09-30  Anthony Green  <green@redhat.com>
4597
4598         * gcj.texi (Invoking jv-scan): Fix texinfo.
4599
4600 2002-09-28  Anthony Green  <green@redhat.com>
4601
4602         * gcj.texi (Invoking jv-scan): Add --no-assert documentation.
4603         (Code Generation): Add -fno-assert documentation.
4604         * jv-scan.c (flag_assert): New global.
4605         (options): Add assert option.
4606         (help): Add --no-assert documentation.
4607         * parse-scan.y (flag_assert): New global.
4608         * lang.c (lang_f_options): Add -fassert/-fno-assert support.
4609         (flag_assert): New global.
4610         * java-tree.h (flag_assert): New global.
4611         * lex.c (java_lex): Obey flag_assert.
4612         * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when
4613         calling cc1.
4614
4615 2002-09-26  Andrew Haley  <aph@redhat.com>
4616
4617         * expr.c (build_java_array_length_access): Check for null pointer.
4618         * expr.c (expand_java_arrayload): Likewise.
4619
4620 2002-09-21  Richard Henderson  <rth@redhat.com>
4621
4622         * jcf-parse.c (get_constant): Decode from IEEE no matter
4623         what the target format.
4624
4625 2002-09-20  Kazu Hirata  <kazu@cs.umass.edu>
4626
4627         * ChangeLog: Follow spelling conventions.
4628         * class.c: Likewise.
4629         * decl.c: Likewise.
4630         * expr.c: Likewise.
4631         * gjavah.c: Likewise.
4632         * java-tree.h: Likewise.
4633         * jcf-dump.c: Likewise.
4634         * jcf-parse.c: Likewise.
4635         * jvspec.c: Likewise.
4636         * lang.c: Likewise.
4637         * mangle.c: Likewise.
4638         * parse.y: Likewise.
4639
4640 2002-09-17  Tom Tromey  <tromey@redhat.com>
4641
4642         * lex.c (java_read_unicode_collapsing_terminators): Handle case
4643         where \r appears at EOF.  Fixes PR java/7950.
4644
4645 2002-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4646
4647         * jvspec.c (lang_specific_driver): Remove unused variable.
4648
4649 2002-09-16  Geoffrey Keating  <geoffk@apple.com>
4650
4651         * java-tree.h (union lang_tree_node): Add chain_next option.
4652
4653 2002-09-16  Richard Henderson  <rth@redhat.com>
4654
4655         * jcf-parse.c (get_constant): Runtime check for IEEE format;
4656         use new real.h interface.
4657         * jcf-write.c (find_constant_index): Use new real.h interface.
4658         * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.
4659
4660 2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>
4661
4662         * lang.c: Follow spelling conventions.
4663
4664 2002-09-11  Per Bothner  <per@bothner.com>
4665
4666         * parse.y (fold_constant_for_init):  If a VAR_DECL, convert numerical
4667         constant to the type of the field.
4668         (java_complete_tree):  Remove now-redundant code.
4669
4670         * parse.y (fold_constant_for_init):  'null' is not a constant expr.
4671
4672 2002-09-03  Jesse Rosenstock  <jmr@ugcs.caltech.edu>
4673
4674         For PR java/5794:
4675         * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the
4676         return label if a ret instruction for the jsr has been reached.
4677
4678 2002-09-09  Ranjit Mathew  <rmathew@hotmail.com>
4679
4680         * parse.y (DIR_SEPARATOR): Don't define.
4681         (check_class_interface_creation): Use IS_DIR_SEPARATOR.
4682
4683 2002-08-28  Andrew Haley  <aph@redhat.com>
4684
4685         * verify.c (verify_jvm_instructions): Allow exception handler
4686         inside code that is being protected, but generate a warning.
4687         * except.c (link_handler): Initialize `expanded' in new eh_range.
4688         (binding_depth, is_class_level, current_pc): Declare extern.
4689
4690 2002-09-01  Mark Wielaard <mark@klomp.org>
4691
4692         * gcj.texi: Add chapter about system properties.
4693         Fixed some typos.
4694
4695 2002-08-26  Tom Tromey  <tromey@redhat.com>
4696
4697         * parse.y (try_builtin_assignconv): Allow narrowing primitive
4698         conversion if RHS_TYPE is byte, short, or char.
4699
4700 2002-08-22  Tom Tromey  <tromey@redhat.com>
4701
4702         * gcj.texi (Invoking gij): Document -cp and -classpath.
4703
4704 2002-08-21  Tom Tromey  <tromey@redhat.com>
4705
4706         * Make-lang.in (java/jcf-path.o): Use $(datadir), not
4707         $(prefix)/share.  For PR libgcj/7633.
4708
4709         For PR java/6005 and PR java/7611:
4710         * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define.
4711         (java_can_use_bit_fields_p): New function.
4712
4713 2002-08-16  Tom Tromey  <tromey@redhat.com>
4714
4715         * gcj.texi (Class Initialization): Mention class initialization of
4716         arrays.
4717
4718 2002-07-30  Andrew Haley  <aph@cambridge.redhat.com>
4719
4720         * Make-lang.in (java-tree-inline.o): New.
4721         (JAVA_OBJS): Add java-tree-inline.o.
4722         * parse.y (source_end_java_method): Call java_optimize_inline.
4723         (java_expand_method_bodies): Save method's tree in
4724         DECL_SAVED_TREE.
4725         (add_stmt_to_compound): Keep track of the number of statments.
4726         * lang.c (java_init): Enable flag_inline_trees.
4727         (java_post_options): If flag_inline_functions is on, enable
4728         flag_inline_trees instread.
4729         (decl_constant_value): New.
4730         (java_tree_inlining_walk_subtrees): New.
4731         * java-tree.h (DECL_NUM_STMTS): New macro.
4732         (java_optimize_inline): Declare.
4733         * expr.c (java_expand_expr): Allow a BLOCK to return a value.
4734         Handle a LABEL_EXPR.
4735         * decl.c (build_result_decl): If we already have a DECL_RESULT
4736         don't make another.
4737         (dump_function): New.
4738         (java_optimize_inline): New.
4739         (dump_function): New.
4740
4741 2002-08-13  Jesse Rosenstock  <jmr@fulcrummicro.com>
4742
4743         For PR java/7483:
4744         * parse.y (build_assertion): Invert return from
4745         desiredAssertionStatus.
4746
4747 2002-08-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
4748
4749         * jcf-write.c (get_access_flags): Return correct access flags for
4750         private and protected inner classes.
4751
4752 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
4753
4754         * java/Make-lang.in (java.mostlyclean): Remove coverage files.
4755
4756 2002-08-05  Geoffrey Keating  <geoffk@redhat.com>
4757
4758         * mangle_name.c: Don't include obstack.h twice.
4759         * xref.c: Don't include obstack.h.
4760
4761 2002-08-04  Geoffrey Keating  <geoffk@redhat.com>
4762
4763         * class.c: (permanent_obstack): Delete declaration.
4764         * constants.c: (permanent_obstack): Delete declaration.
4765         * except.c: (permanent_obstack): Delete declaration.
4766         * expr.c: (permanent_obstack): Delete declaration.
4767         * jcf-parse.c: (permanent_obstack): Delete declaration.
4768         (saveable_obstack): Delete declaration.
4769         * parse.h: (permanent_obstack): Delete declaration.
4770         * typeck.c: (permanent_obstack): Delete declaration.
4771
4772 2002-08-04  Joseph S. Myers  <jsm@polyomino.org.uk>
4773
4774         * gcj.texi (version-gcc): Increase to 3.3.
4775
4776 2002-07-22  Tom Tromey  <tromey@redhat.com>
4777
4778         * lex.c (java_lex): Check for `e' or `E' after 0.
4779
4780 2002-07-21  Richard Henderson  <rth@redhat.com>
4781
4782         * lang.c (java_unsafe_for_reeval): New.
4783         (LANG_HOOKS_UNSAFE_FOR_REEVAL): New.
4784
4785 2002-07-21  Neil Booth  <neil@daikokuya.co.uk>
4786
4787         * jcf-path.c (GET_ENV_PATH_LIST): Remove.
4788         (jcf_path_init): Use GET_ENVIRONMENT.
4789
4790 2002-07-10  Roger Sayle  <roger@eyesopen.com>
4791             Zack Weinberg <zack@codesourcery.com>
4792
4793         * builtins.c (initialize_builtins): Remove defines that
4794         handled C/C++ specific junk hereby removed from builtins.def.
4795
4796 2002-07-07  Neil Booth  <neil@daikokuya.co.uk>
4797
4798         * lang.c (java_post_options): Update prototype.
4799
4800 2002-07-05  Roger Sayle  <roger@eyesopen.com>
4801
4802         * builtins.c (initialize_builtins): Ignore the additional
4803         parameter to DEF_BUILTIN.  Handle more C/C++ specific junk in
4804         the builtins.def file.
4805
4806 2002-07-01  Tom Tromey  <tromey@redhat.com>
4807
4808         For PR libgcj/7073:
4809         * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE
4810         specially.
4811
4812 2002-07-01  Roger Sayle  <roger@eyesopen.com>
4813
4814         * java/decl.c (builtin_function): Accept additional parameter.
4815         (java_init_decl_processing): Pass an additional NULL_TREE
4816         argument to builtin_function.
4817
4818 2002-06-29  T.J. Mather  <tjmather@maxmind.com>
4819
4820         * gcj.texi: Fixed gcj invocation example so that it compiles.
4821
4822 2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4823
4824         * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11.
4825         * parse.y (mark_parser_ctxt): Likewise.
4826         (check_modifiers, declare_local_variables): Avoid incorrect
4827         hardcoded constant 10.
4828
4829         * lex.c (java_read_char): Avoid "comparison is always true"
4830         warning.
4831
4832 2002-06-25  Andreas Schwab  <schwab@suse.de>
4833
4834         * expr.c (JSR): Avoid undefined operation on PC.
4835
4836 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4837
4838         * decl.c (clear_binding_level): Const-ify.
4839
4840 2002-06-13  Akim Demaille  <akim@epita.fr>
4841
4842         * parse.y (class_declaration, interface_declaration): Make sure
4843         all their rules have an action, in order to avoid meaningless `$$
4844         = $1' and their type clashes.
4845
4846 2002-06-11  Tom Tromey  <tromey@redhat.com>
4847
4848         * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC.
4849         * parse-scan.y (statement_without_trailing_substatement): Added
4850         assert_statement.
4851         (assert_statement): New rule.
4852         * java-tree.h (struct lang_type) [assertions]: New field.
4853         (TYPE_USES_ASSERTIONS): New macro.
4854         (CLASS_USES_ASSERTIONS): Likewise.
4855         (FIELD_SYNTHETIC): New define.
4856         * lex.c (java_lval;): Added ASSERT_TK.
4857         * parse.y (ASSERT_TK): Added.
4858         (statement_without_trailing_substatement): Added assert_statement.
4859         (assert_statement): New rule.
4860         (build_assertion): New function.
4861         (maybe_generate_pre_expand_clinit): Create and initialize
4862         $assertionsDisabled.
4863         (lookup_package_type): Removed decl.
4864         * keyword.h: Rebuilt.
4865         * keyword.gperf (assert): New token.
4866
4867 2002-06-10  Akim Demaille  <akim@epita.fr>
4868
4869         * parse.y (interface_type_list, class_member_declaration)
4870         (unary_expression_not_plus_minus): Remove duplicate %type.
4871         Whitespace changes.
4872
4873 2002-06-09  Tom Tromey  <tromey@redhat.com>
4874
4875         * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H.
4876
4877         * parse.y (method_header): Give error message in all cases.
4878         Fixes PR java/6865.
4879
4880 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
4881
4882         Don't use RTL inlining. Fix for PR java/6820.
4883         * lang.c (LANG_HOOKS_POST_OPTIONS): Define.
4884         (flag_really_inline): New.
4885         (java_decode_option): Set flag_really_inline if -finline-functions
4886         is seen.
4887         (java_post_options): New function. Turn off inlining unless
4888         flag_really_inline is set.
4889
4890 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
4891
4892         * gjavah.c (throwable_p): Accept argument as either a classname or
4893         signature fragment. Create null-terminated classname string for super
4894         when calling itself recursively.
4895         (decode_signature_piece): Skip first character from class name
4896         signature when calling throwable_p.
4897
4898 2002-06-08  H.J. Lu  (hjl@gnu.org)
4899
4900         * jcf-path.c (jcf_path_init): Allocate 1 more byte for string.
4901
4902 2002-06-04  Tom Tromey  <tromey@redhat.com>
4903
4904         * jcf-write.c (perform_relocations): Optmize a goto to a goto.
4905
4906 2002-06-04  Michael Koch  <konqueror@gmx.de>
4907
4908         * gcj.texi (Input Options): Fixed typo.
4909
4910 2002-06-04  Zack Weinberg  <zack@codesourcery.com>
4911
4912         * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y,
4913         typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks,
4914         all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE,
4915         and all now-pointless local variables.  Rename other local
4916         variables to reflect their not being handles.
4917
4918         * java-tree.h, jcf-dump.c, jcf-io.c: Remove all
4919         #if JCF_USE_STDIO blocks.
4920
4921         * parse.y: Add missing semicolon at end of rule.
4922
4923 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
4924
4925         * check-init.c (attach_initialized_static_class): Delete, unused.
4926         * parse.y: Use htab_t instead of struct hashtable, update
4927         all uses.
4928         * java-tree.h: Include hashtab.h instead of hash.h.
4929         (struct lang_decl_func): Use htab_t, set up for gengtype.
4930         (struct init_test_hash_entry): Delete.
4931         (struct treetreehash_entry): New.
4932         (java_treetreehash_find): New
4933         (java_treetreehash_new): New prototype.
4934         (java_treetreehash_create): New prototype.
4935         (java_mark_tree): Delete prototype.
4936         (java_hash_hash_tree_node): Delete prototype.
4937         (java_hash_compare_tree_node): Delete prototype.
4938         (attach_initialized_static_class): Delete prototype.
4939         * expr.c (build_class_init): Update to use java_treetreehash
4940         functions.
4941         (java_expand_expr): Update to use htab_t.
4942         (emit_init_test_initialization): Likewise.
4943         * decl.c (java_mark_tree): Delete.
4944         * class.c (init_test_hash_newfunc): Delete.
4945         (java_hash_hash_tree_node): Delete.
4946         (java_hash_compare_tree_node): Delete.
4947         (add_method_1): Update to use java_treetreehash functions.
4948         (JAVA_TREEHASHHASH_H): New macro.
4949         (java_treetreehash_hash): New function.
4950         (java_treetreehash_compare): New function.
4951         (java_treetreehash_find): New function.
4952         (java_treetreehash_new): New function.
4953         (java_treetreehash_create): New function.
4954         * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H.
4955
4956         * Make-lang.in (java/parse.o): Depend on debug.h.
4957         * java-tree.h (struct lang_identifier): Use gengtype.
4958         (union lang_tree_node): New.
4959         (struct lang_decl_func): Use gengtype.
4960         (struct lang_decl_var): Likewise.
4961         (struct lang_decl): Likewise.
4962         * parse.y: Include debug.h.
4963         * lang.c (LANG_HOOKS_MARK_TREE): Delete.
4964
4965         * lang.c (struct language_function): New dummy structure.
4966
4967         * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set
4968         descriminator for DECL_LANG_SPECIFIC.
4969         (struct lang_decl_func): Rename from struct lang_decl.
4970         (enum lang_decl_desc): New.
4971         (struct lang_decl): Make it a union.  Update all the accessor macros.
4972         (struct lang_type): Use gengtype.
4973         * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC.
4974         * decl.c (java_dup_lang_specific_decl): All lang_decl structures
4975         are now the same size.
4976         (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC;
4977         use discriminator to mark DECL_LANG_SPECIFIC.
4978
4979         * Make-lang.in (gt-java-builtins.h): New rule.
4980         (java/builtins.o): Add dependency on gt-<filename>.h.
4981         * builtins.c: Use gengtype for roots.
4982         (union string_or_tree): Use gengtype.
4983         (struct builtin_record): Use gengtype.
4984         * config-lang.in (gtfiles): Add builtins.c.
4985
4986         * Make-lang.in (gt-java-class.h, gt-java-constants.h,
4987         gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h,
4988         gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h,
4989         gt-java-parse.h, gtype-java.h): Add rules to generate.
4990         (parse.o): Add dependency on gt-java-parse.h, gt-java.h.
4991         (class.o): Add dependency on gt-*.h.
4992         (constants.o): Likewise.
4993         (decl.o): Likewise.
4994         (expr.o): Likewise.
4995         (jcf-parse.o): Likewise.
4996         (jcf-write.o): Likewise.
4997         (lang.o): Likewise.
4998         * config-lang.in (gtfiles): New.
4999         * class.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
5000         * constants.c: Replace uses of ggc_add_* with GTY markers.
5001         Include gt-*.h.
5002         * decl.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
5003         * expr.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
5004         * java-tree.h: Replace uses of ggc_add_* with GTY markers.
5005         * jcf-parse.c: Replace uses of ggc_add_* with GTY markers.
5006         Include gt-*.h.
5007         * jcf-write.c: Replace uses of ggc_add_* with GTY markers.
5008         Include gt-*.h.
5009         * lang.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
5010         * mangle.c: Replace uses of ggc_add_* with GTY markers.  Include
5011         gt-*.h.
5012         * parse.y: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
5013         Include gtype-java.h.
5014
5015 2002-06-02  Tom Tromey  <tromey@redhat.com>
5016
5017         Fix for PR java/5913:
5018         * parse.y (patch_binop): Call patch_string on op1.
5019
5020 2002-06-02  Tom Tromey  <tromey@redhat.com>
5021
5022         Fix for PR java/1343, PR java/6336:
5023         * parse.y (make_nested_class_name): Remove extraneous `else'; fix
5024         formatting.  Changed return type.
5025         (anonymous_class_counter): Moved to top of file.
5026         (maybe_make_nested_class_name): Append number to class name for
5027         function-local classes.
5028
5029 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
5030
5031         * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h.
5032         * Make-lang.in: Update dependency lists.
5033
5034 2002-05-18  Mark Mitchell  <mark@codesourcery.com>
5035
5036         * gjavah.c (throwable_p): Do not free the name of the class after
5037         passing it to find_class.
5038         * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition.
5039         * jcf-io.c (dirent.h): Include it.
5040         (fnmatch.h): Likewise.
5041         (compare_path): New function.
5042         (java_or_class_file): Likewise.
5043         (memoized_dirlist_entry): New type.
5044         (memoized_dirlist_lookup_eq): New function.
5045         (memoized_dirlists): New variable.
5046         (caching_stat): New function.
5047         (memoized_class_lookup_eq): New function.
5048         (memoized_class_lookups): Likewise.
5049         (find_class): Use memoized_class_lookups and caching_stat.
5050         * jcf.h (JCF_USE_SCANDIR): Define.
5051         * parse.y (java_expand_classes): Write the class files in reverse
5052         order.
5053
5054 2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5055
5056         * Make-lang.in: Allow for PWDCMD to override hardcoded pwd.
5057
5058 2002-05-13  Mark Mitchell  <mark@codesourcery.com>
5059
5060         * jcf-write.c (write_classfile): Unlink the temporary file if it
5061         cannot be renamed.  Use concat to build up the name of the
5062         temporary file.
5063
5064 2002-05-08  Mark Mitchell  <mark@codesourcery.com>
5065
5066         * jcf-write.c (write_classfile): Write the file to a
5067         temporary file and then rename it.
5068
5069 2002-05-07  Tom Tromey  <tromey@redhat.com>
5070
5071         * gjavah.c (throwable_p): Use xstrdup, not strdup.
5072
5073         Fix for PR java/1200:
5074         * gjavah.c (throwable_p): New function.
5075         (decode_signature_piece): Use it.  A `WeakReference' isn't the
5076         same as a `jweak'.
5077         Include hashtab.h.
5078         (gcjh_streq): New function.
5079
5080 2002-05-07  Andreas Jaeger  <aj@suse.de>
5081
5082         * parse.y (finish_for_loop): Fix if statement.
5083
5084 2002-05-06  Tom Tromey  <tromey@redhat.com>
5085
5086         Fix for PR java/5941:
5087         * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for
5088         loop update expression.
5089         (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR.
5090         * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro.
5091
5092 2002-05-04  Mark Wielaard  <mark@klomp.org>
5093
5094         For PR java/6519:
5095         * parse.y (build_string_concatenation): Return just op1 only when op2
5096         is null and op1 is a STRING_CST, otherwise always construct a
5097         StringBuffer.
5098
5099 2002-04-27  Tom Tromey  <tromey@redhat.com>
5100
5101         For PR java/6382:
5102         * parse.y (string_convert_int_cst): New function.
5103         (merge_string_cste): Use it.
5104
5105 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
5106
5107         * java-tree.h (java_parse_file): Update.
5108         (java_set_yydebug): Remove.
5109         * jcf-parse.c (yydebug): Remove.
5110         (java_set_yydebug): Die.
5111         (java_parse_file): Update.
5112         * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
5113
5114 2002-04-24  Tom Tromey  <tromey@redhat.com>
5115
5116         For PR java/6425:
5117         * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose
5118         EXPR_WFL_QUALIFICATION of qual_wfl.
5119
5120 2002-04-23  Per Bothner  <per@bothner.com>
5121
5122         * expr.c (PRE_JSR):  Call NOTE_LABEL for return address.
5123         * java-tree.h (BCODE_RETURN_TARGET):  Removed - never set.
5124         (BCODE_TARGET):  Remove BCODE_RETURN_TARGET.
5125
5126 2002-04-23  Tom Tromey  <tromey@redhat.com>
5127
5128         For PR java/6314:
5129         * jvspec.c (lang_specific_driver): Use --resource, not -R.  Also
5130         recognize `-fcompile-resource='.
5131         * gcj.texi (Invoking gcj): Use --resource, not -R.  Expanded text
5132         a bit.
5133
5134 2002-04-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
5135
5136         * jcf-parse.c: (yyparse): Don't prepend "./" to relative
5137         paths. Fixes PR java/2791.
5138
5139 2002-04-19  Andrew Haley  <aph@redhat.com>
5140
5141         * jcf-write.c (push_long_const): lo, hi: New variables.
5142         Use rshift_double to extract the high part of a 64-bit long.
5143         Use WORD_TO_INT to extract the low part.
5144
5145         * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned
5146         HOST_WIDE_INT for num.  Use JPOOL_UINT to get it.
5147         CONSTANT_Double: Use JPOOL_UINT to get both halve of a double.
5148
5149 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
5150
5151         * typeck.c (incomplete_type_error): Remove.
5152
5153 2002-04-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5154
5155         * class.c (make_class_data): Set DECL_ALIGN on static class data,
5156         for hash synchronization.
5157         * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
5158         * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
5159         class_type_node.
5160
5161 2002-04-16  Mark Wielaard  <mark@klomp.org>
5162
5163         * jcf-write.c (generate_bytecode_insns): Only write const_0 if not
5164         negative zero.
5165
5166 2002-04-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5167
5168         Fix for PR java/6294:
5169         * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner
5170         interfaces.
5171
5172 2002-04-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5173
5174         Fix for PR java/6085:
5175         * parse.y (patch_method_invocation): Always use build_access_to_thisn
5176         to get enclosing "this" argument for inner-class constructor
5177         invocation. Pass correct arguments to build_access_to_thisn.
5178
5179 2002-04-10  Andreas Jaeger  <aj@suse.de>
5180
5181         * gcj.texi (Input Options): Fix extdirs patch.
5182
5183 2002-04-10  Anthony Green  <green@redhat.com>
5184
5185         * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration.
5186
5187 2002-04-09  Anthony Green  <green@redhat.com>
5188
5189         * gcj.texi (Input Options): Add --extdirs documentation.
5190         * jcf-dump.c (OPT_extdirs): New macro.
5191         (options): Add extdirs option.
5192         (help): Describe --extdirs.
5193         (main): Handle OPT_extdirs.
5194         * gjavah.c (OPT_extdirs): New macro.
5195         (options): Add extdirs option.
5196         (help): Describe --extdirs.
5197         (main): Handle OPT_extdirs.
5198         * jcf-path.c (jcf_path_init): Add extdirs support.
5199         (jcf_path_extdirs_arg): New function.
5200         (extensions): New variable to hold extensions path entries.
5201         * jvspec.c: Remove -fextdirs= when compiling main().
5202         * lang.c (java_decode_option): Handle -fextdirs=.
5203         * jcf.h (jcf_path_extdirs_arg): Declare new function.
5204         * Make-lang.in: Compile jcf-path with version info for use in
5205         identifying the appropriate libgcj.jar.
5206
5207 2002-04-08  Tom Tromey  <tromey@redhat.com>
5208
5209         For PR libgcj/5303:
5210         * .cvsignore: Added rmic.1 and rmiregistry.1.
5211         * gcj.texi (Top): Link to new nodes.
5212         (Invoking rmic): New node.
5213         (Invoking rmiregistry): Likewise.
5214         * Make-lang.in (java.generated-manpages): Added rmic.1 and
5215         rmiregistry.1.
5216         (java.maintainer-clean): Likewise.
5217         ($(srcdir)/java/rmic.1): New target.
5218         ($(srcdir)/java/rmiregistry.1): Likewise.
5219         (java.install-man): Handle rmic.1 and rmiregistry.1.
5220
5221 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5222
5223         * gcj.texi (Invocation): Update JvAttachCurrentThread documentation.
5224         Add note about handling uncaught exceptions. Add an exception handler
5225         to example.
5226
5227 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5228
5229         * parse.y (resolve_qualified_expression_name): Clear "from_super" flag
5230         after using it to patch CALL_EXPR.
5231
5232 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5233
5234         * gcj.texi (Invocation): Document CNI invocation API.
5235
5236 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
5237
5238         * expr.c (truthvalue_conversion): Rename.  Update.
5239         (expand_compare): Update.
5240         * java-tree.h (java_truthvalue_conversion): New.
5241         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
5242
5243 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
5244
5245         * java-tree.h (java_mark_addressable): New.
5246         * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
5247         * typeck.c (mark_addressable): Rename, update.
5248
5249 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
5250
5251         * expr.c (build_java_binop): Update.
5252         * java-tree.h (java_signed_type, java_unsigned_type,
5253         java_signed_or_unsigned_type): Update.
5254         * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
5255         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
5256         * parse.y (patch_binop): Update.
5257         * typeck.c (signed_or_unsigned_type, unsigned_type,
5258         signed_type): Update.
5259
5260 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
5261
5262         * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
5263         (java_dummy_print): Remove.
5264         (lang_print_error): Rename.  Exit early if inhibiting output.
5265         (inhibit_error_printing_function): New.
5266         (java_init): Don't set hook.
5267         (lang_init_source): Use new boolean.
5268
5269 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
5270
5271         * parse.y (do_resolve_class): Fix infinite recursion.
5272
5273 2002-03-29  Tom Tromey  <tromey@redhat.com>
5274
5275         * parse.y (check_inner_circular_reference): Ignore incomplete
5276         types.
5277
5278 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
5279
5280         * Make-lang.in (builtins.o): Update.
5281         * boehm.c (get_boehm_type_descriptor): Update.
5282         * builtins.c: Include langhooks.h.
5283         * decl.c (java_init_decl_processing): Update.
5284         * java-tree.h (java_type_for_mode, java_type_for_size): New.
5285         * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
5286         Redefine.
5287         * typeck.c (type_for_mode, type_for_size): Update.
5288
5289 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
5290
5291         * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING.
5292
5293 2002-03-28  Tom Tromey  <tromey@redhat.com>
5294
5295         * except.c (expand_end_java_handler): If the handler type is NULL,
5296         use java.lang.Throwable.  Fixes PR java/5986.
5297
5298 2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
5299
5300         Fix for PR java/4715:
5301         * jcf-parse.c (parse_source_file_3): New function.
5302         (read_class): Call it.
5303         (java_parse_file): Likewise.
5304
5305 2002-03-28  Jan Hubicka  <jh@suse.cz>
5306
5307         * java/lang.c (java_init_options): Set flag_trapping_math to 0.
5308
5309 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5310
5311         * parse.y (resolve_package): Initialize "decl".
5312         (lookup_package_type): Remove unused function.
5313
5314 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5315
5316         Fix for PR java/5993:
5317         * parse.y (resolve_package): Return the decl if resolution was
5318         successful. Don't special case "java.lang" and "java.lang.reflect"
5319         packages. Set type_name to the merged identifier.
5320         (resolved_qualified_expression_name): Print error using "name" if
5321         resolve_package returns NULL_TREE.
5322
5323 2002-03-27  Tom Tromey  <tromey@redhat.com>
5324
5325         * expr.c (expand_invoke): Don't generate null pointer check if
5326         we're calling <init>.
5327
5328 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
5329
5330         * expr.c (java_lang_expand_expr): Rename java_expand_expr,
5331         fix prototype.
5332         * java-tree.h (java_lang_expand_expr): Similarly.
5333         * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
5334         (java_init): Don't set hook.
5335
5336 2002-03-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5337
5338         Fix for PR java/5850:
5339         * parse.y (lookup_field_wrapper): Call itself recursively for enclosing
5340         context if field was not found in the current scope.
5341         * expr.c (lookup_field): Don't look in enclosing contexts.
5342
5343 2002-03-26  Tom Tromey  <tromey@redhat.com>
5344
5345         Fix for PR java/5942:
5346         * parse.y (init_src_parse): Added sanity check.
5347         * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12
5348         elements, not 11.
5349
5350 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
5351
5352         * decl.c (lang_mark_tree): Rename java_mark_tree.
5353         * java-tree.h (java_mark_tree): New.
5354         * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
5355
5356 2002-03-25  Zack Weinberg  <zack@codesourcery.com>
5357
5358         * lex.c: Change java_perform_atof to take normal parameters
5359         instead of a pointer to a parameter block.  Call it directly
5360         from java_lex.
5361
5362 2002-03-22  Mark Wielaard  <mark@klomp.org>
5363
5364         Fix for PR java/5368:
5365         * parse.y (resolve_qualified_expression_name): Use decl not field_decl
5366         when printing error message.
5367
5368 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
5369
5370         * decl.c (maybe_build_cleanup): Remove.
5371
5372 2002-03-22  Tom Tromey  <tromey@redhat.com>
5373
5374         Andrew Haley  <aph@cambridge.redhat.com>
5375
5376         * expr.c (build_field_ref): Don't build a check if the field is a
5377         member of `this'.
5378
5379 2002-03-21  Eric Blake  <ebb9@email.byu.edu>
5380
5381         Fix for PR java/6026:
5382         * lex.c (java_lex): Fix parsing of consecutive floats.
5383
5384 2002-03-21  Tom Tromey  <tromey@redhat.com>
5385
5386         * parse.y (build_access_to_thisn): Stop when FROM is not an inner
5387         class.
5388
5389 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
5390
5391         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
5392         insert_block, getdecls, kept_level_p, global_bindings_p): New.
5393
5394 2002-03-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
5395
5396         * gcj.texi: @code{gcj} becomes @command{gcj}.
5397         @code{gcc} becomes @command{gcc}.
5398         GcjRaw changed to gnu.gcc.RawData.
5399
5400 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
5401
5402         * decl.c (start_java_method): Use new hook.
5403         * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
5404         (java_init): Remove old hook.
5405
5406 2002-03-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
5407
5408         * builtins.c (define_builtin): Do nothing if `type' is null.
5409         Fixes PR java/5876.
5410
5411 2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5412
5413         * parse.y (parser_check_super_interface): Fix error message
5414         grammar/order.
5415
5416 2002-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5417
5418         * jcf-parse.c (get_constant): Delete unused variables.
5419
5420 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
5421
5422         * java-tree.h (java_parse_file): New.
5423         * jcf-parse.c (yyparse): Rename java_parse_file.
5424         * lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
5425
5426 2002-03-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5427
5428         * parse.y (craft_constructor): Return the constructor decl.
5429         (java_expand_classes): Update comments.
5430         (lookup_method_invoke): Call fix_constructors immediately for
5431         anonymous class. Fixes PR java/5935.
5432
5433 2002-03-15  Anthony Green  <green@redhat.com>
5434
5435         * jcf-parse.c (yyparse): Don't emit class registration
5436         constructor when compiling resource files.
5437
5438 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5439
5440         * lang.c (java_tree_code_type, java_tree_code_length,
5441         tree_code_name): Delete.
5442         (tree_code_type, tree_code_length, tree_code_name): Define.
5443         (java_init): Don't try to copy into the various tree_code
5444         arrays.
5445
5446 2002-03-12  Tom Tromey  <tromey@redhat.com>
5447
5448         * jcf-parse.c (get_constant) [CONSTANT_String]: String values are
5449         UTF-8, not UCS-2.  Fixes PR java/5923.
5450
5451         * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is
5452         a call_expr wrapped in a convert.  Fixes PR java/5848.
5453
5454 2002-03-12  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5455
5456         * jcf-write.c (write_classfile): Improve error strings.
5457
5458 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
5459
5460         * lex.c: Adjust comments to GNU standards.
5461
5462 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
5463
5464         Fix for PR java/5902:
5465         * lex.c (java_lex): Fix parsing of literals.
5466
5467 2002-03-11  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5468
5469         * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr
5470         to prevent it getting evaluated twice in the store checking case.
5471         * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when
5472         examining OBJECT.
5473
5474 2002-03-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5475
5476         * decl.c (java_init_decl_processing): Make sure class_type_node
5477         alignment is not less than 64 bits if hash synchronization is enabled.
5478
5479 2002-03-08  Per Bothner  <per@bothner.com>
5480
5481         * parse.y (java_complete_lhs):  Check if patch_assignment
5482         returned an error-mark.
5483
5484         * parse.y (try_builtin_assignconv):  Don't special-case zero.
5485
5486 2002-03-08  Per Bothner  <per@bothner.com>
5487
5488         Fix for PR java/5812.
5489         * expr.c (build_java_jsr):  Take pc arguments, and do lookup_label
5490         here instead of in JSR macro.  Likewise with load_type_state call.
5491         Do the latter on if the return_pc has been verified (the jsr returns).
5492         (JSR):  Now just call build_java_jsr.
5493
5494 2002-03-07  Jeff Sturm  <jsturm@one-point.com>
5495
5496         * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define.
5497         (java.install-common): Link native driver to
5498         JAVA_TARGET_INSTALL_NAME.
5499
5500 2002-03-05  David Billinghurst <David.Billinghurst@riotinto.com>
5501
5502         * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED
5503         * builtins.c(sin_builtin): Likewise
5504         * builtins.c(sqrt_builtin): Likewise
5505
5506 2002-03-03  Zack Weinberg  <zack@codesourcery.com>
5507
5508         * java/expr.c, java/jcf-parse.c, java/lex.c:
5509         Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
5510         REAL_ARITHMETIC blocks unconditional.  Delete some further
5511         #ifdef blocks predicated on REAL_ARITHMETIC.
5512
5513 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5514
5515         * class.c (init_class_processing): Use ARRAY_SIZE in lieu of
5516         explicit sizeof/sizeof.
5517         * decl.c (java_init_decl_processing): Likewise.
5518         * jcf-parse.c (init_jcf_parse): Likewise.
5519         * parse.y (init_src_parse): Likewise.
5520
5521 2002-03-02  Per Bothner  <per@bothner.com>
5522
5523         Make --CLASSPATH by a synonym for --classpath and -classpath.
5524         Implement --bootclasspath.
5525         * jcf-path.c (classpath_u):  Rename static variable to classpath_user.
5526         (classpath_l):  Remove.
5527         (jcf_path_CLASSPATH_arg):  Remove.
5528         (jcf_path_bootclasspath_arg):  New function.
5529         (jcf_path_seal):  Simplify accordingly.
5530
5531         * jcf.h (jcf_path_bootclasspath_arg):  New declarations.
5532         (jcf_path_CLASSPATH):  Remove declaration.
5533         * jvspec.c (jvgenmain_spec):  Also accept -fbootclasspath*.
5534         (lang_specific_driver):  Translate -bootclasspath.
5535         * lang-options.h:  Add --bootclasspath.  Update --CLASSPATH.
5536         * lang.c (decode_lang_options):  Do jcf_path_init first.
5537         Handle -fCLASSPATH same as -fclasspath.  Also process -fbootclasspath.
5538         * gjavah.c:  Also handle --bootclasspath.
5539         Handle --CLASSPATH as a synonum for --classpath.
5540         * jcf-dump.c: Likewise.
5541
5542         "." is not part of system path, but is the default for --classpath.
5543         * jcf-path.c (jcf_path_init):  Don't add "." to sys_dirs.
5544         (jcf_path_seal):  Add "." if no CLASSPATH specified.
5545
5546         * gcj.texi:  Document changes.
5547
5548 2002-03-01  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5549
5550         * expr.c (build_java_arraystore_check): Fix formatting.
5551
5552 2002-02-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
5553
5554         Fix for PR java/5758, java/5632:
5555         * jcf-parse.c (load_class): Renamed local variable, consider `.' an
5556         inner-class separator too.
5557         * parse.y (do_resolve_class): New local `decl_result.'
5558         Progressively build a name for what can have been loaded.
5559
5560 2002-02-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5561
5562         * expr.c (java_array_data_offset): Removed function.
5563         (JAVA_ARRAY_LENGTH_OFFSET): Removed macro.
5564         (build_java_array_length_access): Obtain "length" value using a
5565         COMPONENT_REF, instead of INDIRECT_REF and arithmetic.
5566         (build_java_arrayaccess): Correct comment. Access "data" using a
5567         COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF.
5568         (build_java_arraystore_check): New function.
5569         (expand_java_arraystore): Use build_java_arraystore_check.
5570         * parse.y (patch_assignment): Simplify code to insert a store check
5571         when lvalue is an ARRAY_REF. Use build_java_arraystore_check.
5572         * check-init.c (check_init): Update to reflect that an array length
5573         access is now a COMPONENT_REF.
5574         * gcj.texi (Code Generation): Improve documentation of
5575         -fno-bounds-check. Add documentation for -fno-store-check.
5576         * java-tree.h (flag_store_check): Declare.
5577         (build_java_arraystore_check): Declare.
5578         * lang.c (flag_store_check): Initialize to 1.
5579         (lang_f_options): Add store-check option.
5580         * jvspec.c: Don't pass store-check option to jvgenmain.
5581         * lang-options.h: Add help string for -fno-store-check.
5582
5583 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
5584
5585         * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl.
5586         * java-tree.h (java_dup_lang_specific_decl): New.
5587         * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
5588
5589 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
5590
5591         * builtins.c, decl.c: Delete traditional-mode-related code
5592         copied from the C front end but not used, or used only to
5593         permit the compiler to link.
5594
5595 2002-02-22  Tom Tromey  <tromey@redhat.com>
5596
5597         Fix for PR java/2369:
5598         * jvspec.c (verify_class_name): New function.
5599         (lang_specific_driver): Call it.
5600         (JAVA_START_CHAR_P): New macro.
5601         (JAVA_PART_CHAR_P): Likewise.
5602
5603 2002-02-22  Per Bothner  <per@bothner.com>
5604
5605         * class.c:  Change vtable to be more compatible with g++ v3 abi.
5606         (get_dispatch_table):  Prepend offset-to-top (always 0) and
5607         type_info pointer (currently unimplemented hence NULL) to vtable.
5608         Specifically, prepend offset-to-top and typeinfo ptr (currently null).
5609         (make_class_data):  Variable dtable_start_offset is sizeof 2 pointers.
5610         Adjust vtable pointers by dtable_start_offse - i.e. skip new words.
5611         (build_dtable_decl):  Add declarations for new fields.
5612
5613 2002-02-20  Per Bothner  <per@bothner.com>
5614
5615         * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call
5616         to finit$ (otherwise generate_bytecode_insns drops it). However, we
5617         don't need to set it on the COMPOUND_EXPR - the caller does that.
5618
5619 2002-02-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
5620
5621         * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option
5622         `--CLASSPATH' becomes `--classpath.'
5623         * gjavah.c: Likewise.
5624         * jcf-dump.c: Likewise.
5625         * lang-options.h: Likewise.
5626         * lang.c: Likewise.
5627         * jcf-path.c: Updated comment.
5628         (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.'
5629         (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.'
5630         * jcf.h (jcf_path_CLASSPATH_arg): Ditto.
5631         (jcf_path_CLASSPATH_arg): Ditto.
5632         (classpath_u): Updated leading comment.
5633
5634 2002-02-20  Per Bothner  <per@bothner.com>
5635
5636         * builtins.c (check_for_builtin):  New function.
5637         (build_call_or_builtin):  Remove.
5638         * java-tree.h:  Update accordingly.
5639         * expr.c (expand_invoke):  Use build + check_for_builtin instead
5640         of build_call_or_builtin.
5641         * parse.y (patch_invoke):  Likewise.  This avoids needlessly creating
5642         a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER
5643         flag (which had caused jcf-write to incorrectly emit invokevirtual).
5644
5645 2002-02-17  Tom Tromey  <tromey@redhat.com>
5646
5647         * java-tree.h (TYPE_STRICTFP): New macro.
5648         (struct lang_type) [strictfp]: New field.
5649         (CLASS_STRICTFP): New macro.
5650         (METHOD_STRICTFP): New macro.
5651         (struct lang_decl) [strictfp]: New field.
5652         * parse.y (method_header): Disallow strictfp constructor or
5653         abstract method.
5654         (STRICT_TK): Move before MODIFIER_TK.
5655         * parse.h (CLASS_MODIFIERS): Added ACC_STRICT.
5656         (METHOD_MODIFIERS): Likewise.
5657         (INTERFACE_MODIFIERS): Likewise.
5658         * jcf-write.c (get_access_flags): Likewise.
5659         * class.c (set_class_decl_access_flags): Recognize ACC_STRICT.
5660         (add_method_1): Likewise.
5661         (get_access_flags_from_decl): Likewise.
5662         * jcf-dump.c (print_access_flags): Print in standard order.  Also,
5663         recognize strictfp flag.
5664         * jcf.h (ACC_STRICT): New define.
5665
5666 2002-02-12  David Billinghurst <Davod.Billinghurst@riotinto.com>
5667
5668         * class.c(build_utf8_ref): Move declaration of decl_size
5669
5670 2002-02-07  Tom Tromey  <tromey@redhat.com>
5671
5672         * gcj.texi (Input Options): --CLASSPATH does not suppress system
5673         path.
5674
5675 2002-02-04  Anthony Green  <green@redhat.com>
5676
5677         * class.c (build_utf8_ref): Put UTF-8 constants into merged
5678         sections if available.
5679
5680 2002-02-04  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5681
5682         * parse.y (java_expand_classes): Fix typo in static field loop.
5683
5684 2002-02-02  Richard Henderson  <rth@redhat.com>
5685
5686         * class.c (add_field): Mark static fields external.
5687         (build_class_ref): Remove redundant set.
5688         * parse.y (java_expand_classes): Mark static fields of classes
5689         to be compiled as local.
5690         * jcf-parse.c (parse_class_file): Likewise.
5691
5692 2002-02-02  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
5693
5694         * gcj.texi (About CNI): New node.
5695
5696 2002-02-01  Craig Rodrigues  <rodrigc@gcc.gnu.org>
5697
5698         PR java/5080
5699         * jcf-parse.c : Check for HAVE_LOCALE_H before using
5700         setlocale() with LC_CTYPE as a parameter.
5701         * jv-scan.c: Same.
5702
5703 2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>
5704
5705         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
5706         Follow GNU Coding Standards for --version.
5707
5708 2002-01-28  Tom Tromey  <tromey@redhat.com>
5709
5710         * expr.c (build_jni_stub): Ensure storage for `meth' is
5711         generated.
5712         * parse.y (java_complete_expand_methods): Set
5713         current_function_decl before building JNI stub.
5714
5715 2002-01-26 Andreas Tobler <a.tobler@schweiz.ch>
5716
5717         * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not
5718         BUILT_IN_SQRTF.
5719
5720 2002-01-22  Tom Tromey  <tromey@redhat.com>
5721
5722         * decl.c (java_init_decl_processing): Use add_predefined_file.
5723         Predefine RawData.java.
5724         (predef_filenames): Removed.
5725         (java_init_decl_processing): Don't register predef_filenames.
5726         * jcf-parse.c (add_predefined_file): New function.
5727         (predefined_filename_p): Rewrote.
5728         (predefined_filename_p): No longer static.
5729         * decl.c (java_init_decl_processing): Call initialize_builtins.
5730         * Make-lang.in (JAVA_OBJS): Added builtins.o.
5731         (java/builtins.o): New target.
5732         * builtins.c: New file.
5733         * parse.y (patch_invoke): Use build_call_or_builtin.
5734         * java-tree.h (build_call_or_builtin): Declare.
5735         (initialize_builtins): Declare.
5736         (java_set_exception_lang_code): Removed unused declaration.
5737         (PREDEF_FILENAMES_SIZE): Removed.
5738         (java_tree_index): Added JTI_PREDEF_FILENAMES.
5739         (predef_filenames): New define.
5740         (add_predefined_file): Declare.
5741         (predefined_filename_p): Declare.
5742         * expr.c (expand_invoke): Use build_call_or_builtin.
5743
5744 2002-01-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5745
5746         * parse.y (patch_switch_statement): Fix format specifier.
5747
5748 2002-01-16  Tom Tromey  <tromey@redhat.com>
5749
5750         More for PR java/5365:
5751         * gjavah.c (print_stub_or_jni): Cause exception to be thrown by
5752         default.
5753         (process_file): Generate include for
5754         java.lang.UnsupportedOperationExceptions.
5755
5756 2002-01-15  Andreas Jaeger  <aj@suse.de>
5757
5758         * .cvsignore: Add man pages.
5759
5760 2002-01-15  Tom Tromey  <tromey@redhat.com>
5761
5762         Fix for PR java/5365:
5763         * gjavah.c (process_file): Turn class name into a file name.
5764
5765 2002-01-14  Matthias Klose  <doko@debian.org>
5766
5767         * gcj.texi: Fix whitespace and formatting errors in the
5768         synopsis of the man pages. Update copyright.
5769
5770 2002-01-14  Tom Tromey  <tromey@redhat.com>
5771
5772         For PR libgcj/5303:
5773         * Make-lang.in (java.install-man): Handle jv-convert man page.
5774         (java.generated-manpages): Added jv-convert.1.
5775         (java.uninstall): Remove jv-convert.1.
5776         (java.maintainer-clean): Likewise.
5777         ($(srcdir)/java/jv-convert.1): New target.
5778         * gcj.texi (Top): Link to jv-convert node.
5779         (Individual utilities): Likewise.
5780         (Invoking jv-convert): New node.
5781
5782 2001-01-10  Jeff Sturm  <jsturm@one-point.com>
5783             Martin Kahlert  <martin.kahlert@infineon.com>
5784
5785         * jcf-parse.c (get_constant): Don't swap lo/hi for big
5786         endian targets when HOST_BITS_PER_WIDE_INT >= 64.
5787
5788 2002-01-03  Graham Stott  <grahams@redhat.com>
5789
5790         * class.c (compile_resource_file): Update copyright date.
5791         Constify filename parameter.
5792         (java-tree.h): Update copyright date.
5793         (compile_resource_file): Constify filename parameter.
5794
5795 2002-01-03  Graham Stott  <grahams@redhat.com>
5796
5797         * gcc/jcf-parse.c: Update copyright date.
5798         (yyparse): Constify resource_filename.
5799
5800 2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5801
5802         * parse.y (src_parse_roots): Don't needlessly zero init.
5803
5804 2001-12-31  Tom Tromey  <tromey@redhat.com>
5805
5806         * parse.y (dump_java_tree): New function.
5807         (source_end_java_method): Call it.
5808         (end_class_declaration): Likewise.
5809         * lang.c (java_decode_option): Call dump_switch_p.
5810
5811 2001-12-28  Tom Tromey  <tromey@redhat.com>
5812
5813         * gen-table.pl: Don't process characters after \uffff.  Added
5814         comment pointing to input file.
5815
5816 2001-12-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5817
5818         * gen-table.pl: Const-ify output.  Document the location of a
5819         suitable unicode input file.
5820
5821         * chartables.h: Regenerate.
5822
5823 2001-12-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5824
5825         * chartables.h: Const-ify.
5826         * gjavah.c (options): Likewise.
5827         * jcf-dump.c (options): Likewise.
5828         * jv-scan.c (options): Likewise.
5829         * lex.c (java_start_char_p, java_part_char_p): Likewise.
5830         * parse.y (binop_lookup): Likewise.
5831
5832 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5833
5834         * Make-lang.in (keyword.h): Pass -C to gperf to const-ify
5835         the static arrays that are output.
5836         * jvspec.c (jvgenmain_spec): Make static.
5837         * keyword.gperf (struct java_keyword, java_keyword): Const-ify.
5838         * keyword.h: Regenerate.
5839         * lang.c (string_option, process_option_with_no, lang_f_options,
5840         lang_W_options): Const-ify.
5841         * lex.c (java_lex): Likewise.
5842
5843 2001-12-21  Richard Henderson  <rth@redhat.com>
5844
5845         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into ..
5846         (get_boehm_type_descriptor): ... here.  Arrange for the
5847         TREE_TYPE to get set properly.
5848
5849 2001-12-21  Richard Henderson  <rth@redhat.com>
5850
5851         * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor
5852         only if the target requires collect2.
5853
5854         * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL.
5855
5856 2001-12-20  Tom Tromey  <tromey@redhat.com>
5857
5858         For PR java/4509:
5859         * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
5860         CAN_COMPLETE_NORMALLY for the node.
5861         * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
5862         generate code for second branch if first branch can't complete
5863         normally.
5864         (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
5865         the loop head if the loop body can't complete normally.
5866
5867 2001-12-20  Tom Tromey  <tromey@redhat.com>
5868
5869         For PR java/4766:
5870         * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle
5871         case where `finally' clause can't complete normally.
5872
5873 2001-12-20  Tom Tromey  <tromey@redhat.com>
5874
5875         Fixes PR java/5057:
5876         * parse.y (analyze_clinit_body): Added this_class parameter.
5877         Check for more cases where we must keep <clinit>.
5878         (maybe_yank_clinit): Cleaned up flow control.
5879
5880 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5881
5882         * decl.c (java_init_decl_processing): Don't initialize
5883         finit_leg_identifier_node.
5884         * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE.
5885         (finit_leg_identifier_node): Remove.
5886         (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE.
5887
5888 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5889
5890         * mangle.c (mangle_member_name): Don't special-case for
5891         NO_DOLLAR_IN_LABEL.
5892         * mangle_name.c (unicode_mangling_length): Likewise.
5893         (append_unicode_mangled_name): Likewise.
5894         * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL
5895         code.
5896
5897 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5898
5899         * expr.c (build_java_array_length_access): Don't force null pointer
5900         check unless flag_check_references is set.
5901
5902 2001-12-20  Tom Tromey  <tromey@redhat.com>
5903
5904         Fix for PR java/3417:
5905         * parse.y (patch_assignment): Added special processing for
5906         `return'.
5907         (patch_return): Don't convert booleans to integers, and don't
5908         special-case `null'.
5909
5910 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
5911
5912         * config-lang.in (diff_excludes): Remove.
5913
5914 2001-12-17  Joseph S. Myers  <jsm28@cam.ac.uk>
5915
5916         * gcj.texi: Update link to GCC manual.
5917
5918 2001-12-17  Tom Tromey  <tromey@redhat.com>
5919
5920         * parse.y (link_nested_class_to_enclosing): Removed useless
5921         statement.
5922
5923 2001-12-16  Tom Tromey  <tromey@redhat.com>
5924
5925         * mangle.c (mangle_method_decl): Never emit `C2' constructor.
5926         Fixes PR java/5088.
5927
5928 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
5929
5930         * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h,
5931         jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix
5932         spelling errors.
5933
5934 2001-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5935
5936         * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value.
5937
5938 2001-12-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5939
5940         * decl.c (java_init_decl_processing): Build otable_type correctly.
5941         otable_decl is an otable_type.
5942
5943 2001-12-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5944
5945         * java-tree.h (otable_methods, otable_decl, otable_syms_decl,
5946         otable_type, otable_ptr_type, method_symbol_type,
5947         method_symbols_array_type, method_symbols_array_ptr_type): New
5948         field/global tree definitions.
5949         (flag_indirect_dispatch): New flag.
5950         * decl.c (java_init_decl_processing): Initialize new otable and
5951         otable_syms type nodes and decls. Add new field "index" to
5952         method_type_node.
5953         * class.c (build_method_symbols_entry): New function.
5954         (make_method_value): Set "index" to to method's vtable index for
5955         virtual methods when indirect-dispatch is not used.
5956         (make_class_data): For indirect-dispatch, don't emit the dtable_decl,
5957         and set vtable_method_count to -1. Set otable and otable_syms field
5958         if indirect-dispatch is used and there was something to put in them.
5959         (build_method_symbols_entry): New function.
5960         (emit_offset_symbol_table): New function.
5961         * expr.c (get_offset_table_index): New function.
5962         (build_invokevirtual): Build array reference to otable at the index
5963         returned by get_offset_table_index, and use the result as the vtable
5964         offset.
5965         (build_invokeinterface): Similar.
5966         * jcf-parse.c (yyparse): If indirect-dispatch, call
5967         emit_offset_symbol_table at the end of compilation, after all classes
5968         have been generated.
5969         * jvspec.c: Don't pass findirect-dispatch to jvgenmain.
5970         * lang.c (flag_indirect_dispatch): Define.
5971         (lang_f_options): Add indirect-dispatch flag.
5972
5973 2001-12-14  Matthias Klose  <doko@debian.org>
5974
5975         * gcj.texi: Markup for man page generation. Document missing
5976         options printed by <tool> --help.
5977         Terminate description of gij's -ms option with a dot.
5978         * Make-lang.in ($(srcdir)/java/*.1): New targets.
5979         (java.generated-manpages java.install-man, java.uninstall,
5980         java-maintainer-clean) Updated.
5981
5982 2001-12-14  Hans Boehm  <Hans_Boehm@hp.com>
5983
5984         * class.c (get_dispatch_table): Fix java vtable layout
5985         for TARGET_VTABLE_USES_DESCRIPTORS.
5986         * decl.c (java_init_decl_processing): Initialize
5987         alloc_no_finalizer_node, finalize_identifier_node.
5988         * expr.c (class_has_finalize_method): New function.
5989         (expand_java_NEW): Generate calls for finalizer-free allocation.
5990         (build_invokevirtual): Fix java vtable layout for
5991         TARGET_VTABLE_USES_DESCRIPTORS.
5992         * java-tree.h (enum java_tree_index): New entries:
5993         JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
5994         (alloc_no_finalizer_node, finalize_deintifier_node): New macros.
5995         (class_has_finalize_method): declare.
5996         (HAS_FINALIZER_P): New macro.
5997         * parse.y (patch_invoke): Generate calls for finalizer-free
5998         allocation.
5999
6000 2001-12-12  Matthias Klose  <doko@debian.org>
6001
6002         * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove
6003         whitespace at end of line.
6004
6005 2001-12-11  Tom Tromey  <tromey@redhat.com>
6006
6007         * lex.c (java_init_lex): Define wfl_to_string as
6008         gnu.gcj.runtime.StringBuffer unless generating bytecode.
6009
6010 2001-12-11  Jeff Sturm  <jsturm@one-point.com>
6011
6012         * class.c (make_method_value): Use null_pointer_node to
6013         represent empty exception table.
6014
6015 2001-12-10  Tom Tromey  <tromey@redhat.com>
6016
6017         * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT.
6018
6019 2001-12-10  Douglas B. Rupp  <rupp@gnat.com>
6020
6021         * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION).
6022
6023 2001-12-09  Per Bothner  <per@bothner.com>
6024
6025         * check-init.c (current_switch_has_default):  New static field.
6026         (check_init):  Case DEFAULT_EXPR: Set current_switch_has_default.
6027         Case SWITCH_EXPR:  Save/restore current_switch_has_default.  If no
6028         DEFAULT_EXPR seen, simulate a default alternative that copies state.
6029
6030 2001-12-09  Tom Tromey  <tromey@redhat.com>
6031
6032         * check-init.c (check_init): Don't allow pre- or post- increment
6033         or decrement of final variable.
6034         (final_assign_error): Minor error message rewording.
6035
6036 2001-12-08  Tom Tromey  <tromey@redhat.com>
6037
6038         * java-tree.h: Fixed typo.
6039
6040         * gjavah.c (decompile_method): Don't decompile to `return this'
6041         for static methods.
6042
6043         * gjavah.c (cxx_keywords): Re-sorted.
6044         * lex.c (cxx_keywords): Re-sorted.
6045
6046         * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything
6047         else.
6048
6049         * gjavah.c (print_namelet): Clear subnamelets.
6050         (HANDLE_METHOD): Set `method_printed' earlier.
6051
6052 2001-12-07  Tom Tromey  <tromey@redhat.com>
6053
6054         * lang.c (lang_f_options): Added
6055         optimize-static-class-initialization.
6056         (java_decode_option): Removed special case.
6057
6058 2001-12-07  Per Bothner  <per@bothner.com>
6059
6060         * check-init.c (check_init):  Fix typo freeing memory twice.
6061
6062 2001-12-05  Per Bothner  <per@bothner.com>
6063
6064         Restore support for static class initialization optimization.
6065         * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable.
6066         * check-init.c (check_int):  At end of BLOCK handle initialization
6067         blocks, which used to be done in java_complete_expand_method but did
6068         not handle the case where check_for_initialization might allocate
6069         more than a word of bits.
6070         * decl.c (lang_make_tree):  The smic field is now a tree.
6071         * expr.c (build_class_init):  Set DECL_FUNCTION_INIT_TEST_CLASS field.
6072         * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE):  New macro.
6073
6074         * parse.y (emit_test_initialization):  Combine hash_lookup calls.
6075
6076         * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND):
6077         Change from a hash table to a list.
6078         (struct_lang_decl):  Change field 'smic' to match.
6079         * class.c (add_method_1):  Initialize
6080         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list.
6081         * parse.y (adjust_init_test_initialization):  Removed - inlined into -
6082         (java_expand_method_bodies): -here, since 'smic' is now a list.
6083         (patch_invoke):  Add to 'smic' list, instead of hash_lookup.
6084
6085         * check-init.c (WORD_SIZE):  Use BITS_PER_UNIT.
6086
6087         * class.c (java_hash_compare_tree_node):  Fix casts.
6088
6089 2001-12-04  Per Bothner  <per@bothner.com>
6090
6091         * check-init.c:   Handle definite unassignment to finals in addition
6092         to definite assignment.
6093         (loop_current_locals):  New field.
6094         (num_current_locals, int start_current_locals, num_current_words):
6095         Make static.
6096         (SET_P, CLEAR_P, SET_BIT):  Add needed but missing parentheses.
6097         (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED,
6098         CLEAR_ASSIGNED, CLEAR_UNASSIGNED):  New macros.
6099         (get_variable_decl, check_final_reassigned):  New functions.
6100         (check_init, check_bool_init):  Modify as needed for checking finals.
6101         (check_for_initialization):  Take extra parameter and return void.
6102         Do extra start-up logic to check final fields for assignment.
6103         * parse.y (check_static_final_variable_assignment_flag,
6104         reset_static_final_variable_assignment_flag, check_final_assignment,
6105         check_final_variable_local_assignment_flag,
6106         reset_final_variable_indirect_assignment_flag,
6107         reset_final_variable_global_assignment_flag):  Remove functions.
6108         (java_complete_expand_methods, outer_field_access_fix,
6109         patch_assignment): Remove no-longer used logic.
6110         * java-tree.h (DECL_FIELD_FINAL_IUD):  Change usage and comments.
6111         * parse.y (register_fields, java_complete_tree):  Update accordingly.
6112
6113         * check-init.c (ALLOC_WORDS/FREE_WORDS):  Use xmalloc/free, not alloca.
6114         (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER):  New.
6115         (check_cond_init, check_bool2_init):  Use DECLARE_BUFFERS.
6116
6117         * java-tree.h (STATIC_CLASS_INIT_OPT_P):  Temporarily turn off.
6118
6119         * java-tree.h (DECL FINAL):  New bit-field.
6120         (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL):  Define as DECL_FINAL.
6121         (LOCAL_FINAL_P):  Use DECL_FINAL rather than old LOCAL_FINAL.
6122         (DECL_INIT_CALLS_THIS):  New macro.
6123         (struct lang_decl):  New bit-field init_calls_this.
6124         (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC,
6125         DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE
6126         (DECL_BIT_INDEX):  Change to use pointer_alias_set since we now
6127         use it for both local variables and final fields.
6128         (struct lang_decl_var):  Remove bit-fields final_liic, final_ierr,
6129         and local_final.
6130         (struct lang_type):  Remove hfv bit-field.
6131         (check_for_initialization):  Change to return void.
6132
6133         * java-tree.h (IS_ARRAY_LENGTH_ACCESS):  New macros.
6134         * expr.c (build_java_array_length_access):  Set IS_ARRAY_LENGTH_ACCESS.
6135         * check-init.c (final_assign_error):  New helper function.
6136         (check_final_reassigned, check_init):  Use it.
6137         (check_init):  Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length.
6138
6139         * java-tree.h (struct lang_decl, struct lang_decl_var):  Change all
6140         bit-fields to unsigned.
6141
6142 2001-12-03  Per Bothner  <per@bothner.com>
6143
6144         * parse.y (patch_binop):  Minor constant folding.
6145
6146         * parse.y (build_current_thisn):  Shorter 'buffer'.
6147
6148 2001-12-03  Per Bothner  <per@bothner.com>
6149
6150         * decl.c (complete_start_java_method):  Now generate TRY_FINALLY_EXPR
6151         instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR.
6152         * jcf-write.c (generate_bytecode_insns):  Remove support for
6153         CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used.
6154         * check-init.c (check_init):  Likewise.
6155
6156 2001-12-03  Per Bothner  <per@bothner.com>
6157
6158         * verify.c (subroutine_nesting):  New function.
6159         (verify_jvm_instructions):  Use it to fix logic for checking that
6160         we're done with the current subroutine.
6161
6162         * verify.c (verify_jvm_instruction): For OPCODE_checkcast and
6163         OPCODE_instanceof use POP_TYPE macro for better diagnostics.
6164
6165 2001-12-03  Per Bothner  <per@bothner.com>
6166
6167         * jcf.h:  Fix obvious typo in comment.
6168         * typeck.c (build_null_signature):  Add comment.
6169
6170 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
6171
6172         * expr.c: Remove leading capital from diagnostic messages, as
6173         per GNU coding standards.
6174         * jcf-io.c: Similarly.
6175         * jcf-parse.c: Similarly.
6176         * jv-scan.c: Similarly.
6177         * jvspec.c: Similarly.
6178         * mangle.c: Similarly.
6179
6180 2001-12-02  Tang Ching-Hui  <nicholas@cs.nthu.edu.tw>
6181             Alexandre Petit-Bianco  <apbianco@redhat.com>
6182
6183         * expr.c (build_java_arrayaccess): Call save_expr on array for
6184         correct evaluation order, modified comment, fixed indentation.
6185         * parse.y: (patch_assignment): Correctly extract the array base
6186         from the tree generate by build_java_arrayaccess, added comments.
6187         (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF.
6188         Fixes PR java/3096, PR java/3803, PR java/3965.
6189
6190 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
6191
6192         * expr.c (expand_byte_code): Remove trailing periods from messages.
6193         * jcf-parse.c (load_class, jcf_parse): Similarly.
6194         * jcf-write.c (generate_classfile): Similarly.
6195         * lex.c (java_lex): Similarly.
6196
6197 2001-11-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6198
6199         * class.c (add_interface_do): Set BINFO_VPTR_FIELD.
6200
6201 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
6202
6203         * Make-lang.in (java.generated-manpages): New dummy target.
6204
6205 2001-11-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6206
6207         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
6208         ASM_FINAL_SPEC.
6209         (lang_specific_pre_link): Use set_input to set input_filename.
6210         Append `main' here.
6211         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
6212         (main): Fix definition.
6213         Strip `main' from classname.
6214         Fixes PR java/227.
6215
6216 2001-11-18  Roger Sayle <roger@eyesopen.com>
6217
6218         * parse.h (java_expand_switch): Remove old prototype.
6219
6220 2001-11-18  Tom Tromey  <tromey@redhat.com>
6221
6222         Fix for PR java/1401:
6223         * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where
6224         arg0 is null.
6225         (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case
6226         correctly.
6227
6228 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
6229
6230         * lang.c (finish_parse): Rename to java_finish.
6231         (LANG_HOOKS_FINISH, java_finish): New.
6232
6233 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
6234
6235         * decl.c (init_decl_processing): Rename java_init_decl_processing.
6236         * java-tree.h: New prototype.
6237         * lang.c (java_init): Update prototype.  Combine with old init_parse.
6238
6239 2001-11-13  Tom Tromey  <tromey@redhat.com>
6240
6241         * gjavah.c (method_signature): New global.
6242         (HANDLE_METHOD): Set it.
6243         (decompile_return_statement): New function.
6244         (decompile_method): Use it.
6245         (print_method_info): Removed `synth' argument.
6246
6247 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
6248
6249         * java-tree.h (java_set_yydebug): New.
6250         * jcf-parse.c (set_yydebug): Rename java_set_yydebug.
6251         * lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
6252         (print_lang_decl, print_lang_type, print_lang_identifier,
6253         print_lang_statistics, lang_print_xnode): Remove.
6254
6255 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
6256
6257         * jcf-parse.c (init_lex): Remove.
6258         * lang.c (language_string, lang_identify): Remove.
6259         (struct lang_hooks): Constify.
6260         (LANG_HOOKS_NAME): Override.
6261         (init_parse): Update.
6262
6263 2001-11-08  Andreas Franck  <afranck@gmx.de>
6264
6265         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle
6266         program_transform_name the way suggested by autoconf.
6267         (java.install-common): Also transform auxiliary program names with
6268         program_transform_name.
6269
6270 2001-11-08  Tom Tromey  <tromey@cygnus.com>
6271
6272         * parse.y (trap_overflow_corner_case): New rule.
6273         (unary_expression): Use it.
6274         * lex.c (java_init_lex): Don't set minus_seen.
6275         (yylex): Don't use minus_seen.  Communicate overflow to parser for
6276         it to handle.
6277         (error_if_numeric_overflow): New function.
6278         * parse.h (minus_seen): Removed field.
6279         (JAVA_RADIX10_FLAG): New define.
6280
6281 2001-11-07  Tom Tromey  <tromey@redhat.com>
6282
6283         Patch for PR java/1414:
6284         * parse.y (case_label_list): New global.
6285         (goal): Register case_label_list with GC.
6286         (java_complete_lhs): Save new case on case_label_list.
6287         (patch_switch_statement): Check for duplicate case labels.
6288
6289 2001-11-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
6290
6291         * parse.y (patch_assignment): Removed unused third argument.
6292         (java_complete_lhs): Removed unused third argument to patch_assignment.
6293
6294 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
6295
6296         * lang.c: Include langhooks-def.h.
6297         * Make-lang.in: Update.
6298
6299 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
6300
6301         * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
6302
6303 2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6304
6305         * mangle.c (find_compression_record_match): Don't match compression
6306         records for package name elements unless they occur at the start of
6307         the name. Fix for PR java/4717.
6308
6309 2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6310
6311         * expr.c (expand_java_field_op): Don't special-case references to
6312         java.lang.PRIMTYPE.TYPE.
6313         (build_primtype_type_ref): Removed.
6314         * java-tree.h (build_primtype_type_ref): Remove prototype.
6315         * parse.y (maybe_build_primttype_type_ref): Removed.
6316         (complete_function_arguments): Don't special-case references to
6317         java.lang.PRIMTYPE.TYPE.
6318         (patch_assignment): Likewise.
6319         (array_constructor_check_entry): Likewise.
6320
6321 2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
6322
6323         * mangle.c (static tree compression_table): Fixed leading comment.
6324         * parse.h (struct parser_ctxt): Fixed field comment.
6325         * parse.y (check_pkg_class_access): New prototype, fixed leading
6326         comment, new parameter used to emit error only if passed as true.
6327         (parse_check_super): Pass extra argument to check_pkg_class_access.
6328         (do_resolve_class): Likewise.
6329         (process_imports): Likewise.
6330         (read_import_dir): Fixed indentation.
6331         (find_in_imports_on_demand): New local class_type_name. Local
6332         node_to_use deleted. while loop changed into for loop. Report
6333         multiple definition only for accessible classes. Improved error
6334         message.
6335         (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
6336         assigned to parameter list, fixed indentation. while loop changed
6337         into for loop, restore TREE_CHAIN on local `tem' before the next
6338         iteration.
6339
6340 2001-10-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6341
6342         * lang.c (lang_get_alias_set): Deleted.
6343
6344 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6345
6346         * gjavah.c (jni_print_char): Fix thinko in last change.
6347
6348         * gjavah.c (jni_print_char, decode_signature_piece): Use
6349         safe-ctype macros and/or fold extra calls into fewer ones.
6350         * lex.c (java_read_unicode, java_lex): Likewise.
6351         * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
6352         JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
6353         * mangle_name.c (append_unicode_mangled_name,
6354         unicode_mangling_length): Likewise.
6355
6356 2001-10-17  Richard Henderson  <rth@redhat.com>
6357
6358         * Make-lang.in (java/lang.o): Depend on langhooks.h.
6359
6360 2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
6361
6362         * lang.c (langhooks.h): Included.
6363         (LANG_HOOKS_INIT): Redefined.
6364         (LANG_HOOKS_INIT_OPTIONS): Likewise.
6365         (LANG_HOOKS_DECODE_OPTION): Likewise.
6366         (struct lang_hooks lang_hooks): New initialization.
6367
6368 2001-10-11  Per Bothner  <per@bothner.com>
6369
6370         * parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
6371         rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
6372         The former is simpler, and jcf-write.c handles it better.
6373         (java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
6374         or WITH_CLEANUP_EXPR.
6375         * jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
6376         longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
6377
6378         * parse.y (patch_if_else_statement):  If the condition is constant,
6379         optimize away the test.
6380
6381 2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
6382
6383         * parse.y (patch_cast): Call patch_string on the first operand of
6384         the incoming node, update it if necessary. Fixes PR java/4510.
6385
6386 2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6387
6388         * parse.y (find_as_inner_class): Don't disregard the enclosing scope
6389         when name qualifier matches a package name.
6390
6391 2001-10-08  Tom Tromey  <tromey@redhat.com>
6392
6393         Fix for PR java/4489:
6394         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
6395         force a new label when computing `body_block'.
6396
6397 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6398
6399         * jcf-io.c (format_uint): Const-ify.
6400         * lang.c (java_tree_code_type, java_tree_code_length): Likewise.
6401         * lex.c (java_get_line_col): Likewise.
6402         * parse.y (build_incdec): Likewise.
6403
6404 2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
6405
6406         * parse.y (register_incomplete_type): Set JDEP_SUPER to be given
6407         a NULL enclosing context if appropriate. Fixes PR java/4466.
6408
6409 2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
6410
6411         * parse.y (patch_assignment): Use lvalue's original TYPE when
6412         building the final COMPOUND_EXPR.
6413         (try_reference_assignconv): Fixed leading comment.
6414
6415 2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
6416
6417         * parse.y (check_final_variable_indirect_assignment): For
6418         COMPOUND_EXPR, return only if finals were found initialized
6419         properly, if not, keep on checking.
6420         (check_final_variable_global_assignment_flag): New local
6421         error_found, set when appropriate and used to decide whether to
6422         report uninitialized finals. Fixed typo in comment.
6423
6424 2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
6425
6426         * decl.c (init_decl_processing): Fixed typo in predef_filenames
6427         last three initializations. Fixes PR java/4360.
6428
6429 2001-09-21  Richard Henderson  <rth@redhat.com>
6430
6431         * class.c (get_dispatch_table): Handle function descriptors.
6432         (build_dtable_decl): Likewise.
6433         * expr.c (build_invokevirtual): Likewise.
6434
6435 2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
6436
6437         * parse.y (patch_method_invocation): Build class initialization
6438         when static finals are used to qualify method invocation.
6439         Fixes PR java/4366.
6440
6441 2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>
6442
6443         * parse.h: (WFL_STRIP_BRACKET): Re-written using
6444         build_type_name_from_array_name.
6445         (STRING_STRIP_BRACKETS): New macro.
6446         * parse.y (build_type_name_from_array_name): New function.
6447         (array_creation_expression:): Accumulate []s instead of [s.
6448         (cast_expression:): Accumulate []s instead of [s after cast type
6449         name.
6450         (build_array_from_name): Local string deleted, use
6451         build_type_name_from_array_name.
6452         (build_unresolved_array_type): Accumulate []s instead of [s after
6453         type name.
6454         (register_fields): Fixed comment.
6455         (resolve_class): Local name, base deleted, new locals tname and
6456         array_dims. Use build_type_name_from_array_name. Use array_dims to
6457         build array type.
6458         (purify_type_name): Use STRING_STRIP_BRACKETS.
6459
6460 2001-09-18  Andreas Jaeger  <aj@suse.de>
6461
6462         * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
6463         * jv-scan.c: Likewise.
6464
6465 2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
6466
6467         * parse.y (patch_method_invocation): Inner class creation context
6468         check not enforced within constructors. Fixes PR java/1873.
6469
6470 2001-09-16  Tom Tromey  <tromey@redhat.com>
6471
6472         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
6473         NOTE_PUSH for single-case push.  Fixes PR java/4189.
6474
6475 2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
6476
6477         * java-tree.h (TYPE_IMPORT_LIST): New macro.
6478         (TYPE_IMPORT_DEMAND_LIST): Likewise.
6479         (struct lang_type): New fields import_list and import_demand_list.
6480         * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
6481         TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
6482         (do_resolve_class): New local saved_enclosing_type, initialized,
6483         passed as parameter to find_in_imports and find_in_imports_on_demand.
6484         (find_in_imports): Added paramater enclosing_type, use its
6485         TYPE_IMPORT_LIST when applicable.
6486         (find_in_imports_on_demand): Added parameter enclosing_type, use
6487         its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
6488         declaration and initialization.
6489         (fold_constant_for_init): Switch/restore current_class to the
6490         appropriate context.
6491
6492 2001-09-13  Mark Mitchell  <mark@codesourcery.com>
6493
6494         * verify.c (verify_jvm_instructions): Fix typo.
6495
6496 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6497
6498         * expr.c (expand_invoke): Const-ification.
6499         * parse.y (patch_method_invocation): Likewise.
6500
6501 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6502
6503         * gjavah.c (cxx_keywords): Const-ification.
6504         * keyword.gperf (java_keyword): Likewise.
6505         * lang.c (java_tree_code_name): Likewise.
6506         * lex.c (cxx_keywords): Likewise.
6507         * parse.y (java_parser_context_suspend, merge_string_cste): Likewise.
6508
6509 2001-09-11  Richard Henderson  <rth@redhat.com>
6510
6511         * parse.h (ctxp_for_generation): Mark extern.
6512
6513 2001-09-10  Richard Henderson  <rth@redhat.com>
6514
6515         * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.
6516
6517 2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
6518
6519         * typeck.c (java_array_type_length, build_prim_array_type):
6520         Represent empty arrays by NULL index.
6521
6522 2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>
6523
6524         * java-tree.h (compile_resource_file): Grouped with other prototypes.
6525         * jvspec.c (lang_specific_driver): Removed unused local `ptr.'
6526
6527 2001-09-06  Anthony Green  <green@redhat.com>
6528
6529         * class.c (O_BINARY): Define if necessary.
6530         (registerResource_libfunc): Declare.
6531         (init_class_processing): Initilize registerResource_libfunc.
6532         (compile_resource_file): New function.
6533         * java-tree.h (resource_name): Declare.
6534         (compile_resource_file): Declare.
6535         * jcf-parse.c (yyparse): Handle compiling java resource files.
6536         * lang.c (java_decode_option): Handle -fcompile-resource option.
6537         * jvspec.c (lang_specific_driver): Handle -R flag for compiling
6538         resource files.
6539         * gcj.texi (Code Generation): Add documentation for -R flag.
6540
6541 2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>
6542
6543         * jcf-write.c (generate_classfile): Issue an error in case of
6544         field/initial value mismatch.
6545         * parse.y (analyze_clinit_body): Keep <clinit> if an array is
6546         being initialized and we're generating bytecode.
6547         (java_complete_lhs): In MODIFY_EXPR section: added comments,
6548         set DECL_INITIAL properly when appropriate.
6549         Fixes PR java/4230
6550         Fixes PR java/4204
6551
6552 2001-09-01  Per Bothner  <per@bothner.com>
6553
6554         * parse.y (maybe_yank_clinit):  A field without an initializer is not
6555         relevant.  All initializers except static final and constant require
6556         <clinit>, regardless of flag_emit_class_files.
6557
6558 2001-08-31  Per Bothner  <per@bothner.com>
6559
6560         * class.c (set_constant_value):  When not emitting class files, then a
6561         String ConstantValue is a utf8const_ptr_type.
6562
6563 2001-08-30  Per Bothner  <per@bothner.com>
6564
6565         * jcf-write.c (generate_classfile):  Check that field is primitive
6566         or string before emitting ConstantValue attribute.
6567
6568 2001-08-30  Per Bothner  <per@bothner.com>
6569
6570         * parse.y (resolve_qualified_expression_name):  If creating a
6571         COMPOUND_EXPR, set it's type correctly.
6572
6573 2001-08-30  Per Bothner  <per@bothner.com>
6574
6575         * jcf-io.c (open_class):  Set filename field.
6576
6577         * jcf-parse,c (parse_class_file):  Set current_function_decl
6578         for better error message when Code attribute is missing.
6579
6580         * lang.c (put_decl_node, lang_print_error):  Re-arrange for
6581         better diagnostics, especially for constructors.
6582
6583 2001-08-30  Per Bothner  <per@bothner.com>
6584
6585         * jcf-write.c (generate_classfile):  Don't write ConstantValue
6586         attribute if field is not final, for compatibility with jdk.
6587
6588         * jcf-write.c (generate_classfile):  Convert ConstantValue values
6589         to correct type.  Work-around for front-end bug.
6590         * class.c (set_constant_value):  Error if constant has wrong type.
6591
6592 2001-08-30  Per Bothner  <per@bothner.com>
6593
6594         * jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
6595         "Double" are printed at verbosity 1.
6596
6597         * jcf-dump.c (main):  Disable flag_print_attributes if --javap.
6598
6599         * jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.
6600
6601 2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
6602
6603         * parse.y (patch_assignment): Don't verify final re-assignment here.
6604         (java_complete_lhs): Verify assignments to finals calling
6605         patch_assignment. Verify re-assignments to finals before calling
6606         patch_assignment.
6607
6608 2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>
6609
6610         * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
6611         Fixes PR java/1413
6612
6613 2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
6614
6615         * lex.c (java_lex): new local found_hex_digits. Set and then used
6616         in test to reject invalid hexadecimal numbers.
6617         * parse.y (java_complete_tree): Prevent unwanted cast with
6618         initialized floating point finals.
6619         (patch_binop): Emit a warning when detecting a division by zero,
6620         mark result not constant, don't simplify non integer division.
6621
6622 2001-08-28  Per Bothner  <per@bothner.com>
6623
6624         * jcf-write.c  (generate_bytecode_insns):  For increments and
6625         decrements just recurse to push constant.  Improvement on Mark's patch.
6626
6627 2001-08-28  Mark Mitchell  <mark@codesourcery.com>
6628
6629         * jcf-write.c (generate_bytecode_insns): Generate an integer to
6630         real conversion for increments and decrements of reals.
6631
6632 2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
6633
6634         * parse.y (resolve_qualified_expression_name): Handle unresolved
6635         qualified expressions, prevent numerical qualifiers, fixed typo.
6636         Fixes PR java/4141
6637
6638 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
6639
6640         * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
6641         don't report anything but deprecated class when marked so. Handle
6642         VAR_DECL.
6643         (patch_method_invocation): Check deprecation on methods and types.
6644         (patch_binop): code becomes an enum tree_code, added default: to
6645         switch to handle that. Detect division by zero, try to fold and
6646         return before using a subroutine.
6647
6648 2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
6649
6650         * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
6651         file smaller than 4 bytes.
6652         * parse.y (check_inner_circular_reference): New function.
6653         (check_circular_reference): Likewise.
6654         (array_initializer:): Accept {,}.
6655         (java_check_circular_reference): Rewritten using
6656         check_circular_reference and check_inner_circular_reference.
6657         (java_complete_expand_method): Unconditionally save and restore
6658         the unpurged exception list.
6659         (build_dot_class_method_invocation): Unmangle signature parameter.
6660
6661 2001-08-21  Tom Tromey  <tromey@redhat.com>
6662
6663         * decl.c (init_decl_processing): Add `throws' field to method
6664         descriptor.
6665         * class.c (make_method_value): Compute `throws' field for method.
6666
6667 2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
6668
6669         * parse.y (resolve_inner_class): Keep local_enclosing to NULL if
6670         circularity is detected.
6671         (ctors_unchecked_throws_clause_p): Fixed leading comment.
6672
6673 2001-08-17  Richard Henderson  <rth@redhat.com>
6674
6675         * class.c (emit_register_classes): Add align parameter to
6676         call to assemble_integer.
6677
6678 2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>
6679
6680         * jcf-parse.c (load_class): New locals saved and class_loaded. If
6681         loading a class_or_name fails, try considering an innerclass name
6682         and load the enclosing context.
6683         * parse.y (resolve_inner_class): New function.
6684         (find_as_inner_class): Added leading comment.
6685         (register_incomplete_type): Keep the current context as enclosing
6686         context for JDEP_FIELD dependencies.
6687         (do_resolve_class): Locals new_class_decl and super initialized to
6688         NULL. Call resolve_inner_class, explore the enclosing context
6689         superclass if necessary.
6690         Fixes PR java/4007
6691
6692 2001-08-16  Tom Tromey  <tromey@redhat.com>
6693
6694         * jcf-dump.c (main): Updated for change to jcf_path_seal.
6695         * gjavah.c (main): Updated for change to jcf_path_seal.
6696         * lang.c (version_flag): New global.
6697         (java_decode_option): Recognize `-version'.
6698         (java_init): Update for change to jcf_path_seal.
6699         * jcf.h (jcf_path_seal): Added `print' argument.
6700         * jcf-path.c (jcf_path_seal): Added `print' argument.
6701
6702 2001-08-13  Zack Weinberg  <zackw@panix.com>
6703
6704         * Make-lang.in (java/decl.o): Update dependencies.
6705         * decl.c: Include libfuncs.h, don't include toplev.h.
6706
6707 2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
6708
6709         * decl.c (init_decl_processing): exception_type_node,
6710         class_not_found_type_node, and no_class_def_found_type_node
6711         initialized. predef_filenames augmented accordingly.
6712         instinit_identifier_node initialized.
6713         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
6714         * java-tree.h (enum java_tree_index): New entries
6715         JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
6716         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
6717         (exception_type_node): New macro.
6718         (class_not_found_type_node): Likewise.
6719         (no_class_def_found_type_node): Likewise.
6720         (instinit_identifier_node): Likewise.
6721         (PREDEF_FILENAMES_SIZE): Adjusted.
6722         (TYPE_HAS_FINAL_VARIABLE): Fixed typo.
6723         (struct lang_type): Fixed typo in bitfield name.
6724         (DECL_INSTINIT_P): New macro.
6725         (ID_INSTINIT_P): Likewise.
6726         * jcf-write.c (generate_classfile): instinit$ bears the Synthetic
6727         attribute.
6728         * parse.y (encapsulate_with_try_catch): New function.
6729         (generate_instinit): Likewise.
6730         (build_instinit_invocation): Likewise.
6731         (ctors_unchecked_throws_clause_p): Likewise.
6732         (add_instance_initializer): Deleted.
6733         (build_instance_initializer): Likewise.
6734         (in_instance_initializer): Likewise.
6735         (check_method_redefinition): instinit$ not to be verified.
6736         (java_complete_expand_methods): Generate instinit$, simplified code.
6737         (build_dot_class_method): Eliminated unnecessary locals. Use
6738         encapsulate_with_try_catch, removed unnecessary code.
6739         (fix_constructors): New local iii. Use build_instinit_invocation.
6740         (patch_method_invocation): Added comment.
6741         (maybe_use_access_method): Don't consider instinit$.
6742         (find_applicable_accessible_methods_list): Shorten the search for
6743         instinit$ too.
6744         (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
6745         (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
6746         (patch_throw_statement): Likewise. Fixed typo.
6747
6748 2001-08-12  David Edelsohn  <edelsohn@gnu.org>
6749
6750         Revert:
6751         2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6752         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
6753         ASM_FINAL_SPEC.
6754         (lang_specific_pre_link): Use set_input to set input_filename.
6755         Append `main' here.
6756         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
6757         (main): Fix definition.
6758         Strip `main' from classname.
6759         Fixes PR java/227.
6760
6761 2001-08-11  Zack Weinberg  <zackw@panix.com>
6762
6763         * lex.h: Don't include setjmp.h.  Don't define
6764         SET_FLOAT_HANDLER or prototype set_float_handler.
6765
6766 2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
6767
6768         * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
6769         `poplevel' in the right order.
6770
6771 2001-08-09  Richard Henderson  <rth@redhat.com>
6772
6773         * Make-lang.in (class.o): Depend on TARGET_H.
6774         * class.c (emit_register_classes): Use target hooks instead of
6775         assemble_constructor and assemble_destructor.
6776
6777 2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>
6778
6779         * check-init.c (flags.h): Include
6780         (check_init): Don't report uninitialized static class
6781         initialization flags, don't free bit index when doing static class
6782         initialization optimization.
6783         (check_for_initialization): Return type changed to `unsigned int.'
6784         (attach_initialized_static_class): New function.
6785         * class.c (add_method_1): Create the initialized static class
6786         table if necessary.
6787         (finish_class): Always emit deferred inline methods.
6788         * decl.c (emit_init_test_initialization): Moved to expr.c
6789         (complete_start_java_method): Don't traverse
6790         DECL_FUNCTION_INIT_TEST_TABLE.
6791         (lang_mark_tree): Mark hash tables in function decls.
6792         * expr.c (emit_init_test_initialization): Moved from decl.c.
6793         (build_class_init): Create LAG_DECL_SPECIFIC for the static class
6794         initialization flag, set DECL_CONTEXT and
6795         LOCAL_CLASS_INITIALIZATION_FLAG.
6796         (java_lang_expand_expr): Emit initialization code for static class
6797         initialized flags when entering block, if necessary.
6798         * gcj.texi (-fno-optimize-static-class-initialization): Documented.
6799         * java-tree.h (flag_optimize_sci): New global variable declaration.
6800         (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
6801         (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
6802         (LOCAL_FINAL_P): Fixed typo in comment.
6803         (FINAL_VARIABLE_P): Likewise.
6804         (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
6805         (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
6806         (struct lang_decl): New fields `ict', `smic' and `cif.'
6807         (check_for_initialization): New returned value for global.
6808         (attach_initialized_static_class): New global function.
6809         (STATIC_CLASS_INIT_OPT_P): New macro.
6810         * lang-options.h (-fno-optimize-static-class-initialization): New flag.
6811         * lang.c (java_decode_option): Handle
6812         `-fno-optimize-static-class-initialization'
6813         * parse.y (start_complete_expand_method): New function.
6814         (java_expand_method_bodies): Likewise.
6815         (attach_init_test_initialization_flags): Likewise.
6816         (adjust_init_test_initialization): Likewise.
6817         (emit_test_initialization): Likewise.
6818         (java_complete_expand_methods): Nullify abstract and native method
6819         bodies.
6820         (java_complete_expand_method): New locals `fbody', `block_body'
6821         and `exception_copy.' Reorganized: directly return on empty method
6822         bodies, call `start_complete_expand_method', remember definitely
6823         initialized static class in function, don't expand method bodies.
6824         (java_expand_classes): Call `java_expand_method_bodies' before
6825         `finish_class' when compiling to native.
6826         (resolve_expression_name): Use `orig' after building outer class
6827         field access.
6828         (patch_invoke): Remember static method invocations.
6829
6830 2001-08-06  Richard Henderson  <rth@redhat.com>
6831
6832         * class.c (emit_register_classes): Pass a symbol_ref and priority
6833         to assemble_constructor.
6834
6835 2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>
6836
6837         * java-tree.h (all_class_filename): New macro.
6838         (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
6839         (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
6840         newly created IDENTIFIER_NODE to `all_class_filename.'
6841
6842 2001-08-01  Jeff Sturm  <jsturm@one-point.com>
6843
6844         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
6845         Use ggc_add_tree_root to register roots.
6846
6847 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
6848
6849         * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
6850         second operand calling check_init.
6851         * decl.c (complete_start_java_method): Swaped second and third
6852         arguments while creating WITH_CLEANUP_EXPR node.
6853         * jcf-write.c (generate_bytecode_insns): Use second operand
6854         instead of third when handling WITH_CLEANUP_EXPR.
6855         * parse.y (java_complete_lhs): Expand second operand of
6856         WITH_CLEANUP_EXPR nodes.
6857         (patch_synchronized_statement): Swaped second and third arguments
6858         while creating WITH_CLEANUP_EXPR node.
6859
6860 2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
6861
6862         * parse.y (create_interface): Avoid cyclic inheritance report when
6863         syntax error encountered during class definition.
6864         Fixes PR java/2956
6865
6866 2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6867
6868         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
6869         ASM_FINAL_SPEC.
6870         (lang_specific_pre_link): Use set_input to set input_filename.
6871         Append `main' here.
6872         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
6873         (main): Fix definition.
6874         Strip `main' from classname.
6875         Fixes PR java/227.
6876
6877 2001-07-18  Tom Tromey  <tromey@redhat.com>
6878
6879         For PR java/2812:
6880         * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
6881         * lex.c (java_new_lexer): Use ICONV_CONST.
6882         (java_read_char): Likewise.
6883         * Make-lang.in (jc1$(exeext)): Link against LIBICONV.
6884         (jv-scan$(exeext)): Likewise.
6885
6886 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
6887
6888         * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
6889         * parse.y (check_class_interface_creation): Allow `private' if the
6890         enclosing is not an interface.
6891         (create_interface): Interface tagged public if the enclosing
6892         context is an interface.
6893         (create_class): Class tagged public if the enclosing context
6894         is an interface.
6895         Fixes PR java/2959
6896
6897 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
6898
6899         * class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
6900         Fixes PR java/2665
6901
6902 2001-07-14  Tim Josling  <tej@melbpc.org.au>
6903
6904         * check-init.c (check_init): Remove references to EXPON_EXPR.
6905
6906 2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
6907
6908         * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
6909         TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
6910         Fixes PR java/3602
6911
6912 2001-07-13  Tom Tromey  <tromey@redhat.com>
6913
6914         * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
6915         invocation.
6916
6917 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
6918
6919         * parse.y (patch_method_invocation): Don't override primary if one
6920         is already provided, but let this$<n> be built. Fixed comment.
6921
6922 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
6923
6924         * parse.y (empty_statement:): Report empty statement error only
6925         when found at class declaration level.
6926         Fixes PR java/3635
6927
6928 2001-07-12  Tom Tromey  <tromey@redhat.com>
6929
6930         * expr.c (expand_load_internal): New function.
6931         (LOAD_INTERNAL): Use it.
6932
6933 2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>
6934
6935         * parse.y (verify_constructor_super): Compare anonymous class ctor
6936         args with `valid_method_invocation_conversion_p.'
6937         Fixes PR java/3285
6938
6939 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
6940
6941         * lang-specs.h: Forbit the use if `-femit-class-file{s}' without
6942         `-fsyntax-only.' Fixes PR java/3248
6943
6944 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
6945
6946         * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
6947
6948 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
6949
6950         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
6951         current function is static. Fixes PR java/1970
6952
6953 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
6954
6955         * parse.y (patch_method_invocation): Add enclosing context to ctor
6956         calls if necessary. Fixes PR java/2953
6957
6958 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
6959
6960         * parse.y (resolve_package): Abort if qualified expression member
6961         isn't right.
6962         (qualify_ambiguous_name): Don't qualify as type if `this' in use.
6963         Fixes PR java/1391
6964
6965 2001-07-07  Zack Weinberg  <zackw@stanford.edu>
6966
6967         * verify.c: Don't use // comments.
6968
6969 2001-07-05  Tom Tromey  <tromey@redhat.com>
6970
6971         * lang.c (flag_assume_compiled): Removed.
6972         * java-tree.h (flag_assume_compiled): Removed.
6973         * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
6974         -fhash-synchronization, -fuse-divide-subroutine,
6975         -fcheck-references, -femit-class-file, -femit-class-files,
6976         -fassume-compiled.  Updated --encoding information.  Changed
6977         -foutput-class-dir to `-d'.
6978
6979 2001-07-04  Daniel Berlin  <dan@cgsoftware.com>
6980
6981         * jcf-parse.c (parse_class_file): Add lineno parameter to
6982         debug_start_source_file call.
6983
6984 2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>
6985
6986         * gcj.texi: Use gpl.texi.
6987         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
6988         dependencies and use doc/include in search path.
6989
6990 2001-07-03  Jeff Sturm  <jsturm@one-point.com>
6991
6992         * parse.y (fix_constructors): Test if a CALL_EXPR invokes
6993         `this'.  If so, don't build instance initializers.
6994
6995 2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
6996
6997         * parse.y (resolve_expression_name): Improved error message for
6998         inner class cases. Fixes PR java/1958
6999
7000 2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>
7001
7002         * lang.c: #include diagnostic.h
7003         (lang_print_error): Add a `diagnostic_context *' parameter.
7004         (java_dummy_print): Likewise.
7005         * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h
7006
7007 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
7008
7009         * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
7010         * jcf.h (typedef struct JCF): New bitfield `finished.'
7011         (JCF_FINISH): Set `finished.'
7012         (JCF_ZERO): Reset `finished.'
7013         Fixes PR java/2633
7014
7015 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
7016
7017         * parse.y (class_body_declaration:): Don't install empty instance
7018         initializers.
7019         Fixes PR java/1314
7020
7021 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
7022
7023         * class.c (set_super_info): Call `set_class_decl_access_flags.'
7024         (set_class_decl_access_flags): New function.
7025         * java-tree.h (set_class_decl_access_flags): New prototype.
7026         * jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
7027         (parse_class_file): New local `decl_max_locals.' Take wide types
7028         into account to compute DECL_MAX_LOCALS.
7029         * parse.y (type_import_on_demand_declaration:): Ignore duplicate
7030         imports on demand.
7031
7032 2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>
7033
7034         * zipfile.h: Use GCC_JCF_H instead of JCF_H.
7035
7036 2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
7037
7038         * class.c (java_hash_tree_node): Fixed indentation in leading comment.
7039         * parse.y (do_resolve_class): Moved comments out to leading comment
7040         section. Removed local `start', New local `_ht' and
7041         `circularity_hash.'  Record `enclosing' in hash table and search
7042         it to detect circularity.  Use `enclosing' as an argument to
7043         `lookup_cl.' Free the hash table when done.
7044
7045 2001-06-19  Tom Tromey  <tromey@redhat.com>
7046
7047         * lex.c (java_read_char): Disallow invalid and overlong
7048         sequences.  Fixes PR java/2319.
7049
7050 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
7051
7052         * decl.c (create_primitive_vtable): Don't call make_decl_rtl.
7053
7054 2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
7055
7056         * expr.c (force_evaluation_order): Match wrapped ctor calls, locate
7057         arguments accordingly.
7058
7059 2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>
7060
7061         * gcj.texi: Move contents to just after title page.
7062
7063 2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>
7064
7065         * parse.y (type_literals:): Use `build_incomplete_class_ref' with
7066         builtin type.
7067         (patch_incomplete_class_ref): Build the class ref, build the class
7068         init if necessary, complete the tree.
7069         Fixes PR java/2605
7070
7071 2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
7072
7073         * parse.y (lookup_field_wrapper): Test `name' code.
7074         (resolve_qualified_expression_name): Test `qual_wfl' code.
7075         (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
7076         handle `qual_wfl' by code.
7077         (maybe_build_primttype_type_ref): Test `wfl' code.
7078
7079 2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
7080
7081         * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
7082         fdl.texi.
7083         (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
7084         the dvi file in the java directory.
7085
7086 2001-05-25  Sam TH  <sam@uchicago.edu>
7087
7088         * gen-table.pl javaop.h jcf.h lex.h,
7089         parse.h: Fix header include guards.
7090
7091 2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>
7092
7093         * jv-scan.c (version): Update copyright year.
7094
7095 2001-05-21  Per Bothner  <per@bothner.com>
7096
7097         * jcf-parse.c (read_class):  If class is from .class or .zip file
7098         and it's already been read, don't push/pop parser context.
7099
7100 2001-05-18  Per Bothner  <per@bothner.com>
7101
7102         * jvspec.c (lang_specific_pre_link):  Re-arrange the linker
7103         command line so the jvgenmain-generated main program comes first.
7104
7105 2001-05-15  Tom Tromey  <tromey@redhat.com>
7106
7107         * class.c (build_utf8_ref): Don't generate identifier based on
7108         utf8const contents.
7109
7110 2001-05-12  Richard Henderson  <rth@redhat.com>
7111
7112         * java-tree.def (JAVA_EXC_OBJ_EXPR): New.
7113         * expr.c (java_lang_expand_expr): Expand it.
7114         (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
7115         calling build_exception_object_ref.
7116         * parse.y (catch_clause_parameter): Likewise.
7117         (build_dot_class_method): Likewise.
7118         (try_reference_assignconv): Likewise.
7119         * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
7120         * jcf-write.c (generate_bytecode_insns): Likewise.
7121
7122 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
7123
7124         * parse.y (build_unresolved_array_type): Set
7125         EXPR_WFL_QUALIFICATION on the newly created wfl.
7126         Fixes PR java/2538. Fixes PR java/2535.
7127
7128 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
7129
7130         * parse.y (fix_constructors): Removed unnecessary assignment to
7131         local. Moved assignment to `this$<n>', fixed comments and
7132         indentation.
7133         (build_wfl_wrap): Fixed indentation.
7134         Fixes PR java/2598, java/2579 and java/2658.
7135
7136 2001-05-03  Mo DeJong  <mdejong@redhat.com>
7137
7138         * lex.c (java_new_lexer): Call iconv_close on temp handle used to
7139         check for byte swap.
7140
7141 2000-05-02  Jeff Sturm  <jsturm@one-point.com>
7142
7143         * expr.c (build_class_init): Move MODIFY_EXPR
7144         outside of COND_EXPR.  Remove variable `call'.
7145
7146 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7147
7148         * decl.c: NULL_PTR -> NULL.
7149         * jcf-write.c: Likewise.
7150
7151 2001-05-01  Tom Tromey  <tromey@redhat.com>
7152
7153         * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
7154         (java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
7155         * gcj.texi: Updated copyright text.  Include fdl.texi.
7156         (Top): Link to new node.
7157
7158 2001-05-01  Per Bothner  <per@bothner.com>
7159
7160         * parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.
7161
7162 2001-05-01  Per Bothner  <per@bothner.com>
7163
7164         * parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
7165         import_list contains the name, not the TREE_PURPOSE.
7166
7167 2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7168
7169         * jcf-io.c (read_zip_member): Cast to long in comparison with
7170         signed value.
7171
7172         * jvspec.c (lang_specific_driver): Initialize variables.
7173
7174         * mangle.c (find_compression_record_match): Likewise.
7175
7176         * typeck.c (build_null_signature): Provide static prototype.  Mark
7177         parameter with ATTRIBUTE_UNUSED.
7178
7179         * verify.c (verify_jvm_instructions): Initialize variable.
7180
7181 2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7182
7183         * parse.y (do_resolve_class): Check for cyclic inheritance during
7184         inner class resolution.
7185
7186 2001-04-27  Per Bothner  <per@bothner.com>
7187
7188         * parse.y (java_expand_classes):  Don't change ctxp_for_generation
7189         while iterating, since that could cause gc to lose stuff.
7190
7191 2001-04-26  Per Bothner  <per@bothner.com>
7192
7193         Fix method search wrt scope of inner classes to match JLS2.
7194         * typeck.c (build_null_signature):  New static function.
7195         (has_method):  New function.  Uses build_null_signature and lookup_do.
7196         * java-tree.h (has_method):  New declaration.
7197         * parse.y (find_applicable_accessible_methods_list):  Do not search
7198         context of inner classes here.
7199         (patch_method_invocation):  Search scope, ie. current and outer clases,
7200         for method matching simple name, to find class.
7201
7202 2001-04-26  Per Bothner  <per@bothner.com>
7203
7204         * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
7205         Fix thinko:  If a single case, use if_icmpeq, not ifeq.
7206
7207         * constants.c (find_methodref_with_class_index):  New function.
7208         (find_methodref_index):  Use find_methodref_with_class_index.
7209         * java-tree.h (find_methodref_with_class_index):  New declaration.
7210         * jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
7211         DECL_CONTEXT, instead use new find_methodref_with_class_index function.
7212         If context changed from interface to class, don't use invokeinterface.
7213
7214 2001-04-25  Per Bothner  <per@bothner.com>
7215
7216         * verify.c (verify_jvm_instructions):  For field instructions,
7217         check that field index is valid.  For invoke instructions, check that
7218         method index is valid.
7219
7220 2001-04-25  Alexandre Oliva  <aoliva@redhat.com>
7221
7222         * config-lang.in (target_libs): Copy from $libgcj_saved.
7223
7224 2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7225
7226         * decl.c (init_decl_processing): Add new class "protectionDomain"
7227         field.
7228         * class.c (make_class_data): Set initial value for "protectionDomain".
7229
7230 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7231
7232         * jvspec.c (lang_specific_driver): Fix memory allocation
7233         deficit, by using concat in lieu of xmalloc/sprintf.
7234
7235 2001-04-20  Per Bothner  <per@bothner.com>
7236
7237         Fixes to compile multiple .class files at once.
7238         * decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
7239         * java-tree.h (CLASS_PARSED_P):  New macro.
7240         (CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
7241         * jcf-parse.c (jcf_parse_source):  Inline into read_class.
7242         (read_class):  Avoid some code duplication.
7243         Don't call JCF_FINISH for a .class file - might be needed later.
7244         (jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
7245         rather than CLASS_LOADED_P, since latter implies class laid out.
7246         (yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
7247         * parse.y:  Don't need to set CLASS_LOADED_P for array types.
7248
7249 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7250
7251         * Make-lang.in (java/boehm.o): Depend on toplev.h.
7252
7253         * boehm.c: Include toplev.h.
7254
7255 2001-04-06  Tom Tromey  <tromey@redhat.com>
7256             Alexandre Petit-Bianco  <apbianco@redhat.com>
7257
7258         Fix for PR gcj/1404 and PR gcj/2332:
7259         * parse.y (build_array_from_name): If we use the type_wfl then
7260         accumulate dimensions from the original type as well.
7261         (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
7262
7263 2001-04-06  Tom Tromey  <tromey@redhat.com>
7264
7265         * parse.y (analyze_clinit_body): Return true if the second operand
7266         of a METHOD_EXPR is nonzero.
7267
7268 2001-04-06  Tom Tromey  <tromey@redhat.com>
7269
7270         * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
7271         directory.
7272         ($(srcdir)/java/parse.c): Likewise.
7273
7274 2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
7275
7276         * gcj.texi: Use `which-gcj' instead of `which-g77.'
7277         (version-gcc): Initialized.
7278         (which-gcj): Likewise.
7279
7280 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
7281
7282         * java-tree.h (struct lang_decl): New macro
7283         `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
7284         * parse.y (build_instance_initializer): New function.
7285         (add_instance_initializer): Use it.
7286         (java_fix_constructors): Set `current_class' before fix pass.
7287         (fix_constructors): Just return if already fixed. Move `super()'
7288         invocation ahead. Use `build_instance_initializer.'
7289         Fixes PR java/1315.
7290
7291 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
7292
7293         * parse.y (resolve_qualified_expression_name): Pass field's
7294         DECL_CONTEXT to `not_accessible_p.'
7295         (not_accessible_p): Changed parameters order in `inherits_from_p'
7296         invocation.
7297
7298 2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>
7299
7300         * lang-options.h: Add flag_check_references.
7301
7302 2001-04-04  Per Bothner  <per@bothner.com>
7303
7304         * java-tree.h (CONSTANT_VALUE_P):  New macro.
7305         * jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
7306         * parse.y (maybe_build_class_init_for_field):  New static function.
7307         (resolve_expression_name, resolve_field_access):  Use
7308         maybe_build_class_init_for_field instead of build_class_init
7309         This does not do the init if the field is compile-time-constant.
7310         (resolve_field_access):  Simplify.
7311
7312         * parse.y (fold_constant_for_init):  Merge test into switch.
7313
7314 2001-04-03  Zack Weinberg  <zackw@stanford.edu>
7315
7316         * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
7317         on gansidecl.h.
7318         * buffer.c, jvgenmain.c: Don't include gansidecl.h.
7319
7320 2001-04-02  Zack Weinberg  <zackw@stanford.edu>
7321
7322         * expr.c (pop_type_0): Save the result of the first
7323         lang_printable_name call in a scratch buffer, so it
7324         won't be clobbered by the second call.
7325
7326 2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
7327
7328         * parse-scan.y (array_type:): Rewritten.
7329         (type_declaration:): `empty_statement' replaces `SC_TK.'
7330         (class_member_declaration:): `empty statement' added.
7331         (method_body:): Simplified.
7332         (static_initializer:): Likewise.
7333         (primary_no_new_array:): Use `type_literals.'
7334         (type_literals:): New rule.
7335         (dims:): Set and update `bracket_count.'
7336         Fixes PR java/1074. Fixes PR java/2412.
7337
7338 2001-03-28  Hans Boehm  <boehm@acm.org>
7339
7340         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
7341         (get_boehm_type_descriptor): Set type on returned value to be a
7342         pointer length integer.
7343
7344 2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7345
7346         * expr.c (pop_type_0): Call `concat' rather than building the
7347         string manually.
7348         (pop_type): Add format specifier in call to `error'.
7349
7350         * parse.y (patch_method_invocation): Avoid casting away
7351         const-ness.
7352
7353 2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>
7354
7355         * jvgenmain.c (do_mangle_classname): End string constant with '\0'.
7356
7357 2001-03-28  Richard Henderson  <rth@redhat.com>
7358
7359         IA-64 ABI Exception Handling:
7360         * Make-lang.in (except.o): Don't depend on eh-common.h.
7361         * check-init.c (check_init): Handle EXC_PTR_EXPR.
7362         * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
7363         [soft_exceptioninfo_call_node]: Remove.
7364         [eh_personality_libfunc, lang_eh_runtime_type]: New.
7365         (end_java_method): No emit_handlers.
7366         * except.c (java_set_exception_lang_code): Remove.
7367         (method_init_exceptions): Don't call it.
7368         (prepare_eh_table_type): No CATCH_ALL_TYPE.
7369         (build_exception_object_ref): New.
7370         (expand_end_java_handler): Update for except.h name changes.
7371         (emit_handlers, expand_resume_after_catch): Remove.
7372         * expr.c (java_lang_expand_expr): Update for except.h name changes.
7373         (process_jvm_instruction): Use build_exception_object_ref.
7374         * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
7375         (soft_exceptioninfo_call_node): Remove.
7376         (build_exception_object_ref): Declare.
7377         * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
7378         soft_exceptioninfo_call_node.  Move processing ...
7379         [EXC_PTR_EXPR]: ... here.
7380         * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
7381         * parse.y (catch_clause_parameter): Use build_exception_object_ref.
7382         (source_end_java_method): No java_set_exception_lang_code or
7383         emit_handlers.
7384         (build_dot_class_method): Use build_exception_object_ref.
7385         (try_reference_assignconv): Check EXC_PTR_EXPR not
7386         soft_exceptioninfo_call_node.
7387
7388 2001-03-28  Richard Henderson  <rth@redhat.com>
7389
7390         * java-tree.h (throw_node): Define as a single member of
7391         java_global_trees instead of a separate array.
7392         (JTI_THROW_NODE): New.
7393         * decl.c (throw_node): Don't declare.
7394         (init_decl_processing): Init a scalar throw_node.
7395         Don't register it for gc.
7396         * check-init.c (check_init): Reference scalar throw_node.
7397         * expr.c (build_java_athrow): Likewise.
7398         * jcf-write.c (generate_bytecode_insns): Likewise.
7399         * parse.h (BUILD_THROW): Likewise.
7400
7401 2001-03-28  Richard Henderson  <rth@redhat.com>
7402
7403         * decl.c (end_java_method): Do not save and restore
7404         flag_non_call_exceptions.
7405         * parse.y (source_end_java_method): Likewise.
7406         * lang.c (flag_exceptions): Don't declare.
7407         (java_init_options): Set flag_non_call_exceptions.  Set
7408         flag_exceptions here ...
7409         (java_init): ... not here.
7410
7411 2001-03-27  Richard Henderson  <rth@redhat.com>
7412
7413         * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
7414         exceptions_via_longjmp.
7415
7416         * lang.c (flag_new_exceptions): Don't declare it.
7417         (java_init_options): Or set it.
7418
7419 2001-03-27  Richard Henderson  <rth@redhat.com>
7420
7421         * decl.c (end_java_method): Rename asynchronous_exceptions to
7422         flag_non_call_exceptions.
7423         * parse.y (source_end_java_method): Likewise.
7424
7425 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7426
7427         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
7428
7429 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
7430
7431         * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.
7432
7433 2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
7434
7435         * parse.y (find_as_inner_class): Follow current package
7436         indications not to mistakingly load an unrelated class.
7437
7438 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7439
7440         * constants.c (PUTN): Use memcpy, not bcopy.
7441
7442         * lex.c (java_read_char): Use memmove, not bcopy.
7443
7444         * parse.y (java_parser_context_resume): Use memcpy, not bcopy.
7445
7446 2001-03-23  Per Bothner  <per@bothner.com>
7447
7448         * verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
7449         macro for better error pin-pointing.
7450         * java-tree.h:  Fix typo in comment.
7451
7452         * jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
7453         Don't include jsr/goto in exception range.
7454         Check if start and end of exception range are the same (also TRY_EXPR).
7455         Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
7456         However, do emit the following goto even if try_block is empty.
7457         Defer freeing exception_decl until after the finalizer, to make
7458         sure the local isn't reused in the finalizer.  Fixes PR java/1208.
7459
7460         * parse.y (java_complete_lhs):  If the try-clause is empty, just
7461         return the finally-clause and vice versa.
7462
7463 2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
7464
7465         * gcj.texi (Input Options): documented the check for attribute
7466         `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
7467         * java-tree.h (flag_force_classes_archive_check): Declared extern.
7468         * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
7469         (jcf_parse): Check for the right classes archive if necessary.
7470         * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
7471         (jcf_parse_fields): Fixed indentation.
7472         * jcf-write.c (append_gcj_attribute): New function.
7473         (generate_classfile): Compute the attribute count, invoke
7474         `append_gcj_attribute'.
7475         * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
7476         turned into bit-fields. New bit-field `right_zip.'
7477         (JCF_ZERO): Set `right_zip' to zero.
7478         * lang-options.h (-fforce-classes-archive-check): Added flag.
7479         * lang.c (flag_force_classes_archive_check): New flag.
7480         (lang_f_options): New entry `force-classes-archive-check.'
7481         Fixes PR java/1213.
7482
7483 2001-02-07  Andrew Haley  <aph@redhat.com>
7484
7485         * gcj.texi (Configure-time Options): Add -fcheck-references.
7486         * expr.c (build_java_indirect_ref): New function.
7487         (java_check_reference): New function.
7488         (build_java_array_length_access): Use build_java_indirect_ref to
7489         check for null references.
7490         (build_java_arrayaccess): Likewise.
7491         (build_get_class): Likewise.
7492         (build_field_ref): Likewise.
7493         (invoke_build_dtable): Likewise.
7494         (build_invokeinterface): Likewise.
7495         * lang.c (lang_f_options): Add flag_check_references.
7496         * jvspec.c (jvgenmain_spec): Add flag_check_references.
7497         * java-tree.h (flag_check_references): New variable.
7498         * lang.c (flag_check_references): Likewise.
7499         * parse.y (patch_invoke): Use java_check_reference.
7500         (patch_assignment): Allow for extra nesting in
7501         _Jv_CheckArrayStore.
7502
7503 2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>
7504
7505         * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
7506         * lex.c (cxx_keywords): Likewise.
7507
7508 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
7509
7510         * parse.y (qualify_ambiguous_name): Broaden `length'
7511         recognition. Help MODIFY_EXPR be resolved as expression names.
7512         Fixes PR java/2066. Fixes PR java/2400.
7513
7514 2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>
7515
7516         * gjavah.c (process_file): Mark interface definitions with
7517         "__attribute__ ((java_interface))".
7518
7519 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
7520
7521         * class.c (layout_class): Fixed push_super_field's second
7522         argument. Fixes PR java/2333.
7523         (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
7524         too early to lay innerclasses out.
7525
7526 2001-03-20  Tom Tromey  <tromey@redhat.com>
7527             Alexandre Petit-Bianco <apbianco@redhat.com>
7528
7529         * parse.y (patch_assignment): Handle the case of a SAVE_EXPR
7530         inside an array reference. Insertion of the array store check
7531         rewritten. Fixes PR java/2299.
7532
7533 2001-03-20  Tom Tromey  <tromey@redhat.com>
7534
7535         * lex.c (java_read_unicode): Only accept leading `u's.
7536
7537 2001-03-20  Tom Tromey  <tromey@redhat.com>
7538
7539         * jcf-parse.c (read_class): Initialize `class'.
7540
7541 2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
7542
7543         * jcf_parse.c (jcf_parse): Eliminate unused variable.
7544
7545 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
7546
7547         * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
7548         (layout_class): Likewise.
7549         (layout_class_method): Likewise.
7550         (emit_register_classes): Likewise.
7551         * decl.c (builtin_function): Likewise.
7552         (give_name_to_locals): Likewise.
7553
7554 2001-03-19  Per Bothner  <per@bothner.com>
7555
7556         * jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
7557         before trying to load an inner class.
7558
7559         Fixes to process to command-line .class files in two passes.
7560         * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
7561         (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
7562         (CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
7563         * class.c (is_compiled_class):  Fix for renamed flag.
7564         * parse.y (maybe_create_class_interface_decl):  Likewise.
7565         * jcf-parse.c (yyparse):  Also set if compiling .class files.
7566         * jcf-parse.c (read_class);  Read current_class.
7567         (jcf_parse):  Make static.
7568         (load_inner_classes):  New function, with code moved from jcf_parse,
7569         because we need to inner classes after the command-line files are read.
7570         (yyparse):  Set finput to NULL when it doesn't need to be closed.
7571         Reduce use of main_jcf (basically only for archive) and
7572         use finput instead of main_jcf->read_state.
7573         Inline jcf_figure_file_type into yyparse.
7574         Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
7575         Defer load_inner_classes and parse_class_file to a second pass,
7576         after we've correctly mapped command-line .clas fiels to classes.
7577         (jcf_figure_file_type):  Removed.
7578         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
7579         (JCF_ZERO):  Also clear zipd field.
7580         * zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.
7581
7582 2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
7583
7584         * jcf-parse.c (yyparse): Change ch from char * to char.
7585
7586 2001-03-19  Per Bothner  <per@bothner.com>
7587
7588         * jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
7589         Add constructed filelist-file at end, following -xjava.  Thus any .o
7590         and library files are not affected by the -xjava.  Also wrap
7591         explicit @FILE with -xjava and -xnone.
7592
7593 2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>
7594
7595         * class.c (build_static_field_ref): Call make_decl_rtl() after
7596         setting the DECL_EXTERNAL flag.
7597
7598 2001-03-17  Per Bothner  <per@bothner.com>
7599
7600         * decl.c (clear_binding_level):  Fix initializer (broke 03-15).
7601
7602         * jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
7603         when result is is needed (target is STACK_TARGET).
7604
7605         * parse.h (JDEP_SOLV):  Removed.
7606         * parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.
7607
7608         * parse.y (incomplete_class_list): Removed.
7609         (obtain_incomplete_type): Don't use or set incomplete_class_list.
7610         It doesn't work if resolve_class changes the name of an array type
7611         that is on the list and then someone else looks for the modified name.
7612         Also, seems liable to break when compiling multiple source files at
7613         once.  So the simplest is to just remove incomplete_class_list -
7614         it is only a minor space win and it is not even clear it saves time.
7615
7616         * parse.y (resolve_class):  Remove unneeded promote_type.
7617
7618 2001-03-15  Per Bothner  <per@bothner.com>
7619
7620         * java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
7621         * parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
7622         * parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
7623         Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.
7624
7625         * jcf-parse.c (yyparse):  Set/reset input_filename for source file.
7626         * parse.y (java_expand_classes):  Likewise.
7627
7628         * parse.y (expand_start_java_method):  Was only called once and had a
7629         misleading name, so inline in caller java_complete_expand_method.
7630         (enter_a_block):  Likewise inline in enter_block and remove.
7631
7632         Remove junk from when gcc/java was created (by copying from C/C++).
7633         * decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
7634         (struct binding_level):  Remove fields keep, keep_if_subblocks,
7635         more_cleanups_ok, have_cleanups (which have never been used).
7636         (pushlevel, poplevel):  Remove related useless code.
7637
7638         * class.c (make_class_data):  The class_dtable_decl (i.e. the
7639         vtable for Class) should be external, except when compiling Class.
7640
7641         * jvspec.c (lang_specific_driver):  Fix -C handling.
7642         Check -save-temps to see if temp @FILE should be deleted.
7643         Follow-up to/fix for February 16 patch.
7644
7645         * verify.c (verify_jvm_instructions):  Better error msgs for dup.
7646         (type_stack_dup):  Remove no-longer neded error check.
7647
7648 2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>
7649
7650         * mangle.c (mangle_record_type): Rename 'from_pointer' argument
7651         to 'for_pointer'. If this type is for a pointer (argument) mangling,
7652         don't surround the element with 'N..E' if the type name is
7653         unqualified.
7654
7655 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
7656
7657         * class.c (build_static_field_ref): Use COPY_DECL_RTL,
7658         DECL_RTL_SET_P, etc.
7659         (make_method_value): Likewise.
7660         (get_dispatch_table): Likewise.
7661
7662         * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
7663
7664 2001-03-07  Tom Tromey  <tromey@redhat.com>
7665
7666         * config-lang.in (lang_requires): Define.
7667
7668 2001-03-07  Brad Lucier  <lucier@math.purdue.edu>
7669
7670         * typeck.c (convert): Check flag_unsafe_math_optimizations,
7671         not flag_fast_math.
7672
7673 2001-03-05  Per Bothner  <per@bothner.com>
7674
7675         Fix a problem where rest_of_decl_compilation applied to
7676         class_dtable_decl causes problems because it was done too early,
7677         before output file was opened.
7678         * decl.c (init_decl_processing):  Remove init of class_dtable_decl.
7679         * class.c (class_dtable_decl):  Add macro - element of class_roots.
7680         (make_class_data):  Define class_dtable_decl.
7681         * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.
7682
7683 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
7684
7685         * java/class.c, java/decl.c, java/java-tree.h: Replace all
7686         uses of 'boolean' with 'bool'.
7687
7688 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
7689
7690         * lang-specs.h: Add zero initializer for cpp_spec field to all
7691         array elements.
7692
7693 2001-02-16  Per Bothner  <per@bothner.com>
7694
7695         Handle compiling multiple input files at once, and @FILE syntax.
7696         * gcj.texi:  Updated documentation to match.
7697         * java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
7698         * jcf-parse.c (parse_source_file):  Split into ...
7699         (parse_source_file_1):  New function - and:
7700         (parse_source_file_2):  New function.
7701         (yyparse):  On -ffilelist-file, open and scan named file.
7702         On first pass over files, only do parse_source_file_1.
7703         A new second pass calls parse_source_file_2 for each file to compile.
7704         (init_jcf_parse):  Call init_src_parse.
7705         * jvspec.c (INDIRECT_FILE_ARG):  New flag.
7706         (lang_specific_driver):  Support @FILELIST-FILE syntax, as well
7707         as multiple input file combined in one compilation.
7708         * lang-options.h:  Add -ffilelist-file
7709         * lang.c (flag_filelist_file):  New flag variable.
7710         (lang_f_options):  Handle -ffilelist-file.
7711         * lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
7712         * parse.h (struct parse_ctxt):  Remove fields incomplete_class and
7713         gclass_list - use global fields of src_parse_roots instead.
7714         * parse.y (src_parse_roots):  New array.
7715         (incomplete_class_list, gclass_list):  New macros.
7716         (push_parser_context, java_pop_parser_context,
7717         java_parser_context_resume):  Don't fiddle with deleted fields.
7718         (various):  Use incomplete_class gclass_list and global macros
7719         instead of parse_ctxt fields - the lists are global.
7720         (init_src_parse):  New function.
7721
7722 2001-02-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7723
7724         * decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
7725
7726 2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
7727
7728         * parse.y (check_inner_class_access): Moved declaration of local
7729         `enclosing_decl_type' to the right location.
7730
7731 2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>
7732
7733         * parse.y (parser_check_super_interface): Don't call
7734         check_pkg_class_access for an inner interface.
7735         (parser_check_super): Don't call check_pkg_class_access for inner
7736         class.
7737         (do_resolve_class): Simplify enclosing type loop. Don't call
7738         check_pkg_class_access if CL and DECL are not set.
7739         (find_in_imports_on_demand): Set DECL if class_type needed to be
7740         loaded. Don't call check_pkg_class_access for an inner class.
7741         (check_inner_class_access): Rewritten to implement member access
7742         rules as per spec 6.6.1.
7743         (check_pkg_class_access): Handle the empty package correctly.
7744         (in_same_package): New function. Determine if two classes are in the
7745         same package.
7746
7747 2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>
7748
7749         * typeck.c (build_java_array_type): Don't try to poke a public `clone'
7750         method into array types.
7751         * parse.y (patch_method_invocation): Bypass access check on clone call
7752         to array instance.
7753
7754 2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
7755
7756         * expr.c (build_instanceof): Check for arrays when trying fold to
7757         false.
7758
7759 2001-02-15  Jim Meyering  <meyering@lucent.com>
7760
7761         * Make-lang.in (java.install-common): Depend on `installdirs'.
7762         (java.install-info): Likewise.
7763
7764 2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>
7765
7766         * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.
7767
7768 2001-02-14  Tom Tromey  <tromey@redhat.com>
7769             Alexandre Petit-Bianco  <apbianco@cygnus.com>
7770
7771         Fix for PR java/1261.
7772         * typeck.c (build_java_array_type): Add public `clone' method to
7773         arrays.
7774         * parse.y (resolve_qualified_expression_name): Use current_class
7775         when checking for inaccessibility.
7776         (patch_method_invocation): Fixed error message when accessibility
7777         denied.  Added `from_super' argument.
7778
7779 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
7780
7781         * parse.y (resolve_class): Don't build a fake decl. Use the one
7782         already built.
7783         * typeck.c (build_java_array_type): Build and assign decl to array
7784         type.
7785
7786 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
7787
7788         * parse.y (not_accessible_p): Changed leading comment. Added extra
7789         `where' argument. Use it to enforce protected access rules.
7790         (resolve_qualified_expression_name): Added extra argument to
7791         not_accessible_p.
7792         (patch_method_invocation): Use argument `primary' to provide
7793         not_accessible_p with an extra argument.
7794         (lookup_method_invoke): Added extra argument to not_accessible_p.
7795         (search_applicable_method_list): Likewise.
7796
7797 2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
7798
7799         * parse.y (resolve_qualified_expression_name): Try to resolve as
7800         an inner class access only if `decl' is a TYPE_DECL.
7801
7802 2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7803
7804         * decl.c (classdollar_identifier_node): Initialize.
7805         * java-tree.h (enum java_tree_index): New entry
7806         `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
7807         (classdollar_identifier_node): New macro.
7808         (ID_CLASSDOLLAR_P): Likewise.
7809         * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
7810         (build_dot_class_method_invocation): Likewise.
7811         (find_applicable_accessible_methods_list): `class$' can't be
7812         inherited.
7813
7814 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
7815
7816         * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
7817
7818 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
7819
7820         * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
7821         * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
7822         gone.
7823
7824 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
7825
7826         * mangle_name (append_unicode_mangled_name): Emit `_' or `U'
7827         outside of the `__U' sequence too.
7828         (unicode_mangling_length): Count `_' or `U' outside of the `__U'
7829         sequence too.
7830
7831 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
7832
7833         * jvgenmain.c (error): Reversed 2001-02-01 deletion.
7834
7835 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7836
7837         * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
7838         (JVGENMAIN_OBJS): Likewise.
7839         * java-tree.h (append_gpp_mangled_name): New prototype.
7840         * jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
7841         Removed cast calling `gcc_add_root.'
7842         * jvgenmain.c (mangle_obstack): New global, initialized.
7843         (main): Use it.
7844         (do_mangle_class): Constify local `ptr.'
7845         Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
7846         append_gpp_mangle_name and update `count' if necessary.
7847         Use `mangle_obstack.'
7848         * mangle.c (append_unicode_mangled_name): Removed.
7849         (append_gpp_mangled_name): Likewise.
7850         (unicode_mangling_length): Likewise.
7851         (mangle_member_name): Return type set to `void.'
7852         (mangle_field_decl): Don't append `U' in escaped names.
7853         (mangle_method_decl): Likewise.
7854         (mangle_member_name): Just use `append_gpp_mangled_name.'
7855         * mangle_name.c: New file.
7856
7857 2001-02-07  Per Bothner  <per@bothner.com>
7858
7859         * check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.
7860
7861         * check-init.c (check_init):  Don't call done_alternative after
7862         processing loop code, as a LOOP_EXPR never terminates normally.
7863
7864 2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
7865
7866         * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.
7867
7868 2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7869
7870         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
7871         DECLs.
7872
7873 2001-02-06  Tom Tromey  <tromey@redhat.com>
7874
7875         * lex.c (java_new_lexer): Longer error message.
7876
7877 2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
7878             Alexandre Petit-Bianco  <apbianco@cygnus.com>
7879
7880         * typeck.c (build_prim_array_type): Added leading comment.
7881         (build_java_array_type): Moved locals out of
7882         block. Always create the `data' field, fixed alignment to match
7883         C++.
7884
7885 2001-02-04  Tom Tromey  <tromey@redhat.com>
7886
7887         * expr.c (java_lang_expand_expr): Don't bother recomputing
7888         `length'.  Use rest_of_decl_compilation, not make_decl_rtl.
7889         Fixes PR java/1866.
7890
7891 2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7892
7893         * parse.y (process_imports): Save the original name of the import
7894         for better error report.
7895
7896 2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>
7897
7898         * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
7899         of macros used when compiling jvspec.c.
7900         * jvspec.c (lang_specific_driver): Link with the shared
7901         libgcc by default.
7902
7903 2001-02-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7904
7905         * check-init.c (check_init): Call internal_error instead of fatal.
7906         * expr.c (java_lang_expand_expr): Likewise.
7907         * jcf-parse.c (get_constant): Likewise.
7908         * mangle.c (java_mangle_decl): Likewise.
7909         * parse.y (make_nested_class_name, java_complete_lhs): Likewise.
7910         (operator_string): Likewise.
7911         * check-init.c (check_init): Call abort instead of fatal.
7912         * class.c (build_class_ref): Likewise.
7913         * constants.c (write_constant_pool): Likewise.
7914         * decl.c (start_java_method): Likewise.
7915         * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
7916         (java_stack_dup, encode_newarray_type): Likewise.
7917         (build_java_array_length_access): Likewise.
7918         (build_java_check_indexed_type, expand_java_pushc): Likewise.
7919         (build_java_soft_divmod, build_invokeinterface): Likewise.
7920         * java-tree.h (INNER_CLASS_P): Likewise.
7921         * jcf-parse.c (parse_signature, get_name_constant): Likewise.
7922         (give_name_to_class, get_class_constant): Likewise.
7923         * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
7924         (find_constant_index, generate_bytecode_conditional): Likewise.
7925         (generate_bytecode_insns, perform_relocations): Likewise.
7926         * lex.c (java_unget_unicode, java_lex): Likewise.
7927         * mangle.c (mangle_type, mangle_record_type): Likewise.
7928         (mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
7929         (finish_mangling): Likewise.
7930         * parse.h (MARK_FINAL_PARMS): Likewise.
7931         * parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
7932         (obtain_incomplete_type, java_complete_class): Likewise.
7933         (java_check_regular_methods, java_complete_expand_method): Likewise.
7934         (cut_identifier_in_qualified, check_deprecation): Likewise.
7935         (patch_invoke, find_applicable_accessible_methods_list): Likewise.
7936         (java_complete_lhs, lookup_name_in_blocks): Likewise.
7937         (check_final_variable_indirect_assignment, build_unaryop): Likewise.
7938         * typeck.c (set_local_type, parse_signature_type): Likewise.
7939         (parse_signature_string, build_java_signature): Likewise;
7940         (set_java_signature): Likewise.
7941         * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
7942         * class.c (add_method): Call fatal_error instead of fatal.
7943         (build_static_field_ref): Likewise.
7944         * expr.c (build_known_method_ref, expand_invoke): Likewise.
7945         * jcf-parse.c (get_constant, jcf_parse): Likewise.
7946         * lex.c (java_new_new_lexer): Likewise.
7947         * jv-scan.c (main): Likewise.
7948         (fatal_error): Renamed from fatal.
7949         * jcf-parse.c (yyparse): Call fatal_io_error instead of
7950         pfatal_with_name.
7951         * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
7952         (yyparse): Likewise.
7953         * jcf-write.c (make_class_file_name, write_classfile): Likewise.
7954         * lex.c (java_get_line_col): Likewise.
7955         * jcf-parse.c (load_class): Make errors non-fatal.
7956         * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
7957
7958 2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>
7959
7960         * jvgenmain.c (class_mangling_suffix): Remove unused string.
7961         (error): Remove unused function.
7962         (main): Don't use "__attribute__ alias" on generated class symbol.
7963
7964 2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7965
7966         * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
7967         argument.
7968         * parse.y (finish_method_declaration): Code accounting for WFLed
7969         method DECL_NAMEs deleted.
7970         (check_abstract_method_definitions): Likewise.
7971         (resolve_type_during_patch): Layout resolved type.
7972         * typeck.c (lookup_do): Removed unused local.
7973
7974 2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>
7975
7976         * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
7977         * decl.c (init_decl_processing): Use integer_minus_one_node, not
7978         integer_negative_one_node.
7979         * expr.c (build_java_binop): Likewise.
7980
7981 2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>
7982
7983         * zextract.c (read_zip_archive): Read file_offset before writing
7984         zipd and consequently clobbering the header contents.
7985
7986 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7987
7988         * Make-lang.in: Remove all dependencies on defaults.h.
7989         * decl.c: Don't include defaults.h.
7990         * expr.c: Likewise.
7991         * parse.y: Likewise.
7992
7993 2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7994
7995         * ChangeLog (2001-01-21): Fixed typo.
7996         * class.c (layout_class_method): Code accounting for WFLed
7997         method DECL_NAMEs deleted.
7998         * constant.c (find_methodref_index): Likewise.
7999         * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
8000         * java-tree.h (DECL_FUNCTION_WFL): New macro.
8001         (struct lang_decl): New field `wfl'.
8002         (java_get_real_method_name): Prototype deleted.
8003         * mangle.c (mangle_method_decl): Code accounting for WFLed
8004         method DECL_NAMEs deleted.
8005         * parse.h (GET_METHOD_NAME): Macro deleted.
8006         * parse.y (reset_method_name): Deleted.
8007         (method_header): Set DECL_FUNCTION_WFL.
8008         (check_abstract_method_header): Code accounting for WFLed method
8009         DECL_NAMEs deleted.
8010         (java_get_real_method_name): Deleted.
8011         (check_method_redefinition): Code accounting for WFLed method
8012         DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
8013         (java_check_regular_methods): Likewise.
8014         (java_check_abstract_methods): Likewise.
8015         (java_expand_classes): Don't call `reset_method_name.'
8016         (search_applicable_method_list): Use DECL_NAMEs instead of
8017         GET_METHOD_NAME.
8018         * typeck.c (lookup_do): Code accounting for WFLed method
8019         DECL_NAMEs deleted.
8020
8021 2001-01-25  Richard Earnshaw  <rearnsha@arm.com>
8022
8023         * lex.c (java_read_char): Check for EOF from getc first.
8024
8025 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8026
8027         * class.c (layout_class): Don't lay the superclass out if it's
8028         already being laid out.
8029         * jcf-parse.c (handle_innerclass_attribute): New function.
8030         (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
8031         handle_innerclasses_attribute.
8032         (jcf_parse): Don't load an innerclasses if it's already being
8033         laid out.
8034         * jcf-write.c (append_innerclass_attribute_entry): Static
8035         `anonymous_name' and its initialization deleted. `ocii' and `ini'
8036         to be zero for anonymous classes.
8037
8038 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8039
8040         * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
8041         necessary.
8042         * jcf-parse.c (set_source_filename): Use
8043         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
8044
8045 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8046
8047         * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
8048         gets a unique asm name.
8049
8050 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8051
8052         * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
8053         (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
8054         if necessary.
8055         (HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
8056         * jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
8057         * parse.y (lookup_package_type_and_set_next): Deleted.
8058         (resolve_package): Removed unnecessary code.
8059         (find_applicable_accessible_methods_list): `finit$' can't be
8060         inherited.
8061         * verify.c (pop_argument_types): Added missing prototype.
8062
8063 2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>
8064
8065         * config-lang.in: Disable java by default.
8066
8067 2001-01-23  Tom Tromey  <tromey@redhat.com>
8068
8069         * gcj.texi (Copying): New node.
8070         Added copyright information.
8071
8072 2001-01-21  Per Bothner  <per@bothner.com>
8073
8074         Various fixes to allow compiling a compressed .jar/.zip archive.
8075         * zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
8076         (struct ZipFile):  Add fields name and next (from  ZipFileCache).
8077         (struct ZipDirectory):  New field zipf points to owning ZipFile.
8078         * jcf.h (struct ZipDirectory):  Add forward declaration.
8079         (struct JCF):   Declare zipd field to have type struct ZipDirectory.
8080         Remove seen_in_zip and zip_offset fields.
8081         (JCF_SEEN_IN_ZIP):  New macro.
8082         * zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
8083         * jcf-io.c:  Change all ZipFileCache to ZipFile.
8084         (read_zip_member):  New function.
8085         (open_in_zip):  Call read_zip_member.
8086         * jcf-parse.c (find_in_current_zip):  Remove function.
8087         (read_class):  Merge in find_in_current_zip functionality.
8088         Call read_zip_member if needed.
8089         (parse_zip_file_entries):  Use read_zip_member.
8090         (process_zip_dir):  Update for removed and added JCF fields.
8091         (jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.
8092
8093 2001-01-21  Per Bothner  <per@bothner.com>
8094
8095         Minor optimization of static ggc roots.
8096         * jcf-parse.c (parse_roots):  New static field.
8097         (current_field, current_method, current_file_list):  Replace by macros
8098         naming fields of parse_roots.
8099         (init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
8100         * class.c (class_roots):  New static field.
8101         (registered_class, fields_ident, info_ident, class_list):
8102         New macros naming fields of parse_roots.
8103         (build_static_field_ref):  Don't register roots here.
8104         (layout_class):  Static field list replaced by macro class_list.
8105         (init_class_processing):  Call ggc_add_tree_root for 4 roots.
8106         Initialize fields_ident and info_ident here.
8107
8108 2001-01-21  Per Bothner  <per@bothner.com>
8109
8110         * jcf-parse.c (ggc_mark_jcf):  New function.
8111         (init_jcf_parse):  Register current_jcf as ggc root.
8112
8113 2001-01-21  Per Bothner  <per@bothner.com>
8114
8115         * lang.c (put_decl_node):  Print method's name.
8116
8117 2001-01-21  Per Bothner  <per@bothner.com>
8118
8119         * verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
8120         (verify_jvm_instructions):  Use it, for better error messages on loads.
8121
8122 2001-01-21  Per Bothner  <per@bothner.com>
8123
8124         * verify.c (merge_type_state):  Still may have to merge even if
8125         LABEL_VERIFIED (label).
8126
8127 2001-01-21  Per Bothner  <per@bothner.com>
8128
8129         * parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
8130         to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
8131
8132 2001-01-19  Per Bothner  <per@bothner.com>
8133
8134         * expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
8135         if expeting an interface type.  Refines Tom's change of 2000-09-12.
8136
8137 2001-01-18  Per Bothner  <per@bothner.com>
8138
8139         * gcj.texi (Input Options): Mention .java files.
8140
8141 2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8142
8143         * lang-options.h (-Wunsupported-jdk11): Removed.
8144         * lang.c (flag_not_overriding): Deleted.
8145         (flag_static_local_jdk1_1): Likewise.
8146         (lang_W_options): Removed "unsupported-jdk11" entry.
8147         * parse.y (java_check_methods): Removed dead code.
8148
8149 2001-01-17  Tom Tromey  <tromey@redhat.com>
8150
8151         Changes suggested by Per Bothner:
8152         * gcj.texi (Input Options): Don't mention input files.
8153         (Code Generation): Updated --main information.
8154         (Invoking jcf-dump): Mention that --javap is incomplete.
8155         From Alexandre Petit-Bianco:
8156         (Warnings): Don't mention -Wunsupported-jdk11.
8157         My stuff:
8158         (Compatibility): Mention JDK 1.2-ness of libraries.
8159         (Resources): Mention resources used when writing gcj.
8160
8161 2001-01-17  Tom Tromey  <tromey@redhat.com>
8162
8163         * gcj.texi: New file.
8164         * Make-lang.in ($(srcdir)/java/gcj.info): New target.
8165         (java.info): Depend on gcj.info.
8166         (java/gcj.dvi): New target.
8167         (java.dvi): Depend on gcj.dvi.
8168         (java.install-info): Wrote.
8169
8170 2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>
8171
8172         * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
8173         having called make_decl_rtl.
8174
8175 2001-01-14  Per Bothner  <per@bothner.com>
8176
8177         Various patches to emit better messages on verification errors.
8178         * expr.c (push_type_0):  Return error indication on stack overflow,
8179         instead of callinfg fatal.
8180         (push_type):  Now just call push_type_0 (nd fatal on overflow).
8181         (pop_type_0):  Return detailed error message (in a char** argument).
8182         (pop_type):  If pop_type_0 fails, print error message.
8183         (pop_argument_types):  Moved to verify.c.
8184         * verify.c (pop_argument_types):  Moved from expr.c.
8185         Return a (possible) error message, rather than void.
8186         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
8187         (verify_jvm_instruction):  Use new macros, improving error messages.
8188         For case OPCODE_astore use object_ptr_type_node.
8189         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
8190         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
8191
8192         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
8193         constant, return body without wrapper.  (Improves constant folding.)
8194         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
8195
8196 2001-01-13  Per Bothner  <per@bothner.com>
8197
8198         * expr.c (expand_java_field_op):  Assigning to a final field outside
8199         an initializer does not violate JVM spec, so should be warning, not
8200         error.  (Sun's verifier does not complain - though MicroSoft's does.)
8201
8202 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
8203
8204         * gjavah.c (version), jcf-dump.c (version): Update copyright year
8205         to 2001.
8206
8207 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
8208
8209         * parse.y (resolve_expression_name): Permit instance variables from
8210         enclosing context in super constructor call.
8211         (resolve_qualified_expression_name): Permit enclosing class's qualified
8212         "this" in super constructor call.
8213
8214 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
8215
8216         * class.c (build_utf8_ref): Remove last argument in call to
8217         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
8218         (build_class_ref): Likewise.
8219         (build_static_field_ref): Likewise.
8220         (get_dispatch_table): Likewise.
8221         (layout_class_method): Likewise.
8222         (emit_register_classes): Likewise.
8223         * constants.c (build_constant_data_ref): Likewise.
8224         * decl.c (builtin_function): Likewise.
8225         (create_primitive_vtable): Likewise.
8226         * expr.c (build_known_method_def): Likewise.
8227         (build_jni_stub): Likewise.
8228         (java_lang_expand_expr): Likewise.
8229
8230 2001-01-10  Tom Tromey  <tromey@redhat.com>
8231
8232         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
8233
8234 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8235
8236         * java-tree.h (lang_printable_name_wls): New prototype.
8237         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
8238         rather than `current_class' to print type name. Don't prepend type
8239         names when printing constructor names.
8240         (lang_printable_name_wls): New function.
8241         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
8242         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
8243         * parse.y (patch_method_invocation): Message tuned for constructors.
8244         (not_accessible_p): Grant `private' access from within
8245         enclosing contexts.
8246
8247 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8248
8249         All files with updated copyright when applicable.
8250         * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
8251         * class.c (mangle_class_field): Function removed.
8252         (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
8253         (utf8_cmp, cxx_keyword_p): Moved to lex.c.
8254         (build_class_ref): Call `java_mangle_class_field' instead of
8255         `mangle_class_field.'
8256         (build_dtable_decl): Rewritten to call `java_mangle_vtable.'
8257         (layout_class): Call `java_mangle_decl' instead of
8258         `mangle_static_field.'
8259         (cxx_keywords): Initialized static array moved to `lex.c.'
8260         (layout_class_method): Changed leading comment. Simplified to
8261         call `java_mangle_decl.' Local `ptr' moved in for loop body.
8262         * decl.c (lang_mark_tree): Mark field `package_list.'
8263         * java-tree.h (TYPE_PACKAGE_LIST): New macro.
8264         (struct lang_type): New field `package_list.'
8265         (unicode_mangling_length): Prototype removed.
8266         (append_gpp_mangled_name, append_gpp_mangled_classtype,
8267         emit_unicode_mangled_name): Likewise.
8268         (cxx_keyword_p): New prototype.
8269         (java_mangle_decl, java_mangle_class_field,
8270         java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
8271         * jcf-parse.c (jcf_parse_source): Constify `file' argument to
8272         `build_expr_wfl.'
8273         * jvgenmain.c (main_method_prefix): Global variable removed.
8274         (main_method_suffix): Likewise.
8275         (do_mangle_classname): New function.
8276         (main): Call it. Format changed to accommodate new mangling scheme.
8277         * lex.c: (utf8_cmp): Conditionally prototyped.
8278         (cxx_keywords): Moved from class.c, conditionally defined.
8279         (utf8_cmp, cxx_keyword_p): Likewise.
8280         * mangle.c (obstack.h, ggc.h): Included.
8281         (mangle_field_decl): New function.
8282         (mangle_method_decl, mangle_type, mangle_pointer_type,
8283         mangle_array_type, mangle_record_type,
8284         find_compression_pointer_match, find_compression_array_match,
8285         find_compression_record_match,
8286         find_compression_array_template_match, set_type_package_list,
8287         entry_match_pointer_p, emit_compression_string, init_mangling,
8288         finish_mangling, compression_table_add, mangle_member_name): Likewise.
8289         (mangle_obstack): New global.
8290         (MANGLE_RAW_STRING): New macro.
8291         (unicode_mangling_length): Turned static.
8292         (append_unicode_mangled_name): Renamed from
8293         `emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
8294         replaces `obstack', removed from the parameter list.
8295         (append_gpp_mangled_name): Turned static. `mangle_obstack'
8296         replaces parameter `obstack', removed from the parameter list. Call
8297         `append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
8298         (append_gpp_mangled_classtype): Removed.
8299         (compression_table, compression_next): New static variables.
8300         * parse.y (temporary_obstack): Extern declaration removed.
8301
8302 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8303
8304         * parse.y (patch_binop): Compute missing type in error situations.
8305
8306 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
8307
8308         * class.c (make_class_data): Push initial value for "arrayclass".
8309         * decl.c (init_decl_processing): Add new class field "arrayclass".
8310
8311 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
8312
8313         From patha@softlab.ericsson.se:
8314         * parse.y (switch_label): Use build, not build1, to construct
8315         DEFAULT_EXPR.
8316
8317 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
8318
8319         * lang.c (lang_decode_option): Change -MA to -MP.
8320         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
8321         Update to new prototype; do quote targets.
8322         (jcf_dependency_write): Update.
8323
8324 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
8325
8326         Shorten primitive array allocation path:
8327         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
8328         to create new primitive arrays.
8329         * expr.c (build_newarray): If generating native code, call
8330         soft_newarray_node with a reference to the primitive TYPE identifier
8331         instead of type_value.
8332
8333 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
8334
8335         Fix for PRs gcj/312 and gcj/253:
8336         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
8337         dest if they arn't already.
8338         * class.c (layout_class): Call maybe_layout_super_class on
8339         superinterfaces also, but only if compiling from bytecode.
8340
8341         Fix for PR gcj/373:
8342         * parse.y (create_class): Set ACC_STATIC if class is declared in an
8343         interface.
8344
8345 2000-12-15  Tom Tromey  <tromey@redhat.com>
8346
8347         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
8348         set.
8349
8350 2000-12-14  Andrew Haley  <aph@redhat.com>
8351
8352         * boehm.c (mark_reference_fields): Change test to correctly detect
8353         bitmap overflow.
8354
8355 2000-12-15  Andreas Jaeger  <aj@suse.de>
8356
8357         * config-lang.in (lang_dirs): Added.
8358
8359 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8360
8361         * parse.y (end_artificial_method_body): Fixed undefined behavior.
8362         Credits go to rth for finding it.
8363
8364 2000-12-13  Mike Stump  <mrs@wrs.com>
8365
8366         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
8367
8368 2000-11-07  Tom Tromey  <tromey@cygnus.com>
8369
8370         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
8371         * lex.c (java_ignorable_control_p): Removed.
8372         (java_letter_or_digit_p): Removed.
8373         (java_start_char_p): New function.
8374         (java_read_char): Return `int', not `unicode_t'.  Changed
8375         callers.
8376         (java_read_unicode): Likewise.
8377         (java_read_unicode_collapsing_terminators): Likewise.
8378         (java_get_unicode): Likewise.
8379         (java_new_lexer): Initialize hit_eof.
8380         (java_parse_end_comment): Take `int' argument.
8381         (java_parse_doc_section): Likewise.
8382         (java_parse_escape_sequence): Don't allow backlash-newline.
8383         Return `int'.
8384         * lex.h (JAVA_DIGIT_P): Removed.
8385         (_JAVA_LETTER_OR_DIGIT_P): Removed.
8386         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
8387         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
8388         (JAVA_PART_CHAR_P): New macro.
8389         (UEOF): Now -1.
8390         (JAVA_CHAR_ERROR): Now -2.
8391         (java_lexer): New field `hit_eof'.
8392         * chartables.h: New file.
8393         * gen-table.pl: new file.
8394
8395 2000-11-20  Tom Tromey  <tromey@cygnus.com>
8396             Alexandre Petit-Bianco  <apbianco@cygnus.com>
8397
8398         * parse.y (java_complete_lhs): Only allow compound assignment of
8399         reference type if type is String.
8400
8401 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8402
8403         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
8404         jcf-path.c: Likewise.
8405
8406 2000-12-09  Anthony Green  <green@redhat.com>
8407
8408         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
8409         filestart and filename_length as int values.
8410
8411 2000-12-07  Mo DeJong  <mdejong@redhat.com>
8412
8413         * jcf-io.c (find_class): Correct the logic that tests to see if a
8414         .java file is newer than its .class file. The compiler was
8415         incorrectly printing a warning when file mod times were equal.
8416
8417 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
8418
8419         * jvgenmain.c: Use ISPRINT not isascii.
8420
8421 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8422
8423         * parse.y (end_artificial_method_body): Fixed typo.
8424
8425 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8426
8427         * parse.y (patch_method_invocation): Pick the correct enclosing
8428         context when creating inner class instances.
8429         Fixes gcj/332.
8430
8431 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
8432
8433         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
8434         Update copyright year to 2000.
8435
8436 2000-11-23  Anthony Green  <green@redhat.com>
8437
8438         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
8439         Move current_file_list out of yyparse and make it static.
8440
8441         * expr.c: Declare quick_stack and tree_list_free_list as static
8442         (init_expr_processing): Register quick_stack and
8443         tree_list_free_list roots.
8444
8445 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8446
8447         * parse.y (build_outer_field_access): New local `decl_ctx', use
8448         it. Check for field's context and current class immediate outer
8449         context inheritance.
8450         (outer_field_access_p): Consider fields inherited from the last
8451         enclosing context.
8452         (build_access_to_thisn): Stop at the last enclosing context if
8453         necessary.
8454         Fixes gcj/367.
8455
8456 2000-11-23  J"orn Rennecke <amylaar@redhat.com>
8457
8458         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
8459
8460 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
8461
8462         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
8463         scratch buffer.
8464
8465 2000-11-20  Tom Tromey  <tromey@cygnus.com>
8466
8467         * jv-scan.c (help): Document --complexity.
8468         (options): Added --complexity.
8469         (flag_complexity): New global.
8470         (main): Call `report'.
8471         * parse-scan.y (complexity): New global.
8472         (if_then_statement, if_then_else_statement,
8473         if_then_else_statement_nsi, switch_block_statement_group,
8474         while_expression, do_statement, for_begin, continue_statement,
8475         throw_statement, catch_clause, finally, method_invocation,
8476         conditional_and_expression, conditional_or_expression,
8477         conditional_expression): Update complexity.
8478         (reset_report): Reset complexity.
8479         (report): New function.
8480
8481 2000-11-20  Tom Tromey  <tromey@cygnus.com>
8482
8483         * lex.c (yylex): Added STRICT_TK case.
8484         * parse.y (STRICT_TK): Added.
8485         * parse-scan.y (STRICT_TK): Added.
8486         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
8487         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
8488         file.
8489         * keyword.h: Rebuilt.
8490         * keyword.gperf (strictfp): Added.
8491
8492 2000-11-20  Tom Tromey  <tromey@cygnus.com>
8493
8494         * lex.c (yylex): Recognize floating point constants with leading
8495         0.
8496
8497 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8498
8499         * java-tree.h (cyclic_inheritance_report): Constify.
8500         * parse.y (cyclic_inheritance_report): Likewise.
8501
8502 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
8503
8504         * parse.y (goal): Remove call to ggc_add_string_root.
8505
8506 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
8507
8508         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
8509         Create string in scratch buffer, then pass to build_string.
8510
8511 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
8512
8513         * parse.y (issue_warning_error_from_context): Add
8514         ATTRIBUTE_PRINTF.
8515
8516 2000-11-11  Anthony Green  <green@redhat.com>
8517
8518         * jcf-parse.c (process_zip_dir): Add finput parameter.
8519         (jcf_figure_file_type): Call process_zip_dir with appropriate
8520         argument.
8521
8522 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8523
8524         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
8525         * jcf-parse.c (jcf_figure_file_type): Likewise.
8526
8527 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
8528
8529         * parse.y (create_new_parser_context): Use memset () instead of
8530         bzero ().
8531
8532 2000-11-08  Tom Tromey  <tromey@cygnus.com>
8533
8534         * gjavah.c (process_file): Only include gcj/cni.h when generating
8535         CNI stubs.
8536
8537 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
8538
8539         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
8540         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
8541         instead of bzero ().
8542
8543 2000-11-05  Tom Tromey  <tromey@cygnus.com>
8544
8545         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
8546         * lex.c (IS_ZERO): New define.
8547         (java_perform_atof): Error on floating point underflow.
8548
8549 2000-11-04  Tom Tromey  <tromey@cygnus.com>
8550
8551         * lex.c (java_parse_escape_sequence): Only read two octal
8552         characters if the first one is greater than 3.  Don't allow
8553         "octal" numbers to include the digits 8 or 9.
8554
8555 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
8556
8557         * Make-lang.in (java.distdir): Remove.
8558
8559 2000-11-03  Tom Tromey  <tromey@cygnus.com>
8560
8561         * Make-lang.in (java.dvi): New target.
8562         Partial fix for PR other/567.
8563
8564         * lang-options.h: Mention -Wout-of-date.
8565         * jcf-dump.c (flag_newer): New global.
8566         * gjavah.c (flag_newer): New global.
8567         * jcf-io.c (find_class): Only warn when flag_newer set.
8568         * lang.c (flag_newer): New global.
8569         (struct string_option): New declaration.
8570         (lang_W_options): New global.
8571         (process_option_with_no): New function.
8572         (lang_decode_option): Use it.
8573
8574         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
8575         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
8576         `$'.
8577
8578         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
8579         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
8580         * lex.c (java_read_unicode): Removed `term_context' argument.
8581         Recognize any number of `u' in `\u'.
8582         (java_read_unicode_collapsing_terminators): New function.
8583         (java_get_unicode): Use it.
8584         (java_lineterminator): Removed.
8585         (yylex): Produce error if character literal is newline or single
8586         quote.  Return if eof found in middle of `//' comment.  EOF in
8587         `//' comment is only an error if pedantic.
8588         (java_ignorable_control_p): New function.
8589         (java_parse_end_comment): Return if eof found in middle of
8590         comment.
8591         Include flags.h.
8592         * jv-scan.c (pedantic): New global.
8593
8594 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8595
8596         * parse.y (outer_field_access_p): Inherited fields aren't
8597         consider outer fields.
8598         (maybe_build_thisn_access_method): Use
8599         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
8600         (resolve_expression_name): Trigger an error if a static field
8601         is being accessed as an outer field.
8602
8603 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8604
8605         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
8606         Fixes gcj/365.
8607
8608 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
8609
8610         * Make-lang.in: Move all build rules here from Makefile.in,
8611         adapt to new context.  Wrap all rules that change the current
8612         directory in parentheses.  Expunge all references to $(P).
8613         When one command depends on another and they're run all at
8614         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
8615         all object-file generation rules.  Delete obsolete variables.
8616
8617         * Makefile.in: Delete.
8618         * config-lang.in: Delete outputs= line.
8619
8620 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8621
8622         * parse.y (patch_method_invocation): NULLify this_arg when already
8623         inserted.
8624         (maybe_use_access_method): Handle call to methods unrelated to the
8625         current class. Fixed comment.
8626         Fixes gcj/361.
8627
8628 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8629
8630        * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
8631        scope.
8632
8633 2000-10-24  Tom Tromey  <tromey@cygnus.com>
8634
8635         * lex.c (java_new_lexer): Initialize new fields.  Work around
8636         broken iconv() implementations.
8637         (java_read_char): Swap bytes if required.  Use fallback decoder if
8638         required.
8639         (byteswap_init, need_byteswap): New globals.
8640         (java_destroy_lexer): Only close iconv handle if it is in use.
8641         * lex.h (java_lexer): New fields read_anything, byte_swap,
8642         use_fallback.
8643         Made out_buffer unsigned.
8644
8645 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8646
8647         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
8648         where an enclosing context can be set on the jdep.
8649         (do_resolve_class): Fixed identation.
8650
8651 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8652
8653         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
8654
8655         * jcf-reader.c (peek_attribute, skip_attribute): Only define
8656         when requested.
8657
8658         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
8659
8660         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
8661
8662 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8663
8664         * jcf-write.c (OP1): Update `last_bc'.
8665         (struct jcf_block): Fixed indentation and typo in comments.  New
8666         field `last_bc'.
8667         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
8668         follows `monitorenter'.
8669         * parse.y (patch_synchronized_statement): New local `tmp'. Call
8670         `patch_string'.
8671         Fixes gcj/232.
8672
8673 2000-10-16  Tom Tromey  <tromey@cygnus.com>
8674
8675         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
8676         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
8677         * lang-options.h: Added -MA, -MT, -MF..
8678         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
8679         (DEPEND_TARGET_SET): New macro.
8680         (DEPEND_FILE_ALREADY_SET): Likewise.
8681         (init_parse): Handle new flags.
8682         * jcf.h (jcf_dependency_print_dummies): Declare.
8683         * Make-lang.in (s-java): Added mkdeps.o.
8684         * Makefile.in (BACKEND): Added mkdeps.o.
8685         (../gcjh$(exeext)): Added mkdeps.o.
8686         (../jcf-dump$(exeext)): Added mkdeps.o.
8687         * jcf-depend.c: Include mkdeps.h.
8688         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
8689         add_entry): Removed.
8690         (jcf_dependency_reset): Rewrote.
8691         (dependencies): New global.
8692         (jcf_dependency_set_target): Rewrote.
8693         (jcf_dependency_add_target): Likewise.
8694         (jcf_dependency_add_file): Likewise.
8695         (munge): Removed.
8696         (print_ents): Removed.
8697         (jcf_dependency_write): Rewrote.
8698         (print_dummies): New global.
8699         (jcf_dependency_print_dummies): New function
8700         (jcf_dependency_write): Call deps_dummy_targets if required.
8701
8702 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8703
8704         * gjavah.c (add_class_decl): Removed unused variables `tname',
8705         `tlen' and `name_index'.
8706         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
8707         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
8708         in `wfl_operator' with value.
8709         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
8710         (jcf_figure_file_type): Fixed identation.
8711         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
8712         * parse.y (analyze_clinit_body): New function.
8713         (static_initializer:): Reset `current_static_block'.
8714         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
8715         `wfl_operator' with new value.
8716         (lookup_cl): Use EXPR_WFL_FILENAME.
8717         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
8718         analyze_clinit_body.
8719         (build_outer_field_access): Access to this$<n> built from
8720         current_class, not its outer context.
8721         (build_access_to_thisn): Fixed leading comment. Tidied things up.
8722         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
8723         (patch_method_invocation): Use `is_static_flag' when already
8724         initialized.
8725         (patch_newarray): Removed assignment in ternary operator.
8726
8727 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8728
8729         * except.c (free_eh_ranges): Don't free `whole_range'.
8730
8731 2000-10-15  Anthony Green  <green@redhat.com>
8732
8733         * decl.c (init_decl_processing): Call init_class_processing before
8734         anything else.
8735
8736 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8737
8738         * check-init.c (check_init): Fixed leading comment. Use
8739         LOCAL_FINAL_P.
8740         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
8741         (give_name_to_locals): Likewise.
8742         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
8743         fields in lang_decl_var.
8744         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
8745         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
8746         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
8747         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
8748         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
8749         (LOCAL_FINAL): Rewritten.
8750         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
8751         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
8752         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
8753         `init_final' fields.
8754         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
8755         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
8756         (TYPE_HAS_FINAL_VARIABLE): New macro.
8757         (struct lang_type): Added `afv' field.
8758         * parse.y (check_static_final_variable_assignment_flag): New function.
8759         (reset_static_final_variable_assignment_flag): Likewise.
8760         (check_final_variable_local_assignment_flag): Likewise.
8761         (reset_final_variable_local_assignment_flag): Likewise.
8762         (check_final_variable_indirect_assignment): Likewise.
8763         (check_final_variable_global_assignment_flag): Likewise.
8764         (add_inner_class_fields): Use LOCAL_FINAL_P.
8765         (register_fields): Handle local finals and final variables.
8766         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
8767         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
8768         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
8769         on local finals.
8770         (java_complete_expand_methods): Loop to set
8771         TYPE_HAS_FINAL_VARIABLE. Call
8772         `reset_final_variable_local_assignment_flag' and
8773         `check_final_variable_local_assignment_flag' accordingly before
8774         and after constructor expansion. Call
8775         `reset_static_final_variable_assignment_flag'
8776         before expanding <clinit> and after call
8777         `check_static_final_variable_assignment_flag' if the
8778         current_class isn't an interface. After all methods have been
8779         expanded, call `check_final_variable_global_assignment_flag' and
8780         `check_static_final_variable_assignment_flag' if the current class
8781         is an interface.
8782         (maybe_yank_clinit): Fixed typo in comment.
8783         (build_outer_field_access_methods): Removed old sanity check. Use
8784         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
8785         Don't create access methods for finals.
8786         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
8787         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
8788         existing DECL_INIT has been processed.
8789         (java_complete_lhs): Likewise.
8790         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
8791         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
8792         logic.
8793         (patch_assignment): Use LOCAL_FINAL_P.
8794         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
8795         DECL_INITIAL is nullified.
8796         Fixes gcj/163.
8797
8798 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8799
8800         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
8801
8802         * Makefile.in (parse.c, parse-scan.c): Likewise.
8803
8804 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
8805
8806         * class.c (temporary_obstack): Remove.
8807         (make_class): Don't mess with obstascks.
8808         (push_class): Likewise.
8809         (set_super_info): Likewise.
8810         (add_method_1): Likewise.
8811         (add_method): Likewise.
8812         (add_field): Likewise.
8813         (build_utf8_ref): Likewise.
8814         (build_class_ref): Likewise.
8815         (build_static_field_ref): Likewise.
8816         (finish_class): Likewise.
8817         (push_super_field): Likewise.
8818         (layout_class): Likewise.
8819         (layout_class_methods): Likewise.
8820         (init_class_processing): Likewise.
8821         * constants.c (get_tag_node): Likewise.
8822         (build_constant_data_ref): Likewise.
8823         * decl.c (ggc_p): Remove.
8824         (copy_lang_decl): Use ggc_alloc.
8825         (complete_start_java_method): Don't mess with obstacks.
8826         (start_java_method): Likewise.
8827         (end_java_method): Likewise.
8828         * except.c (link_handler): Use xmalloc.
8829         (free_eh_ranges): New function.
8830         (method_init_exceptions): Use it.
8831         (add_handler): Use xmalloc.
8832         (expand_start_java_handler): Don't mess with obstacks.
8833         (prepare_eh_table_type): Likewise.
8834         (expand_end_java_handler): Likewise.
8835         * expr.c (push_value): Likewise.
8836         (create_label_decl): Likewise.
8837         (build_jni_stub): Likewise.
8838         (java_lang_expand_expr): Likewise.
8839         (note_instructions): Use xrealloc.
8840         (java_push_constant_from_pool): Don't mess with obstacks.
8841         (process_jvm_instruction): Likewise.
8842         * java-tree.h (cyclic_inheritance_report): Remove duplicate
8843         declaration.
8844         * jcf-parse.c (get_constant): Don't mess with obstacks.
8845         (read_class): Likewise.
8846         (jcf_parse): Likewise.
8847         * lex.c (expression_obstack): Remove.
8848         (java_lex): Don't use obstack_free.
8849         * parse.h (exit_java_complete_class): Don't mess with obstacks.
8850         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
8851         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
8852         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
8853         * parse.y (gaol): Add more GC roots.
8854         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
8855         (lookup_field_wrapper): Likewise.
8856         (obtain_incomplete_type): Don't mess with obstacks.
8857         (build_alias_initializer_parameter_list): Adjust calls to MANGLE_*
8858         macros.
8859         (craft_constructor): Don't mess with obstacks.
8860         (safe_layout_class): Likewise.
8861         (java_complete_class): Likewise.
8862         (source_end_java_method): Likewise.
8863         (build_outer_field_access_methods): Likewise.
8864         (build_outer_method_access_method): Likewise.
8865         (maybe_build_thisn_access_method): Likewise.
8866         (build_dot_class_method_invocation): Likewise.
8867         (java_complete_tree): Likewise.
8868         (java_complete_lhs): Likewise.
8869         (do_merge_string_cste): Likewise.
8870         (patch_string_cst): Likewise.
8871         (array_constructor_check_entry): Likewise.
8872         * typeck.c (build_java_array_type): Likewise.
8873         (parse_signature_string): Likewise.
8874         (build_java_signature): Likewise.
8875
8876 2000-10-12  Tom Tromey  <tromey@cygnus.com>
8877
8878         Fix for PR gcj/356:
8879         * gjavah.c (add_class_decl): Don't special-case inner classes.
8880         (add_namelet): Likewise.
8881
8882 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
8883
8884         * java-tree.h: Constify current_encoding.
8885         * lang.c: Constify current_encoding.
8886
8887 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
8888
8889         * jvgenmain.c (class_mangling_suffix): Omit `.'.
8890         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
8891
8892 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8893
8894         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
8895         patch. Fixes gcj/340.
8896
8897 2000-10-10  Tom Tromey  <tromey@cygnus.com>
8898
8899         * lex.c (java_new_lexer): Initialize out_first and out_last
8900         fields.
8901         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
8902
8903 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8904
8905         * parse.y (pop_current_osb): New function.
8906         (array_type:): Use `dims:', changed actions
8907         accordingly. Suggested by Anthony Green.
8908         (array_creation_expression:): Used pop_current_osb.
8909         (cast_expression:): Likewise.
8910         (search_applicable_method_list): Fixed indentation.
8911
8912 2000-10-08  Anthony Green  <green@redhat.com>
8913
8914         * parse.y (array_type_literal): Remove production.
8915         (type_literals): Refer to array_type, not array_type_literal.
8916
8917 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8918
8919         Patch contributed by Corey Minyard.
8920         * decl.c (check_local_named_variable): New function.
8921         (tree check_local_unnamed_variable): Likewise.
8922         (find_local_variable): Splitted. Call check_local_{un}named_variable.
8923
8924 2000-10-07  Anthony Green  <green@redhat.com>
8925
8926         * class.c (layout_class): Handle case where superclass can't be
8927         layed out yet.
8928
8929 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
8930
8931         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
8932         gperf.
8933
8934 2000-10-05  Tom Tromey  <tromey@cygnus.com>
8935
8936         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
8937         * jvgenmain.c (class_mangling_prefix): Removed.
8938         (class_mangling_suffix): New global.
8939         (main): Use it.
8940         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
8941         `$'.
8942         (print_method_info): Handle overrides for static and final
8943         methods.
8944         (process_file): Generate declaration for class object field.
8945         * class.c (cxx_keywords): New array.
8946         (utf8_cmp): New function.
8947         (cxx_keyword_p): New function.
8948         (layout_class_method): Mangle C++ keywords by appending `$'.
8949         (mangle_field): New function.
8950         (mangle_class_field): Use mangle_field.  Mangle class name as
8951         `class$'.
8952         (mangle_static_field): Use mangle_field.
8953
8954 2000-10-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8955
8956         * decl.c (find_local_variable): Removed uncessary type check and
8957         fixed range check typo. From Corey Minyard.
8958
8959 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8960
8961         * decl.c (give_name_to_locals): New local `code_offset'. Call
8962         `maybe_adjust_start_pc'.
8963         * expr.c (note_instructions): New function.
8964         (expand_byte_code): Don't collect insn starts here.
8965         (peek_opcode_at_pc): New function.
8966         (maybe_adjust_start_pc): Likewise.
8967         * java-tree.h (maybe_adjust_start_pc): Declare.
8968         (note_instructions): Likewise.
8969         * jcf-parse.c (parse_class_file): Call `note_instructions'.
8970
8971 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8972
8973         * parse.y (field_access:): Fixed indentation.
8974         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
8975
8976 2000-09-07  Tom Tromey  <tromey@cygnus.com>
8977
8978         Fix for PR gcj/307:
8979         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
8980         JPRIMITIVE_TYPE_P, for arithmetic operators.
8981         (patch_method_invocation): Indentation fix.
8982         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
8983         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
8984         (do_unary_numeric_promotion): Cleaned up code.
8985         (valid_cast_to_p): Handle boolean correctly.
8986
8987 2000-09-27  Tom Tromey  <tromey@cygnus.com>
8988
8989         * lex.c (java_read_unicode): Reset bs_count when finished with
8990         `\u' sequence.
8991
8992 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
8993
8994         Convert to GC.
8995         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
8996         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
8997         (typeck.o): Depend on ggc.h.
8998         * class.c (add_method_1): Use GC functions for allocation.
8999         (init_class_processing): Register roots.
9000         * decl.c (ggc_p): Set to 1.
9001         (pending_local_decls): Make it static.
9002         (push_jvm_slot): Use GC functions for allocation.
9003         (init_decl_processing): Register roots.
9004         (give_name_to_locals): Use GC functions for allocation.
9005         (lang_mark_tree): New function.
9006         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
9007         functions for allocation.
9008         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
9009         * lex.c (java_lex): Use build_string, rather than replicating it
9010         inline.
9011         * parse.y (goal): Add more roots.
9012         (mark_parser_ctxt): New function.
9013         * typeck.c: Include ggc.h.
9014
9015 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9016
9017         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
9018         contains something else than MODIFY_EXPR.
9019
9020 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
9021
9022         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
9023         * Makefile.in (parse.o): Depend on ggc.h.
9024         (class.o): Likewise.
9025         (constants.o): Likewise.
9026         (decl.o): Likewise.
9027         (expr.o): Likewise.
9028         (jcf-parse.o): Likewise.
9029         (jcf-write.o): Likewise.
9030         (mangle.o): Likewise.
9031         * class.c: Include ggc.h.
9032         (build_static_field_ref): Register GC roots.
9033         (layout_class): Likewise.
9034         (init_class_processing): Likewise.
9035         * constants.c: Include ggc.h.
9036         (current_constant_pool_data_ref): Remove.
9037         (tag_nodes): Move it to ...
9038         (get_tag_node): ... here.  Register GC roots.
9039         * decl.c: Include ggc.h.  Remove many global tree definitions.
9040         (throw_node): Define.
9041         (java_global_trees): Likewise.
9042         (predef_filenames): Make the size a constant.
9043         (init_decl_processing): Adjust accordingly.
9044         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
9045         * expr.c: Include ggc.h.
9046         (init_expr_processing): Register GC roots.
9047         (build_invokeinterface): Likewise.
9048         * java-tree.h: Replace extern tree declarations with macros.
9049         (java_global_trees): New variable.
9050         (java_tree_index): New enumeration.
9051         (init_jcf_parse): Declare.
9052         * jcf-parse.c: Include ggc.h.
9053         (current_class): Remove declaration.
9054         (main_class): Likewise.
9055         (all_class_list): Likewise.
9056         (predefined_filename_p): Adjust for constant size of
9057         predef_filenames.
9058         (init_jcf_parse): New function.
9059         * jcf-write.c: Include ggc.h.
9060         (generate_classfile): Register GC roots.
9061         (append_synthetic_attribute): Likewise.
9062         (append_innerclass_attribute_entry): Likewise.
9063         * lang.c: Include ggc.h.
9064         (lang_print_error): Register GC roots.
9065         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
9066         with macros.
9067         * parse.y: Include ggc.h.
9068         (wfl_operator): Remove.
9069         (goal): Register GC roots.
9070         (java_pop_parser_context): Adjust for new field names.
9071         (java_parser_context_save_global): Likewse.
9072         (java_parser_context_restore_global): Likewise.
9073         (java_parser_context_suspend): Likewise.
9074         (java_parser_context_resume): Likewise.
9075         (verify_constructor_circularity): Register GC roots.
9076         (lookup_cl): Likewise.
9077         (java_reorder_fields): Likewise.
9078         (build_current_this): Likewise.
9079         (class_in_current_package): Likewise.
9080         (argument_types_convertible): Likewise.
9081         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
9082
9083 2000-09-14  Tom Tromey  <tromey@cygnus.com>
9084
9085         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
9086
9087 2000-09-13  Tom Tromey  <tromey@cygnus.com>
9088
9089         * jcf-parse.c: Include <locale.h>.
9090         * jv-scan.c: Include <locale.h>.
9091
9092 2000-09-12  Tom Tromey  <tromey@cygnus.com>
9093
9094         * expr.c (pop_type_0): Return `Object' if trying to merge two
9095         interface types.
9096         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
9097         interface types; `Object' is always a valid supertype.
9098
9099 2000-09-12  Tom Tromey  <tromey@cygnus.com>
9100
9101         Fix for PR gcj/33:
9102         * jv-scan.c (help): Document --encoding.
9103         (options): Added `encoding' entry.
9104         (OPT_ENCODING): New define.
9105         (main): Handle --encoding.
9106         Include <langinfo.h> if nl_langinfo exists.
9107         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
9108         --encoding.
9109         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
9110         (parse_source_file): Correctly call java_init_lex.  Added `finput'
9111         argument.  Use nl_langinfo to determine default encoding.
9112         * java-tree.h (current_encoding): Declare.
9113         * parse.y (java_parser_context_restore_global): Don't restore
9114         `finput'.
9115         (java_parser_context_save_global): Don't set `finput' field.
9116         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
9117         if required.
9118         * lang.c (current_encoding): New global.
9119         (lang_decode_option): Recognize `-fencoding='.
9120         (finish_parse): Don't close finput.
9121         * parse.h (struct parser_ctxt): Removed `finput' and
9122         `unget_utf8_value' fields.  Added `lexer' field.
9123         (java_init_lex): Fixed declaration.
9124         * lex.c (java_new_lexer): New function.
9125         (java_destroy_lexer): Likewise.
9126         (java_read_char): Added `lex' argument.  Handle iconv case.
9127         (java_read_unicode): Added `lex' argument.  Count backslashes in
9128         lexer structure.
9129         (java_init_lex): Added `finput' and `encoding' arguments.  Set
9130         `lexer' field in ctxp.
9131         (BAD_UTF8_VALUE): Removed.
9132         (java_lex): Handle seeing UEOF in the middle of a string literal.
9133         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
9134         (java_lexer): New structure.
9135         (UNGETC): Removed.
9136         (GETC): Removed.
9137         (DEFAULT_ENCODING): New define.
9138         (java_destroy_lexer): Declare.
9139
9140 2000-09-12  Tom Tromey  <tromey@cygnus.com>
9141
9142         Fix for PR gcj/343:
9143         * lex.c (java_init_lex): Initialize java_io_serializable.
9144         * parse.y (java_io_serializable): New global.
9145         (valid_ref_assignconv_cast_p): An array can be cast to
9146         serializable.
9147
9148 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
9149
9150         * decl.c, expr.c: Include defaults.h if not already included.
9151         Don't define the *_TYPE_SIZE macros.
9152
9153 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
9154
9155         * typeck.c (build_java_array_type): Correct first parameter
9156         in ADJUST_FIELD_ALIGN invocation.
9157
9158 2000-09-06  Tom Tromey  <tromey@cygnus.com>
9159
9160         * lang-specs.h: Also recognize `-femit-class-files'.
9161
9162 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9163
9164         * verify.c (merge_types): Load the types to merge if necessary.
9165
9166 2000-09-02  Anthony Green  <green@redhat.com>
9167
9168         * jcf-io.c: Include zlib.h.
9169         (open_in_zip): Read compressed class file archives.
9170         * zipfile.h (ZipDirectory): Add uncompressed_size and
9171         compression_method fields.
9172         * zextract.c (read_zip_archive): Collect file compression info.
9173
9174 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
9175
9176         * parse.y (do_resolve_class): Also explore superclasses of
9177         intermediate enclosing contexts when searching for inner classes.
9178
9179 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9180
9181         * parse.y (variable_declarator_id:): Better error message.
9182         (expression_statement:): Use YYNOT_TWICE.
9183         (cast_expression:): Likewise.
9184         (assignment:): Likewise.
9185
9186 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9187
9188         * parse.y (do_merge_string_cste): New locals. Create new
9189         STRING_CSTs each time, use memcpy. Fixes gcj/311.
9190
9191 2000-08-07  Hans Boehm  <boehm@acm.org>
9192
9193         * boehm.c (mark_reference_fields): Set marking bits for all words in
9194         a multiple-word record.
9195         (get_boehm_type_descriptor): Use the procedure marking descriptor for
9196         java.lang.Class.
9197
9198 2000-08-31  Mike Stump  <mrs@wrs.com>
9199
9200         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
9201         jcf-dump$(exeext)): Make parallel safe.
9202
9203 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
9204
9205         * jcf-parse.c (set_source_filename): Constify a char *.
9206         * jcf-write.c (append_innerclasses_attribute,
9207         make_class_file_name): Constify a char *.  Don't recycle a
9208         variable for an unrelated purpose.
9209         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
9210         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
9211
9212 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9213
9214         * expr.c (can_widen_reference_to): Fixed indentation.
9215         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
9216         * parse.y: `finit$' replaces `$finit$' in comments.
9217         (try_builtin_assignconv): Fixed leading comment.
9218
9219 2000-08-25  Greg McGary  <greg@mcgary.org>
9220
9221         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
9222
9223 2000-08-24  Greg McGary  <greg@mcgary.org>
9224
9225         * lang.c (lang_decode_option): Use ARRAY_SIZE.
9226         * parse.y (BINOP_LOOKUP): Likewise.
9227
9228 2000-08-22  Andrew Haley  <aph@cygnus.com>
9229
9230         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
9231         sign extending. Fixes gcj/321.
9232         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
9233         combining to make a jlong. Fixes gcj/321.
9234
9235 2000-08-21  Nix  <nix@esperi.demon.co.uk>
9236
9237         * lang-specs.h: Do not process -o or run the assembler if
9238         -fsyntax-only.
9239
9240 2000-08-16  Andrew Haley  <aph@cygnus.com>
9241
9242         * typeck.c (build_java_array_type): Rewrite code to do array
9243         alignment.  Take into account back-end macros when aligning array
9244         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
9245         user to set alignment. Fixes gcj/252 and 160.
9246
9247 2000-08-09  Tom Tromey  <tromey@cygnus.com>
9248
9249         * parse.y (check_abstract_method_definitions): Now return `int'.
9250         Check implemented interfaces.  Fixes PR gcj/305.
9251
9252         * parse.y (patch_switch_statement): Disallow `long' in switch
9253         expressions.  Fixes PR gcj/310.
9254
9255 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9256
9257         * decl.c (finit_leg_identifier_node): New global.
9258         (init_decl_processing): Use `finit$' to initialize
9259         finit_identifier_node. Use `$finit$' to initialize
9260         finit_leg_identifier_node.
9261         * expr.c (expand_java_field_op): Use ID_FINIT_P.
9262         * java-tree.h (finit_identifier_node): Changed attached comment.
9263         (finit_leg_identifier_node): New declaration.
9264         (ID_FINIT_P): Take finit_identifier_node and
9265         finit_leg_identifier_node into account. This is a backward
9266         compatibility hack.
9267
9268 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9269
9270         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
9271         Jan 6 2000 patch.
9272         (generate_bytecode_insns): Check `nargs' before emitting it.
9273         * verify.c (merge_type_state): Fixed typo.
9274         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
9275         generate_bytecode_{conditional,insns}.
9276
9277 2000-08-13  Anthony Green  <green@redhat.com>
9278
9279         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
9280         for -pg builds).
9281
9282 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9283
9284         * class.c (maybe_layout_super_class): Fixed indentation.
9285         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
9286         (java_check_methods): New function declaration.
9287         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
9288         instead of `str_ptr'.
9289         * jcf-write.c (generate_bytecode_insns): Emit number the of args
9290         of a `invokeinterface' at the right time.
9291         * parse.h (WFL_STRIP_BRACKET): New macro.
9292         (SET_TYPE_FOR_RESOLUTION): Use it.
9293         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
9294         (check_class_interface_creation): Don't check for cross package
9295         innerclass name clashes.
9296         (method_header): Behave properly if MDECL is `error_mark_node'.
9297         (method_declarator): Return `error_mark_node' if bogus current
9298         class.
9299         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
9300         (resolve_and_layout): New local `decl_type', set and used. Call
9301         java_check_methods.
9302         (java_check_methods): New method.
9303         (java_layout_classes): Use it.
9304         (resolve_qualified_expression_name): No EH check necessary in
9305         access$<n>.
9306         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
9307         `case' statement.
9308         (patch_assignment): Set DECL_INITIAL on integral final local.
9309
9310 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9311
9312         * java-tree.h (flag_extraneous_semicolon): New extern.
9313         * lang-options.h: (-Wextraneous-semicolon): New option.
9314         * lang.c (flag_redundant): Fixed typo in leading comment.
9315         (flag_extraneous_semicolon): New global.
9316         (lang_decode_option): Set `flag_extraneous_semicolon' when
9317         -Wall. Decode `-Wextraneous-semicolon'.
9318         * parse.y (type_declaration:): Removed `SC_TK' hack, added
9319         `empty_statement' rule.
9320         (class_body_declaration): Likewise.
9321         (method_body:): Accept `;' as a method body.
9322         (static_initializer:): Removed `SC_TK' hack.
9323         (constructor_block_end:): Likewise.
9324         (empty_statement:): Report deprecated empty declaration. Fixes
9325         gcj/295
9326
9327 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9328
9329         * parse.y (build_dot_class_method_invocation): Changed parameter
9330         name to `type'. Build signature from `type' and convert it to a
9331         STRING_CST if it's an array.
9332         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
9333         to use `ref_type' directly.
9334
9335 2000-08-06  Ovidiu Predescu  <ovidiu@cup.hp.com>
9336
9337         * lang-options.h: Added a comma after the last element to avoid
9338         syntax errors when other languages define additional options.
9339
9340 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
9341
9342         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
9343         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
9344         (jc1): Link with $(BACKEND).
9345         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
9346
9347 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
9348
9349         * jvspec.c: Adjust type of second argument to
9350         lang_specific_driver, and update code as necessary.
9351
9352         * class.c (build_dtable_decl): Initialize dummy.
9353
9354 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9355
9356         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
9357         method bodies not to rule out discarding `<clinit>'; don't use
9358         <clinit> to initialize static fields with constant initializers.
9359
9360 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9361
9362         * gjavah.c (print_method_info): Added `synth' parameter. Skip
9363         synthetic methods.
9364         (method_synthetic): New global.
9365         (HANDLE_METHOD): Recognize synthetic method and tell
9366         `print_method_info' about it.
9367         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
9368         processing a synthetic method.
9369         * jcf-reader.c (skip_attribute): New function.
9370         ( skip_attribute): Likewise.
9371
9372 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9373
9374         * parse.y (build_outer_field_access): Fixed comments.
9375         (fix_constructors): Emit the initialization of this$<n> before
9376         calling $finit$.
9377         (resolve_qualified_expression_name): Build an access to `decl' if
9378         necessary.
9379
9380 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9381
9382         * parse-scan.y (curent_class): Non longer const.
9383         (inner_qualifier, inner_qualifier_length): Deleted.
9384         (current_class_length): New global.
9385         (bracket_count): Fixed typo in leading comment.
9386         (anonymous_count): New global.
9387         (class_instance_creation_expression:): Handle anonymous classes.
9388         (anonymous_class_creation:): New rule.
9389         (push_class_context): Rewritten.
9390         (pop_class_context): Likewise.
9391         (INNER_QUALIFIER): Macro deleted.
9392         (report_class_declaration): call `push_class_context' when
9393         entering the function. `fprintf' format modified not to use
9394         INNER_QUALIFIER.
9395         (report_class_declaration): Assign `package_name' and
9396         `current_class' to NULL separately.
9397
9398 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9399
9400         * expr.c (build_invokeinterface): Call layout_class_methods on
9401         target interface.
9402
9403 2000-07-27  Tom Tromey  <tromey@cygnus.com>
9404             Anthony Green  <green@cygnus.com>
9405             Alexandre Petit-Bianco  <apbianco@cygnus.com>
9406
9407         * class.c (make_class_data): Create vtable for abstract classes.
9408         (get_dispatch_table): Changed to cope with abstract classes.
9409
9410 2000-07-27  Tom Tromey  <tromey@cygnus.com>
9411
9412         * parse.y (patch_method_invocation): Don't reverse the argument
9413         list when dealing with anonymous class constructors. Fixed typo in
9414         comment.
9415
9416 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9417
9418         * parse.y (build_alias_initializer_parameter_list): Reverse
9419         crafted list when building aliases for anonymous class
9420         constructors.
9421
9422 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9423
9424         * parse.y (jdep_resolve_class): Don't bother checking potential
9425         innerclass access if `decl' is NULL.
9426         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
9427         WFL.
9428
9429 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9430
9431         * parse.c: Remove (again.)
9432
9433 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9434
9435         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
9436         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
9437         outside the `if' statement, alias to innerclass removed, `decl'
9438         used to mark the class complete.
9439
9440 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9441
9442         * parse.y (simple_name:): Fixed typo in error message.
9443
9444 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9445
9446         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
9447         or its first operand can be error marks.
9448
9449 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9450
9451         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
9452         * parse.y (method_header): Likewise.
9453
9454 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9455
9456         * parse.y (process_imports): Consider that one might be trying to
9457         import an innerclass. Fixes gcj/254
9458
9459 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9460
9461         * parse.y (find_as_inner_class): Handle the case where the
9462         enclosing context of an innerclass has been loaded as bytecode.
9463
9464 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9465
9466         * parse.y (simple_name:): Reject `$' in type names.
9467         (resolve_type_during_patch): Use `type' as a second
9468         argument to resolve_no_layout. Fixes gcj/257.
9469
9470 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
9471
9472         * parse.y (find_most_specific_methods_list): Select the only
9473         non-abstract method even if max has been set.
9474         Fixes gcj/285, gcj/298.
9475
9476 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
9477
9478         * lang-specs.h: Added %(jc1) to java compiler options.
9479
9480 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
9481
9482         * .cvsignore: New file.
9483
9484 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9485
9486         * parse.y (not_accessible_p): Access granted to innerclasses
9487         (indirectly) extending the reference type. Fixes gcj/249.
9488
9489 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9490
9491         * parse.y (patch_method_invocation): Fixed comment.
9492         (maybe_use_access_method): Build this$<n>s to the context of the
9493         target method, or a type that extends it. Fixes gcj/242.
9494
9495 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
9496
9497         * parse.c: Remove.
9498
9499 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9500
9501         * parse.y (fold_constant_for_init): Avoid bullish conversion.
9502
9503 2000-07-13  Tom Tromey  <tromey@cygnus.com>
9504
9505         * lang-specs.h: Added %{I*}.
9506
9507 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
9508
9509         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
9510
9511 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
9512
9513         * parse-scan.c: Remove.
9514
9515 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9516
9517         * class.c (set_super_info): Handled protected inner classes.
9518         (common_enclosing_context_p): Bail early if arguments aren't both
9519         inner classes.
9520         (get_access_flags_from_decl): Handle private and protected inner
9521         classes.
9522         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
9523         (CLASS_PROTECTED): Likewise.
9524         (struct lang_type): New bitfield `poic'.
9525         * parse.y (jdep_resolve_class): Call check_inner_class_access on
9526         inner classes only.
9527         (check_inner_class_access): Renamed arguments, added
9528         comments. Handles protected inner classes (fixes gcj/225)
9529         (not_accessible_p): Fixed comments. Avoid handling inner classes.
9530
9531 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9532
9533         * parse.y (resolve_qualified_expression_name): Verify qualified
9534         access to `this'. Fixes gcj/239.
9535
9536 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9537
9538         * jcf-write.c (generate_classfile): Don't install ConstantValue
9539         for null pointers.
9540
9541 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9542
9543         * parse.y (resolve_qualified_expression_name): Handle inner class
9544         access. Fixes gcj/256.
9545
9546 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9547
9548         * jcf-write.c (generate_classfile): Properly install the
9549         ConstantValue attribute and the initial value constant pool index
9550         on string constants.
9551         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
9552         class files.
9553
9554 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9555
9556         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
9557         construct.
9558         * parse.y (find_as_inner_class): Fixed typo.
9559         (do_resolve_class): Explore enclosing contexts when searching for
9560         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
9561         (check_inner_class_access): Check `decl' which can be null in case
9562         of previous errors.
9563
9564 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9565
9566         * java-tree.h (java_debug_context): Declared `extern'.
9567         (safe_layout_class): Likewise.
9568         * parse.y (resolve_field_access): Field must be `static' in order
9569         to be replaced by its initial value. Added comments.
9570         (find_applicable_accessible_methods_list): Fixed typo.
9571         (find_most_specific_methods_list): Methods found in innerclasses
9572         take over methods founds in the enclosing contexts.
9573         (java_complete_tree): Loosen restrictions on the type of DECLs
9574         that can be replaced by their initialization values.
9575         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
9576
9577 2000-07-05  Tom Tromey  <tromey@cygnus.com>
9578
9579         * Make-lang.in (PARSE_DIR): New macro.
9580         (PARSE_RELDIR): Likewise.
9581         (PARSE_C): Likewise.
9582         (PARSE_SCAN_C): Likewise.
9583         ($(PARSE_C)): New target.
9584         ($(PARSE_SCAN_C)): Likewise.
9585         (SET_BISON): New macro.
9586         (BISONFLAGS): Likewise.
9587         (JAVABISONFLAGS): Likewise.
9588
9589 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
9590
9591         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
9592         argument on the first pass for CNI as well as JNI.
9593         (print_method_info): Set up method name on the first pass only.
9594
9595 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9596
9597         * parse.y (parser_qualified_classname): Removed parameter
9598         `is_static'.
9599         (create_interface): Removed first passed parameter to
9600         parser_qualified_classname.
9601         (create_class): Likewise. Don't install alias on static
9602         innerclasses. Fixes gcj/275.
9603
9604 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9605
9606         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
9607         debugable statement with empty_stmt_node. Fixes gcj/272
9608
9609 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9610
9611         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
9612         gcj/271.
9613
9614 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9615
9616         * jcf-write.c (push_long_const): Appropriately cast short negative
9617         constant to jword.
9618
9619 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9620
9621         * parse.y (verify_constructor_super): Use loop variable
9622         `m_arg_type' initialized with `mdecl_arg_type'.
9623
9624 2000-06-29  Tom Tromey  <tromey@cygnus.com>
9625
9626         * parse.y (resolve_field_access): Handle case where `type_found'
9627         is NULL.
9628
9629 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9630
9631         * expr.c (lookup_field): The same field can be found through two
9632         different interface. Don't declare it ambiguous in that case.
9633
9634 2000-06-27  Tom Tromey  <tromey@cygnus.com>
9635
9636         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
9637         follows \r, then unget it at a lower level.
9638
9639 2000-06-26  Tom Tromey  <tromey@cygnus.com>
9640
9641         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
9642         java_complete_tree.
9643
9644 2000-06-25  Tom Tromey  <tromey@cygnus.com>
9645
9646         * parse.y (for_statement): Wrap expression in a WFL if it is a
9647         constant.  For PR gcj/268.
9648
9649 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9650
9651         * parse.y (do_resolve_class): Minor optimiztion in the package
9652         list search. Removed unnecessary test and return statement.
9653         (valid_ref_assignconv_cast_p): Order of arguments to
9654         enclosing_context_p fixed.
9655
9656 2000-06-24  Tom Tromey  <tromey@cygnus.com>
9657
9658         * expr.c (lookup_field): Print error and return error_mark_node if
9659         field reference is ambiguous.
9660
9661         * parse.y (check_abstract_method_definitions): Also check if
9662         `other_method' is abstract.
9663
9664 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9665
9666         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
9667         classes.
9668         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
9669         (struct lang_type): New field `pic'.
9670         (CLASS_PRIVATE): New macro.
9671         * parse.y (check_inner_class_access): New function.
9672         (jdep_resolve_class): Call it.
9673
9674 2000-06-23  Tom Tromey  <tromey@cygnus.com>
9675
9676         * parse.y (patch_incomplete_class_ref): Initialize the returned
9677         class.  For PR gcj/260.
9678
9679 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9680
9681         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
9682
9683 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9684
9685         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
9686         Java specific checks.
9687         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
9688         screened by DECL_P.
9689         * java-tree.def (CASE_EXPR): Marked 'e'.
9690         (DEFAULT_EXPR): Likewise.
9691         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
9692         screened by DECL_P.
9693         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
9694         Java specific checks.
9695         (generate_bytecode_insns): Test try_block for BLOCK before using
9696         BLOCK_EXPR_BODY.
9697         * parse.y (build_wfl_wrap): Added `location' argument. Set
9698         EXPR_WFL_LINECOL accordingly.
9699         (dim_expr:): Wrap constants with WFLs.
9700         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
9701         (resolve_package): Check for `stmt' not being a BLOCK before
9702         building a debuggable statement with it.
9703         (make_qualified_primary): Added extra parameter to build_wfl_wrap
9704         invocation.
9705         (resolve_field_access): Make sure `decl' is a DECL before treating
9706         it as such.
9707         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
9708         IDENTIFIER_NODE before treating it as such.
9709         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
9710         treating it as such.
9711         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
9712         to be applied only on non array types.
9713
9714 2000-06-16  Per Bothner  <per@bothner.com>
9715
9716         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
9717         define in terms of DECL_RESULT, as that fails when --enable-checking.
9718
9719 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9720
9721         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
9722         types the same in comparison.
9723         (CHECK_OP): Add static prototype.
9724
9725 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
9726
9727         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
9728         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
9729         * parse.c: Rebuilt.
9730
9731 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9732
9733         * decl.c (create_primitive_vtable): Prototype.
9734
9735         * jcf-write.c (generate_bytecode_insns): Initialize variable
9736         `saved_context'.
9737
9738         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
9739
9740 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
9741
9742         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
9743         to track searched classes, and do not search the same class more than
9744         once. Call find_applicable_accessible_methods_list on immediate
9745         superclass, instead of search_applicable_method_list on all ancestors.
9746         Fix for PR gcj/238.
9747
9748 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
9749
9750         * parse.y (register_fields): Permit static fields in inner classes
9751         if they are final. Fix for PR gcj/255.
9752
9753 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9754
9755         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
9756         * parse.y (find_in_imports): Returned type changed to void,
9757         leading comment fixed.
9758         (register_package): New function.
9759         (qualify_and_find): Likewise.
9760         (package_declaration:): Use `register_package'.
9761         (single_type_import_declaration:): Removed local variable
9762         `node'. Added missing `;' for consistency.
9763         (type_import_on_demand_declaration:): Use `chainon' to link new
9764         entries.
9765         (lookup_field_wrapper): Lookup local variables defined in outer
9766         contexts first.
9767         (java_complete_class): Don't reverse the list of imported on demand.
9768         (do_resolve_class): Reorganized. Removed local variable
9769         `original_name'. Call `qualify_and_find' with the current package
9770         name, invoke `find_in_imports_on_demand' right after. Call
9771         `qualify_and_find' with the packages we've seen so far. Fixed
9772         operations numbering in comments.
9773         (java_expand_class): Don't reverse `package_list'.
9774         (find_most_specific_methods_list): New local variables `abstract'
9775         and `candidates'. Use them to pick the right method.
9776
9777 2000-06-06  Tom Tromey  <tromey@ferrule.cygnus.com>
9778
9779         * parse.y (check_modifiers_consistency): Don't subtract out
9780         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
9781
9782 2000-06-04  Philipp Thomas  <pthomas@suse.de>
9783
9784         * Makefile.in (INTLLIBS): New.
9785         (LIBS): Add above.
9786         (DEPLIBS): Ditto.
9787
9788 2000-06-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9789
9790         * class.c (get_dispatch_table): Build the vtable dummy entry list
9791         element with a null purpose. Fixed leading comment.
9792         (build_dtable_decl): Build an accurate dtable type when appropriate
9793         and use it.
9794
9795 2000-06-02  Richard Henderson  <rth@cygnus.com>
9796
9797         * lang.c (lang_get_alias_set): New.
9798
9799 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9800
9801         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
9802         before using it as the accessed field.
9803
9804 2000-05-31  Tom Tromey  <tromey@cygnus.com>
9805
9806         * java-tree.h (boolean_array_vtable, byte_array_vtable,
9807         char_array_vtable, short_array_vtable, int_array_vtable,
9808         long_array_vtable, float_array_vtable, double_array_vtable):
9809         Declare.
9810         * expr.c (get_primitive_array_vtable): New function.
9811         (create_primitive_vtable): New function.
9812         (java_lang_expand_expr): Enable code to statically generate
9813         arrays.
9814         * decl.c (init_decl_processing): Create primitive vtables.
9815         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
9816         short_array_vtable, int_array_vtable, long_array_vtable,
9817         float_array_vtable, double_array_vtable): Define.
9818
9819 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
9820
9821         * java/parse.y (find_applicable_accessible_methods_list):
9822         Don't add an uninitialized value to the list.
9823
9824 2000-05-25  Tom Tromey  <tromey@cygnus.com>
9825
9826         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
9827         when trying to see if field's class should be initialized.  Always
9828         initialize field's declaring class, not qualified class.
9829         For PR gcj/162.
9830
9831         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
9832         `wfl_operator', to maybe_build_primttype_type_ref.
9833         Fixes PR gcj/235.
9834
9835 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
9836
9837        * parse.y (patch_method_invocation): Don't try to lookup methods
9838        in primitive types.
9839
9840 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9841
9842         * parse.y (resolve_field_access): Call the appropriate <clinit>
9843         before accessing the length of a static array. Craft a decl for
9844         the field while its time. Fixes PR gcj/129.
9845
9846 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9847
9848         * parse.y (resolve_package): Correctly set `*next' (was off by
9849         one.)
9850         (resolve_qualified_expression_name): Fixed comment.
9851
9852 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9853
9854         * jcf-parse.c (jcf_parse_source): Reset current_class and
9855         current_function_decl to NULL before parsing a new file.
9856
9857 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9858
9859         * parse.y (block_end:): If the collected block doesn't feature a
9860         statement, insert an empty statement.
9861
9862 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9863
9864         * parse.y (maybe_yank_clinit): New function.
9865         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
9866         end of the list of methods belonging to a class.
9867         (java_complete_expand_method): Check whether <clinit> is really
9868         necessary and expand it accordingly.
9869
9870 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9871
9872         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
9873         processed by the method's switch statement.
9874
9875 2000-05-19  Tom Tromey  <tromey@cygnus.com>
9876
9877         * java-tree.h: Added init state enum.
9878         * decl.c (emit_init_test_initialization): Initialize class
9879         initialization check variable by looking at class' state.
9880
9881 2000-05-19  Tom Tromey  <tromey@cygnus.com>
9882
9883         * java-tree.h (build_instanceof): Declare.
9884         (build_get_class): Declare.
9885         * parse.y (patch_binop): Use build_instanceof.
9886         * expr.c (build_instanceof): New function.  If class is final,
9887         don't make a function call.
9888         (expand_java_INSTANCEOF): Use it.
9889         (build_get_class): New function.
9890
9891 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
9892
9893         * jcf-write.c (generate_classfile): Scan the source_file for
9894         slashes with the right pointer variable.
9895
9896 2000-05-17  Andrew Cagney  <cagney@b1.cygnus.com>
9897
9898         * lang.c (lang_decode_option): Update -Wunused flags by calling
9899         set_Wunused.
9900         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
9901
9902 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
9903
9904         * check_init.c (check_init): Constify local char *.
9905         * class.c (push_class): Constify local char *.
9906         * java_tree.h: Update prototypes.
9907         * jcf-io.c (open_class): Constify filename parameter and
9908         return value.
9909         (find_class): Remove redundant string copy.  Cast return from
9910         open_class.
9911         * jcf-parse.c (read_class, parse_class_file, yyparse):
9912         Constify local char *.
9913         * jcf-write.c (generate_bytecode_insns, generate_classfile):
9914         Constify local char *.
9915         * jcf.h (JCF): Constify filename and classname.
9916         (JCF_FINISH): Cast args to FREE to char * when appropriate.
9917         * lang.c (init_parse): Constify parameter and return value.
9918         * lex.c (java_get_line_col): Constify filename parameter.
9919         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
9920         * parse.y (java_parser_context_suspend,
9921         issue_warning_error_from_context, safe_layout_class): Constify
9922         local char *.
9923         * parse.c: Regenerate.
9924
9925 2000-05-08  Tom Tromey  <tromey@cygnus.com>
9926
9927         * expr.c (build_jni_stub): Cache the result of
9928         _Jv_LookupJNIMethod.
9929
9930 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9931
9932         * decl.c (predef_filenames_size): Now 7.
9933         (predef_filenames): New seventh entry.
9934
9935 2000-05-04  Tom Tromey  <tromey@cygnus.com>
9936
9937         * boehm.c (mark_reference_fields): Don't mark RawData fields.
9938         Keep track of when we've seen a reference field after a
9939         non-reference field.
9940         (get_boehm_type_descriptor): Handle case where we see
9941         non-reference fields but no trailing reference field.
9942         * decl.c (rawdata_ptr_type_node): Define.
9943         (init_decl_processing): Initialize rawdata_ptr_type_node.
9944         * java-tree.h (rawdata_ptr_type_node): Declare.
9945
9946 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9947
9948         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
9949         specifiers in calls to fprintf.
9950
9951 2000-05-03  Andrew Haley  <aph@cygnus.com>
9952
9953         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
9954
9955         * javaop.h (WORD_TO_INT): New function.
9956         (IMMEDIATE_s4): Use WORD_TO_INT.
9957         * jcf.h (JPOOL_INT): Ditto.
9958
9959         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
9960         separator.
9961
9962 2000-04-19  Tom Tromey  <tromey@cygnus.com>
9963
9964         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
9965         on native function.
9966         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
9967         JNI methods.
9968         * expr.c (build_jni_stub): New function.
9969         * lang-specs.h: -fjni and -femit-class-file are incompatible.
9970         * parse.c: Rebuilt.
9971         * parse.y (java_complete_expand_methods): Expand a native method
9972         and call build_jni_stub if -fjni given.
9973         * lang-options.h: Document -fjni.
9974         * lang.c (flag_jni): New global.
9975         (lang_f_options): Added `jni' entry.
9976         * java-tree.h (soft_lookupjnimethod_node,
9977         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
9978         Declare.
9979         (flag_jni): Declare.
9980         (build_jni_stub): Declare.
9981         (struct lang_decl): Added `native' flag.
9982         (METHOD_NATIVE): Redefined to use `native' field of lang specific
9983         structure.
9984         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
9985         soft_jnipopsystemframe_node): New globals.
9986         (init_decl_processing): Set them.  _Jv_InitClass only takes one
9987         argument.
9988
9989         * java-tree.def: Put into `C' mode.
9990
9991 2000-04-27  Tom Tromey  <tromey@cygnus.com>
9992
9993         Fix for PR gcj/2:
9994         * expr.c (expand_invoke): Generate check to see if object pointer
9995         is null in nonvirtual invocation case.
9996         * java-tree.h (soft_nullpointer_node): Declare.
9997         * decl.c (soft_nullpointer_node): New global.
9998         (init_decl_processing): Initialize soft_nullpointer_node.
9999         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
10000         or `private' methods.
10001         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
10002
10003 2000-04-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10004
10005         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
10006         from <clinit>
10007
10008 2000-04-26  Tom Tromey  <tromey@cygnus.com>
10009
10010         * zextract.c (find_zip_file_start): New function.
10011         (read_zip_archive): Use it.
10012
10013 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10014
10015         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
10016
10017 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10018
10019         * class.c (common_enclosing_context_p): New function.
10020         * java-tree.h (common_enclosing_context_p): Added prototype.
10021         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
10022         classes sharing an outer context with the current instance.
10023         * parse.y (build_access_to_thisn): Fixed leading comment.
10024         (verify_constructor_super): New local `supper_inner'. Skip
10025         enclosing context argument in the case of inner class constructors.
10026         (patch_method_invocation): Insert proper context as second
10027         parameter to pure inner class constructor super invocations.
10028
10029 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10030
10031         * parse.y (end_class_declaration): Reset the interface number
10032         counter.
10033
10034 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10035
10036         * parse.y (source_start_java_method): Deleted unnecessary code.
10037         (patch_method_invocation): Fixed comment.
10038
10039 2000-04-24  Robert Lipe <robertlipe@usa.net>
10040
10041         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
10042
10043 2000-04-23  Tom Tromey  <tromey@cygnus.com>
10044
10045         * boehm.c (mark_reference_fields): Use int_byte_position.
10046
10047 2000-04-22  Tom Tromey  <tromey@cygnus.com>
10048
10049         * boehm.c (mark_reference_fields): Only call byte_position on
10050         non-static fields.
10051
10052 2000-04-22  Tom Tromey  <tromey@cygnus.com>
10053
10054         * boehm.c (mark_reference_fields): Added `last_view_index'
10055         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
10056
10057 2000-04-20  Mo DeJong  <mdejong@cygnus.com>
10058
10059         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
10060         * parse.y (check_class_interface_creation): Fixed comments. Select
10061         permitted modifiers for (inner) interfaces. Changed error message
10062         to report rejected modifiers used with local classes.
10063
10064 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10065
10066         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
10067         of directly inherited type considered in scope.
10068         * parse.y (do_resolve_class): Search inherited classes for inner
10069         classes.
10070
10071 2000-04-20  Tom Tromey  <tromey@cygnus.com>
10072
10073         * parse.y (not_accessible_p): Use member's class, not current
10074         class, when doing inheritance check for protected reference.
10075         Fixes PR gcj/124.
10076
10077 2000-04-20  Jason Schroeder  <shrode@subnature.com>
10078
10079         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
10080
10081 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10082
10083         * parse.y (lookup_field_wrapper): Search for final local aliases.
10084         (resolve_expression_name): Let lookup_field_wrapper search for
10085         final local aliases. Force the value of `name' if one is found.
10086         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
10087         an expression name. Fixed comments.
10088
10089 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10090
10091         * parse.y (yyerror): `msg' can be null, don't use it in that case.
10092
10093 2000-04-19  Tom Tromey  <tromey@cygnus.com>
10094
10095         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
10096
10097 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10098
10099         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
10100
10101 2000-04-18  Tom Tromey  <tromey@cygnus.com>
10102
10103         PR gcj/211:
10104         * gjavah.c (utf8_cmp): Changed return value.
10105         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
10106         result.
10107         (cxx_keywords): New global.
10108         (get_field_name): Handle new result of cxx_keyword_subst.
10109         (print_method_info): Likewise.
10110
10111 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
10112
10113         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
10114         with a newline, for CNI.
10115         (print_stub_or_jni): Print a space or newline before method name for
10116         CNI as well as JNI.
10117         (print_cxx_classname): Don't write leading "::" in CNI stub method.
10118         (process_file): Include gcj/cni.h if generating CNI stubs.
10119
10120 2000-04-16  Tom Tromey  <tromey@cygnus.com>
10121
10122         * gjavah.c (decompile_method): Use print_field_name.
10123         Fixes PR gcj/205.
10124
10125 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10126
10127         * parse.y (java_expand_classes): Reverse the package list once.
10128         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
10129         reduction.
10130         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
10131         the `==' and `!=' operators.
10132
10133 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10134
10135         * jcf-write.c (generate_bytecode_insns): At invocation time,
10136         always relate an interface method to the type of its selector.
10137
10138 2000-04-05  Tom Tromey  <tromey@cygnus.com>
10139
10140         Fix for PR gcj/2:
10141         * expr.c (expand_invoke): Generate check to see if object pointer
10142         is null in nonvirtual invocation case.
10143         * java-tree.h (soft_nullpointer_node): Declare.
10144         * decl.c (soft_nullpointer_node): New global.
10145         (init_decl_processing): Initialize soft_nullpointer_node.
10146         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
10147         or `private' methods.
10148         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
10149
10150 2000-04-05  Tom Tromey  <tromey@cygnus.com>
10151
10152         Fix for PR gcj/140:
10153         * parse.y (check_final_assignment): Recognize assignments to the
10154         `length' field of an array when generating class files.
10155
10156 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10157
10158         * class.c (decl_hash): Prototype removed.
10159         (decl_compare): Likewise.
10160
10161 2000-04-05  Tom Tromey  <tromey@cygnus.com>
10162
10163         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
10164         * parse.y (check_modifiers_consistency): Check for final/volatile
10165         clash.  Fixes PR gcj/164.
10166
10167 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10168
10169         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
10170         made global.
10171         (java_hash_compare_tree_node): Renamed from `decl_compare, made
10172         global.
10173         (add_method_1): Use `java_hash_hash_tree_node' and
10174         `java_hash_compare_tree_node'.
10175         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
10176         (java_hash_compare_tree_node): Likewise.
10177         * parse.y (find_applicable_accessible_methods_list): Create,
10178         delete and use a hash table to remember already searched interfaces.
10179
10180 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
10181
10182         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
10183         with latest entry.
10184
10185 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10186
10187         * boehm.c (mark_reference_fields, set_bit): Prototype.
10188         (set_bit): Un-ANSI-fy definition.
10189
10190         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
10191         Prototype.
10192
10193         * decl.c (emit_init_test_initialization): Likewise.
10194
10195         * gjavah.c (jni_print_char): Likewise.
10196
10197         * parse.y (create_new_parser_context): Likewise.
10198
10199 2000-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10200
10201         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
10202         patch missing hunk. Fixed indentation.
10203
10204 2000-03-30  Tom Tromey  <tromey@cygnus.com>
10205
10206         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
10207         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
10208
10209 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10210
10211         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
10212         when negative *before* using it as an array index.
10213         * ChangeLog: Fixed typo.
10214
10215 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10216
10217         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
10218         to 0 when it reaches -1.
10219
10220 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10221
10222         * jcf-parse.c (get_constant): Properly cast `num' during the
10223         invocation of `add_double'.
10224         * jcf-write.c (push_long_const): Properly cast `lo' before
10225         comparing it to short bounds.
10226         * parse-scan.y (interface_declaration:): Rule re-arrange so that
10227         `interface_body:' is reduced after the current interface is
10228         pushed.
10229
10230 2000-03-26  Tom Tromey  <tromey@cygnus.com>
10231
10232         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
10233         Java-specific `-f' option.
10234
10235 2000-03-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10236
10237         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
10238         Adjust order of making types.
10239         Make bitsize_*_node values.
10240
10241 2000-03-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10242
10243         * class.c (make_field_value): Use byte_position.
10244         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
10245         (java_array_data_offset): Likewise.
10246         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
10247         bzero call.
10248
10249 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10250
10251         * parse.y (check_abstract_method_definitions): New local
10252         `end_type_reached'. Make sure we also consider `end_type'.
10253         (java_check_abstract_method_definitions): Make sure we eventually
10254         consider `java.lang.Object'.
10255         (maybe_use_access_method): Don't use access method if not in the
10256         context of a pure inner class or if the method's context is right.
10257         (find_applicable_accessible_methods_list): New static flag
10258         `object_done'. Don't search abstract classes as interfaces. Fixed
10259         indentation. Fixed the `java.lang.Object' only search. Search
10260         class interface(s) first, then fully search enclosing contexts.
10261         (find_most_specific_methods_list): Pick the closest candidate when
10262         they're all abstract.
10263
10264 2000-03-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10265
10266         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
10267         properly initialize `finished_label'. Don't emit gotos for empty
10268         try statements.
10269
10270 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
10271
10272         * except.c (emit_handlers): Clear catch_clauses_last.
10273
10274 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10275
10276         * parse.y (check_method_types_complete): New function.
10277         (create_class): Reset anonymous class counter only when seeing an
10278         non inner classe.
10279         (java_complete_class): JDEP_METHOD: Don't recompute signature
10280         if incomplete.
10281
10282 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10283
10284         * class.c (build_static_ref): Fixed indentation in comment.
10285         * java-tree.def (TRY_EXPR): Fixed typo in name.
10286         (CLASS_LITERAL): Likewise.
10287         * java-tree.h: (TYPE_DOT_CLASS): New macro.
10288         (struct lang_type): New field `dot_class'.
10289         * jcf-write.c (generate_bytecode_insns): Fixed error message.
10290         (generate_classfile): Method `class$' is synthetic.
10291         * parse.y (build_do_class_method): New function.
10292         (build_dot_class_method_invocation): Likewise.
10293         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
10294         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
10295         (qualify_ambiguous_name): Likewise.
10296         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
10297         (build_try_statement): Fixed leading comment.
10298
10299 2000-03-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10300
10301         * class.c (make_field_value): Properly handle sizes.
10302         (get_dispatch_vector): Use tree_low_cst and host_integerp.
10303         (layout_class_method): Count using trees.
10304         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
10305         * expr.c (java_array_data_offset): Use int_bit_position.
10306         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
10307         (build_invokevirtual): Use tree_low_cst and do computations with trees.
10308
10309 2000-03-16  Tom Tromey  <tromey@cygnus.com>
10310
10311         * lang.c (flag_hash_synchronization): New global.
10312         (lang_f_options): Added `hash-synchronization'.
10313         * lang-options.h: Mention -fhash-synchronization.
10314         * java-tree.h (flag_hash_synchronization): Declare.
10315         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
10316         hash table synchronization is disabled.
10317         * decl.c (init_decl_processing): Only push `sync_info' value when
10318         hash table synchronization is disabled.
10319         * class.c (make_class_data): Only push `sync_info' field when hash
10320         table synchronization is disabled.  Removed dead code.
10321
10322 2000-03-16  Tom Tromey  <tromey@cygnus.com>
10323
10324         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
10325
10326 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10327
10328         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
10329         classes.
10330         * parse.y (patch_method_invocation): Handle anonymous classes
10331         creation in static context.
10332
10333 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10334
10335         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
10336         * parse.y (resolve_qualified_expression_name): Use it.
10337         (patch_method_invocation): Likewise.
10338
10339 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10340
10341         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
10342         depending on the type of dependency which dictates what the
10343         current class is.
10344         (unresolved_type_p): Resolved types limited to the current class.
10345
10346 2000-03-15  Tom Tromey  <tromey@cygnus.com>
10347
10348         * decl.c (init_decl_processing): Set type of `sync_info' to be
10349         pointer to Object.
10350
10351         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
10352         Correctly compute bit number for current slot.  Zero `high' and
10353         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
10354         mark_reference_fields.
10355         (mark_reference_fields): New function.
10356
10357 2000-03-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10358
10359         * parse.y (register_incomplete_type): Fixed initialization of
10360         JDEP_ENCLOSING.
10361
10362 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10363
10364         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
10365         static globals.
10366         (push_class_context, pop_class_context): New function.
10367         (class_body:): Call pop_class_context.
10368         (interface_body:): Likewise.
10369         (INNER_QUALIFIER): New macro.
10370         (report_class_declaration): Changed output format and use
10371         INNER_QUALIFIER. Call push_class_context.
10372
10373 2000-02-14  Andrew Haley  <aph@cygnus.com>
10374
10375         * check-init.c (check_init): Add new cases for unary and binary
10376         tree nodes.
10377
10378 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10379
10380         * parse.y (resolve_package): Set `next' once a type name has been
10381         progressively discovered.
10382         (resolve_qualified_expression_name): Propagate resolution only if
10383         there are remaining qualifiers. Take into account `q' might have
10384         been cleared after re-qualification.
10385         * parse.y (patch_method_invocation): New local `resolved'.
10386         Section dealing with qualified expression rewritten to use
10387         resolve_field_access.
10388
10389 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10390
10391         * parse.h (PUSH_CPC): Fixed indentation.
10392         (DEBUG_CPC): New macro.
10393         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
10394         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
10395         * parse.y (class_body_declaration:): Use
10396         SET_CPC_INSTANCE_INITIALIZER_STMT.
10397         (method_declaration:): Check for null current_function_decl.
10398         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
10399         (java_parser_context_pop_initialized_field): Better handling of
10400         empty lists.
10401         (maybe_make_nested_class_name): Mark nested class name as
10402         qualified when necessary.
10403         (end_class_declaration): Don't call java_parse_context_resume when
10404         one or more error occurred.
10405         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
10406         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
10407         SET_CPC_INITIALIZER_STMT.
10408         (method_header): Check for inner classes declaring static methods.
10409         (resolve_qualified_expression_name): Handle situation where `this'
10410         is implied.
10411
10412 2000-03-13  Hans Boehm <boehm@acm.org>
10413
10414         * typeck.c (build_prim_array_type): Correctly set the high word too.
10415
10416 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10417
10418         * parse.y (java_complete_expand_methods): Leave <clinit> out of
10419         ordinary methods.
10420         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
10421         list of methods for interfaces.
10422
10423 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10424
10425         * parse.y (qualify_ambiguous_name): Properly handle expressions
10426         using `null'.
10427
10428 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10429
10430         * parse.y (check_final_assignment): Extended to process
10431         COMPOUND_EXPR.
10432         (patch_assignment): Have check_final_assignment called only once.
10433
10434 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10435
10436         * java-tree.h (IS_INIT_CHECKED): New flag.
10437         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
10438         * parse.y (patch_string): Call force_evaluation_order on the
10439         completed string concatenation tree.
10440         * expr.c (force_evaluation_order): Call force_evaluation_order on
10441         function's arguments too.
10442
10443 2000-03-06  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10444
10445         * decl.c (emit_init_test_initialization): Mark KEY as unused.
10446         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
10447         (build_anewarray): Likewise.
10448         * parse.y (patch_newarray): Likewise.
10449         * parse.c: Regenerated.
10450
10451 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
10452
10453         * decl.c (init_decl_processing): Added new class fields `depth',
10454         `ancestors', and `idt' to class_type_node. Use
10455         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
10456         * class.c (make_class_data): Push initial values for new fields.
10457         * java-tree.h: Updated prototype for `build_invokeinterface'.
10458         * expr.c (build_invokeinterface): Changed parameters to accept
10459         `method' tree. Calculate index of `method' in its declaring
10460         interface. Build call to _Jv_LookupInterfaceMethodIdx.
10461         (expand_invoke): Call `build_invokeinterface' with new parameters.
10462         * parse.y (patch_invoke): Call `build_invokeinterface' with new
10463         parameters.
10464
10465 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
10466
10467         * typeck.c (lookup_do): Search superinterfaces first
10468         when looking up an interface method. From Godmar Back
10469         <gback@cs.utah.edu>
10470
10471 2000-03-06  Tom Tromey  <tromey@cygnus.com>
10472
10473         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
10474
10475 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10476
10477         * java-tree.h (lookup_argument_method2): Declared.
10478         (safe_layout_class): Prototype moved from parse.h.
10479         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
10480         * parse.y (java_check_regular_methods): Local `super_class' gone.
10481         Call lookup_argument_method2 instead of lookup_argument_method.
10482         Perform modifier match for methods found declared in implemented
10483         interfaces. Fixed indentation problem. Overriding/hiding error
10484         report to take place only for methods found in classes.
10485         * typeck.c (lookup_argument_method): Changed leading
10486         comment. Re-written by calling lookup_do.
10487         (lookup_argument_method2): New function.
10488         (lookup_java_method): Re-written by calling lookup_do.
10489         (lookup_do): New function.
10490
10491 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10492
10493         * check-init.c (check_init): Removed dead code. Handle (blank)
10494         final variables.
10495         * parse.y (declare_local_variables): New local `final_p', set it
10496         and use it to initialize LOCAL_FINAL.
10497         (check_final_assignment): Only check FIELD_DECLs.
10498
10499 2000-02-17  Tom Tromey  <tromey@cygnus.com>
10500
10501         * Makefile.in (JAVA_OBJS): Added boehm.o.
10502         (boehm.o): New target.
10503         * Make-lang.in (JAVA_SRCS): Added boehm.c.
10504         * java-tree.h (flag_use_boehm_gc): Declare.
10505         (get_boehm_type_descriptor): Declare.
10506         * lang.c (lang_f_options): Added `use-boehm-gc'.
10507         (flag_use_boehm_gc): New global.
10508         * lang-options.h: Added -fuse-boehm-gc.
10509         * boehm.c: New file.
10510         * class.c (get_dispatch_table): If class uses a Boehm type
10511         descriptor, put it in the vtable.
10512         (make_class_data): Removed dead code.
10513
10514 2000-03-03  Per Bothner  <per@bothner.com>
10515
10516         * decl.c (init_decl_processing):  Initialize sizetype properly.
10517
10518 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10519
10520         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
10521         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
10522         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
10523         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
10524         (jcf_parse): New local `current'. Load innerclasses seen in outer
10525         context being processed.
10526         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
10527         * jcf-write.c (append_innerclasses_attribute): New function.
10528         (append_innerclasses_attribute_entry): Likewise.
10529         (get_access_flags): Handle static classes. Set anonymous and local
10530         classes to be private.
10531         (generate_classfile): Attribute count adjusted. Call
10532         append_innerclasses_attribute.
10533         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
10534         PURE_INNER_CLASS_TYPE_P.
10535         * parse.y (parser_qualified_classname): New parameter `is_static',
10536         produce non qualified name accordingly.
10537         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
10538         (create_interface): Added argument to parser_qualified_classname.
10539         (create_class): Added argument to parser_qualified_classname. Setup
10540         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
10541         (add_inner_class_fields): Fixed indentation.
10542         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
10543         (method_declarator): Fixed typo in comment.
10544         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
10545         (build_current_thisn): Likewise.
10546         (patch_method_invocation): Likewise.
10547
10548 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
10549
10550         * decl.c (current_function_decl): Move to toplev.c.
10551
10552 2000-02-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10553
10554         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
10555         (DECL_BIT_INDEX): Use underlying representation.
10556         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
10557
10558 2000-02-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10559
10560         * expr.c (build_java_ret): Pass proper type to size_binop.
10561
10562 2000-02-25  Anthony Green  <green@cygnus.com>
10563
10564         * expr.c (build_class_init): Mark the decl to be ignored by
10565         check_init.
10566         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
10567         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
10568         * class.c (init_test_hash_newfunc): New function.
10569         (decl_hash): New function.
10570         (decl_compare): New function.
10571         * decl.c (emit_init_test_initialization): New function.
10572         (complete_start_java_method): Traverse the init test hashtable,
10573         calling emit_init_test_initialization.
10574         (always_initialize_class_p): Define.
10575         * expr.c (build_class_init): Use initialization tests when
10576         emitting class initialization code.
10577         (always_initialize_class_p): Declare.
10578         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
10579         1.
10580         * java-tree.h: Include hash.h.
10581         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
10582         (struct lang_decl): Add init_test_table field.
10583         (init_test_hash_entry): Define.
10584
10585 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10586
10587         * gjavah.c (main): Avoid using `argi' to report unimplemented
10588         options.
10589
10590 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10591
10592         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
10593         initialize locals to avoid warnings. Local `exception_type' moved
10594         into if statement.
10595
10596 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10597
10598         * parse.y (resolve_expression_name): Use `orig' as a second
10599         argument to resolve_field_access.
10600         (resolve_field_access): Removed unnecessary code when dealing with
10601         static fields.
10602
10603 2000-02-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10604
10605         * class.c (push_super_field): Don't push the field twice.
10606         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
10607         * parse.h (java_reorder_fields): Prototyped.
10608         * parse.y (java_reorder_fields): New function.
10609         (java_layout_class): Simplified not to worry about re-ordering.
10610
10611 2000-02-23  Tom Tromey  <tromey@cygnus.com>
10612
10613         * gjavah.c (print_name): In JNI case, correctly quote string.
10614         (print_method_info): Don't handle overrides in JNI mode.
10615
10616 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10617
10618         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
10619         value type set to `boolean_type_node'.
10620
10621 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
10622
10623         * jcf-dump.c (main): Test for correct condition after
10624         output file creation.
10625
10626 2000-02-19  Anthony Green  <green@cygnus.com>
10627
10628         * jcf-depend.c (add_entry): Fix test for first list entry.
10629
10630 2000-02-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10631
10632         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
10633         * constants.c (build_constants_constructor): Likewise.
10634
10635 2000-02-19  Anthony Green  <green@cygnus.com>
10636
10637         * jcf-depend.c (add_entry): Add entries to the end of the list.
10638
10639 1999-11-03  Pekka Nikander  <pekka.nikander@hut.fi>
10640
10641         * decl.c (INT_TYPE_SIZE): Define if necessary.
10642         (expand_java_return): Handle the case of a native integer smaller
10643         than a JVM integer.
10644
10645 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
10646
10647         * gjavah.c (help): Use GCCBUGURL.
10648         * jv-scan.c (help): Likewise.
10649         * jcf-dump.c (help): Likewise.
10650
10651 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10652
10653         * jcf-write.c (generate_bytecode_insns): Don't generate empty
10654         `finally' clauses.
10655
10656 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10657
10658         * jcf-parse.c (load_class): Call `fatal' if no file containing
10659         the target class are found.
10660
10661 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
10662
10663         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
10664         lex.c, lex.h, and PARSE_H to...
10665         (parse.o, parse-scan.o): ...here, respectively.
10666
10667         * lex.c: Split out code that may trigger SIGFPE from yylex()
10668         to its own function.
10669         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
10670
10671 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10672
10673         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
10674
10675 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10676
10677         * parse.y (outer_field_access_p): Stop in time when outer contexts
10678         are exhausted.
10679         (resolve_qualified_expression_name): Properly qualify *everything*
10680         after a package.type to be resoled as expression names.
10681         (find_applicable_accessible_methods_list): Save/restore `class' to
10682         isolate it from a possible outer context search.
10683
10684 2000-02-15  Tom Tromey  <tromey@cygnus.com>
10685
10686         * gjavah.c (jni_print_char): New function.
10687         (print_full_cxx_name): Use it.
10688         (decode_signature_piece): Likewise.
10689         (print_cxx_classname): Likewise.
10690
10691 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10692
10693         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
10694         version.o.
10695         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
10696
10697         * gjavah.c: Include version.h.
10698
10699         * jcf-dump.c: Likewise.
10700
10701         * jv-scan.c: Likewise.
10702
10703 2000-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10704
10705         * parse.y (outer_field_access_fix): First parameter now a tree
10706         node. Check for assignment to final. First argument to
10707         build_outer_field_access_fix modified to accommodate prototype.
10708         (build_outer_field_access): Don't check for assignment to final
10709         here.
10710         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
10711         possibly returned by outer_field_access_fix. Changed
10712         outer_field_access_fix's first argument.
10713         (check_final_assignment): $finit$'s context is OK.
10714         (patch_unaryop): Use node instead of its line/column value when
10715         calling outer_field_access_fix.
10716
10717 2000-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10718
10719         * parse.y (interface_declaration:): No longer tagged
10720         <node>. Re-installed default action.
10721         (class_member_declaration:): Handle inner interfaces.
10722         (interface_member_declaration): Handle inner interfaces and
10723         classes.
10724         (create_interface): Push error if one seen. Suspend parsing
10725         context when processing an inner interface.
10726         (register_fields): Inner class static field limitations not to
10727         apply to inner interfaces.
10728
10729 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10730
10731         * jcf-parse.c (load_class): Update `java_error_count' when a
10732         class' file can't be found.
10733         (parse.y): Avoid (byte)code generation when errors seen.
10734
10735 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10736
10737         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
10738         decodes a valid node.
10739         (patch_binop): Handle TRUNC_DIV_EXPR.
10740
10741 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10742
10743         * parse.y (resolve_package): New local `acc'. Try to progressively
10744         build and guess a package and type name.
10745
10746 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10747
10748         * parse.y (find_applicable_accessible_methods_list): Load and
10749         layout the search class if necessary.
10750         (java_complete_tree): Keep to original type of the folded initial
10751         value.
10752
10753 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10754
10755         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
10756         Generate error message if circularity is detected. New static
10757         local `list'.
10758         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
10759         * jcf-write.c (generate_bytecode_insns): Very simply handle
10760         SAVE_EXPR.
10761         * parse.y (java_check_circular_reference): Use
10762         `cyclic_inheritance_report' during report, if necessary.
10763         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
10764         walking NEW_ARRAY_INIT twice.
10765
10766 2000-02-09  Tom Tromey  <tromey@cygnus.com>
10767
10768         * parse.y (check_class_interface_creation): Allow inner classes to
10769         be `private' or `protected', check modifiers' consistency. Prevent
10770         block local classes from bearing any modifiers.
10771
10772 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10773
10774         * except.c (check_start_handlers): Re-add prototype lost in last
10775         patch.
10776         (maybe_start_try): Remove excess argument to `check_start_handlers'.
10777
10778 2000-02-09  Andrew Haley  <aph@cygnus.com>
10779
10780         * decl.c (clear_binding_level): Remove excess initializer.
10781         (maybe_poplevels): Remove unused variable.
10782         (force_poplevels): Ditto.
10783         (struct binding_level): Add comment.
10784
10785 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10786
10787         * jcf-write.c (generate_classfile): Don't consider
10788         pre-initialization with reference value (use <clinit> instead.)
10789         * parse.y (java_fix_constructors): No generated constructor for
10790         interfaces.
10791         (build_outer_field_access): Removed debug message.
10792         (outer_field_expanded_access_p): Adapted to bytecode generation.
10793         (build_outer_field_access_method): Use fix_method_argument_names.
10794         (build_outer_method_access_method): Fixed indentation. Added
10795         comment. Handle access method generation for static and also void
10796         methods.
10797         (build_access_to_thisn): Inserted debug message.
10798         (maybe_build_thisn_access_method): Use fix_method_argument_names.
10799         (resolve_qualified_expression_name): Fixed comment.
10800         (not_accessible_p): Adapted to bytecode generation. Added comment.
10801         (patch_method_invocation): Added comment.
10802         (maybe_use_access_method): Fixed leading comment. Handle static
10803         methods.
10804         (java_complete_lhs): Don't shortcut handling of initialized upon
10805         declaration String type static fields when generating bytecode.
10806         (patch_unaryop): Handle outer field access when generating
10807         bytecode.
10808
10809 2000-02-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10810
10811         * java-tree.h (FIELD_THISN): New macro.
10812         * jcf-write.c (append_synthetic_attribute): New function.
10813         (generate_classfile): Set "Synthetic" attribute on this$<n>,
10814         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
10815         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
10816         this$<n> fields.
10817         (build_outer_field_access): Turned on access functions usage and
10818         generation when compiling to bytecode.
10819         (maybe_use_access_method): Likewise.
10820
10821 2000-01-25  Andrew Haley  <aph@cygnus.com>
10822
10823         * java-except.h (struct eh_range): Add `expanded' field.
10824         (maybe_start_try): Add end_pc arg.
10825         (maybe_end_try): Ditto.
10826         * java-tree.h (force_poplevels): new function.
10827         * expr.c (expand_byte_code): Don't call maybe_start_try or
10828         maybe_end_try.
10829         * except.c (add_handler): Reset expanded.
10830         (expand_start_java_handler): Set expanded.
10831         (check_start_handlers): Don't expand a start handler that's
10832         already been expanded.
10833         (maybe_start_try): Add end_pc arg.  Only expand a handler which
10834         ends after end_pc.
10835         (expand_end_java_handler): call force_poplevels.
10836         (force_poplevels): new function.
10837         * decl.c (binding_level): Add start_pc of binding level.
10838         (maybe_pushlevels): Call maybe_start_try when pushing binding
10839         levels.
10840         (maybe_poplevels): Call maybe_end_try when popping binding levels.
10841         (LARGEST_PC): Define.
10842         (clear_binding_level): Use LARGEST_PC.
10843
10844         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
10845         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
10846         (binding_depth, is_class_level, current_pc): new variables.
10847         (struct binding_level): ditto.
10848         (indent): new function.
10849         (push_jvm_slot): add debugging info.
10850         (maybe_pushlevels): ditto.
10851         (maybe_poplevels): ditto.
10852         (pushlevel): ditto.
10853         (poplevel): ditto.
10854         (start_java_method): ditto.
10855         (give_name_to_locals): comment only.
10856         * except.c (binding_depth, is_class_level, current_pc):
10857         new variables.
10858         (expand_start_java_handler): add debugging info.
10859         (expand_end_java_handler): ditto.
10860
10861 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10862
10863         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
10864         (print_name_for_stub_or_jni, process_file): Constify a char*.
10865
10866 2000-02-03  Tom Tromey  <tromey@cygnus.com>
10867
10868         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
10869
10870 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
10871
10872         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
10873         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
10874         defined to be 1.
10875
10876 2000-02-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10877
10878         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
10879         * java-tree.h (TYPE_II_STMT_LIST): New macro.
10880         (struct lang_type): New field `ii_block'.
10881         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
10882         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
10883         * parse.h (struct parser_ctxt): New field `instance_initializers'.
10884         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
10885         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
10886         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
10887         macros.
10888         * parse.y (add_instance_initializer): New function.
10889         (in_instance_initializer): New static global.
10890         (class_body_declaration:): Link instance initializer block.
10891         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
10892         (array_creation_expression:): Remove unused local.
10893         (java_parser_context_push_initialized_field): Fixed leading
10894         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
10895         CPC_INSTANCE_INITIALIZER_LIST.
10896         (java_parser_context_pop_initialized_field): Likewise.
10897         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
10898         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
10899         CPC_INITIALIZER_STMT.
10900         (fix_constructors): New local `class_type'. Use it. Call
10901         add_instance_initializer.
10902         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
10903         (patch_return): Forbid return in instance initializers.
10904         (patch_throw_statement): Enforce exception handling in the context
10905         of instance initializers.
10906
10907 2000-02-03  Tom Tromey  <tromey@cygnus.com>
10908
10909         * Make-lang.in (java.mostlyclean): Remove executables in
10910         `mostlyclean'.
10911
10912 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
10913
10914         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
10915         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
10916         (java_float_finite): Convert to use union Word from javaop.h.
10917         (java_double_finite): Convert to use union DWord from javaop.h.
10918
10919 2000-02-02  Tom Tromey  <tromey@cygnus.com>
10920
10921         * gjavah.c (options): Added `jni' entry.
10922         (help): Document -jni.
10923         (flag_jni): New global.
10924         (process_file): Handle JNI output.  Don't print text from
10925         -prepend, -add, etc, when generating stubs.  Only remove `.class'
10926         suffix if it actually exists.
10927         (main): Create a `.c' file when run with `--jni --stubs'.  Create
10928         correct output file name with `--jni'.
10929         (print_include): Mangle header name differently in JNI case.
10930         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
10931         method list.
10932         (print_method_info): Handle JNI case.  Put signature info into
10933         method name.  Handle case when STREAM is NULL.
10934         (print_name_for_stub_or_jni): New function.
10935         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
10936         (print_cxx_classname): Handle JNI.
10937         (print_full_cxx_name): Likewise.
10938         (decode_signature_piece): Likewise.
10939         (overloaded_jni_method_exists_p): New function.
10940         (struct method_name): Added `signature' and `sig_length' fields.
10941         (HANDLE_END_FIELD): Do nothing in JNI mode.
10942
10943 2000-02-02  Tom Tromey  <tromey@cygnus.com>
10944
10945         * jv-scan.c: Include version.c, <getopt.h>.
10946         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
10947         (options): New array.
10948         (usage): New function.
10949         (version): New function.
10950         (main): Use getopt_long to parse command line.
10951         * jcf-dump.c: Include version.c, <getopt.h>.
10952         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
10953         OPT_JAVAP): New macros.
10954         (options): New array.
10955         (usage): Return `void'.  Changed message.
10956         (help): New function.
10957         (version): New function.
10958         (main): Use getopt_long_only to parse command line.
10959         * gjavah.c: Include <getopt.h>.
10960         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
10961         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
10962         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
10963         (options): New array.
10964         (java_no_argument): Removed.
10965         (help): Updated with missing options.
10966         (main): Use getopt_long_only to parse command line.
10967         (usage): Changed message.
10968
10969 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10970
10971         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
10972         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
10973         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
10974         * parse.y (array_creation_expression:): Handle anonymous arrays.
10975         (build_array_from_name): Don't set `ret_name' if null.
10976         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
10977         (qualify_ambiguous_name): Likewise.
10978         (java_complete_expand_class): Likewise.
10979
10980 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10981
10982         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
10983         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
10984         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
10985         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
10986         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
10987         AIPL_FUNCTION_COMPLETED_INVOCATION.
10988         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
10989         AIPL_FUNCTION_INVOCATION_READY.
10990         (AIPL_FUNCTION_DECLARATION): New enum entry.
10991         * parse.y (reorder_static_initialized): New function.
10992         (java_parser_context_pop_initialized_field): Use it.
10993         (add_inner_class_fields): Use
10994         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
10995         augmented. Install marker after last alias initializer, if any.
10996         (generate_finit): Fixed typo. Don't try to retain only the used
10997         fields.
10998         (method_header): Compute and set DECL_FUNCTION_NAP.
10999         (method_declarator): Fixed comment. Insert alias initializer in
11000         parameter list.
11001         (build_alias_initializer_parameter_list): Fixed leading
11002         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
11003         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
11004         (java_complete_expand_class): Code to retain only used aliases
11005         removed.
11006         (java_complete_expand_methods): New local `first_decl'. Generate
11007         $finit$ first, then expand the constructors, regular methods and
11008         <clinit>.
11009         (java_complete_expand_method): Don't report error on missing
11010         return statement if previously detected bogus.
11011         (fix_constructors): Don't patch constructor parameters list.
11012         (patch_method_invocation): Use new AIPL enum values. Reverse
11013         alias initializer list for anonymous classes.
11014
11015 2000-01-30  Anthony Green  <green@redhat.com>
11016
11017         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
11018         determine how many stack slots to pop.
11019
11020 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11021
11022         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
11023         error handling/recovery.
11024         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
11025
11026 2000-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11027
11028         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
11029         FIELD_LOCAL_ALIAS_USED): New macros.
11030         (DECL_FUNCTION_NAP): New macro.
11031         (struct lang_decl): New field `nap'.
11032         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
11033         (struct lang_type): New fields `finit_stmt_list' and
11034         `clinit_stmt_list'.
11035         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
11036         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
11037         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
11038         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
11039         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
11040         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
11041         (BUILD_THROW): Macro line separator re-indented.
11042         * parse.y (end_class_declaration): New function.
11043         (maybe_generate_pre_expand_clinit): New name for
11044         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
11045         pre-expand static fields.
11046         (maybe_generate_clinit): Function deleted.
11047         (check_for_static_method_reference): Prototype's parameter list
11048         indented.
11049         (generate_finit): New name for maybe_generate_finit. Changed
11050         leading comment. Function rewritten to use
11051         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
11052         (build_alias_initializer_parameter_list): New function.
11053         (java_parser_context_pop_initialized_field): Likewise.
11054         (add_inner_class_fields): Likewise.
11055         (type_declaration:): Call end_class_declaration.
11056         (class_member_declaration:): Likewise.
11057         (formal_parameter_list:): Fixed typos.
11058         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
11059         element. Improved error handling.
11060         (block_statement:): Call end_class_declaration.
11061         (anonymous_class_creation:): Likewise.
11062         (create_anonymous_class): Fixed comments.
11063         (create_class): Call add_inner_class_fields.
11064         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
11065         (method_header): Use MARK_FINAL_PARMS.
11066         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
11067         (method_declarator): Propagate final argument flag.
11068         (craft_constructor): New local `artificial'. Call
11069         build_alias_initializer_parameter_list. Use
11070         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
11071         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
11072         necessary.
11073         (complete_expand_class): Get rid of unused outer context local
11074         alias fields.
11075         (java_complete_expand_methods): Fixed leading
11076         comment. Generate/pre-expand <clinit> first. Changed method
11077         expansion order to regular, $finit$, constructors, <clinit>.
11078         (java_complete_expand_method): Set current_function_decl.
11079         (fix_constructors): Fix constructor parameter list to account for
11080         outer context local alias initializers.
11081         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
11082         (resolve_expression_name): Lookup outer context local aliases. New
11083         local `access', use it.
11084         (patch_method_invocation): Patch inner class ctor invocation with
11085         outer context local aliases initialization values. $finit$
11086         invocation patching now includes things generated with
11087         build_alias_initializer_parameter_list.
11088         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
11089         (build_super_invocation): Likewise.
11090         (patch_assignment): Changed comment.
11091
11092 2000-01-27  Andrew Haley  <aph@cygnus.com>
11093
11094         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
11095         (emit_if): Ditto.
11096         (emit_jsr): Ditto.
11097
11098 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11099
11100         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
11101         concatenation.
11102         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
11103
11104         * parse.y (register_fields): Don't pass a format specifier to
11105         OBSOLETE_MODIFIER_WARNING.
11106         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
11107         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
11108         specifier.
11109         (check_modifiers): Change function into a macro.
11110         (check_class_interface_creation): Pass a literal format string.
11111
11112 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11113
11114         * buffer.h: PROTO -> PARAMS.
11115         * check-init.c: Likewise.
11116         * class.c: Likewise.
11117         * constants.c: Likewise.
11118         * convert.h: Likewise.
11119         * decl.c: Likewise.
11120         * except.c: Likewise.
11121         * expr.c: Likewise.
11122         * gjavah.c: Likewise.
11123         * java-except.h: Likewise.
11124         * java-tree.h: Likewise.
11125         * jcf-depend.c: Likewise.
11126         * jcf-dump.c: Likewise.
11127         * jcf-parse.c: Likewise.
11128         * jcf-path.c: Likewise.
11129         * jcf-reader.c: Likewise.
11130         * jcf-write.c: Likewise.
11131         * jcf.h: Likewise.
11132         * jv-scan.c: Likewise.
11133         * jvgenmain.c: Likewise.
11134         * jvspec.c: Likewise.
11135         * lang.c: Likewise.
11136         * lex.c: Likewise.
11137         * lex.h: Likewise.
11138         * parse-scan.y: Likewise.
11139         * parse.h: Likewise.
11140         * parse.y: Likewise.
11141         * typeck.c: Likewise.
11142         * verify.c: Likewise.
11143         * xref.c: Likewise.
11144         * xref.h: Likewise.
11145         * zextract.c: Likewise.
11146         * zipfile.h: Likewise.
11147
11148 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11149
11150         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
11151         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
11152         * constants.c (build_constant_data_ref): Check for cached
11153         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
11154         in TYPE_CPOOL_DATE_REF.
11155         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
11156         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
11157         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
11158         (LOCAL_FINAL): New macro.
11159         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
11160         constant pool -- don't try to reuse.
11161         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
11162         TYPE_LANG_SPECIFIC.
11163         (find_in_current_zip): Use TYPE_JCF.
11164         * parse.h (java_check_final): Prototype removed.
11165         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
11166         (maybe_create_class_interface_decl,
11167         check_class_interface_creation): Likewise.
11168         (java_expand_finals): Function removed.
11169         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
11170         (block_statement:): Fixed comment.
11171         (anonymous_class_creation:): Likewise.
11172         (check_class_interface_creation): Reversed Jan 12, 2000 extra
11173         argument patch.
11174         (check_class_interface_creation): Loosened error report on (inner)
11175         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
11176         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
11177         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
11178         argument patch.
11179         (create_interface): Likewise.
11180         (anonymous_class_counter): New static global.
11181         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
11182         patch. Fixed comments.
11183         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
11184         anonymous_class_counter when declaring a toplevel class.
11185         (craft_constructor): Fixed constructor name when handling
11186         anonymous classes. Anonymous class constructors to feature hidden
11187         this$<n> parameter.
11188         (java_fix_constructors): Added comment.
11189         (java_check_final): Function removed.
11190         (java_complete_expand_methods): Fixed comment. Don't generate
11191         class data, save its outgoing constant pool instead.
11192         (verify_constructor_super): Skip anonymous class constructor
11193         hidden this$<n> parameter.
11194         (java_expand_classes): New local `saved_ctxp'. Removed call to
11195         java_expand_finals and java_check_final. Expand anonymous class
11196         constructors. Generate class data.
11197         (build_super_invocation): Skip anonymous class hidden this$<n>
11198         parameter.
11199         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
11200         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
11201         (set_java_signature): Likewise.
11202
11203 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
11204
11205         * gjavah.c: Delete ACC_VISIBILITY define.
11206         * jcf.h: Add ACC_VISIBILITY define.
11207         * parse.y: final: rule tagged <value>.
11208         (java_check_regular_methods): Use ACC_VISIBILITY define for
11209         default package access check.
11210         (local_variable_declaration_statement): Use final: rule.
11211
11212 2000-01-17  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
11213
11214         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
11215         (final:): New rule.
11216
11217 2000-01-17  Tom Tromey  <tromey@cygnus.com>
11218
11219         * gjavah.c (print_field_info): Allow non-static final fields.
11220
11221 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11222
11223         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
11224         * parse.y (patch_anonymous_class): New function.
11225         (create_anonymous_class): Register incomplete type when the
11226         class/interface to extends/implement isn't known yet.
11227         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
11228         (verify_constructor_super): Tuned error message.
11229
11230 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11231
11232         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
11233         (ANONYMOUS_CLASS_P): New macro.
11234         (TYPE_SIGNATURE, TYPE_JCF): New macros.
11235         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
11236         * parse.y (create_class): Added leading argument.
11237         (maybe_create_class_interface_decl,
11238         check_class_interface_creation): Likewise.
11239         (craft_constructor): New function.
11240         (verify_constructor_super): Added argument in prototype.
11241         (class_declaration:): Inserted leading argument.
11242         (for_begin:): Use FOR_LOOP_P.
11243         (anonymous_class_creation): Create WFL of the anonymous class to
11244         instantiate. Call build_new_invocation. Added comments.
11245         (check_class_interface_creation): Handle parameter `anonymous' in
11246         verbose mode class creation announce.
11247         (link_nested_class_to_enclosing): Exclude anonymous classes.
11248         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
11249         anonymous class, even though they appear to have an enclosing
11250         context.
11251         (create_interface): Pass extra argument to
11252         check_class_interface_creation.
11253         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
11254         (create_class): Call check_class_interface_creation and
11255         maybe_create_class_interface_decl with extra new argument. Don't
11256         add private this$<n> to anonymous classes.
11257         (method_declarator): Insert hidden this$<n> to anonymous class
11258         constructors.
11259         (java_fix_constructors): Deleted code creating default
11260         constructor. Call craft_constructor instead.
11261         (java_check_regular_methods): Set `saw_constructor' to 1 for
11262         anonymous classes.
11263         (fix_constructors): Pass extra argument to verify_constructor_super.
11264         (verify_constructor_super): New local `sdecl', use it. Search for
11265         matching constructor (possibly featuring arguments) in super
11266         class.
11267         (lookup_method_invoke): Craft constructor according to arguments
11268         list when dealing with anonymous class constructors.
11269         (build_super_invocation): Pass arguments to anonymous class super
11270         constructors.
11271         (search_loop): Use FOR_LOOP_P.
11272         (labeled_block_contains_loop_p): Likewise.
11273
11274 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11275
11276         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
11277         (enclosing_context_p): New function.
11278         (get_access_flags_from_decl): Handle CLASS_STATIC.
11279         (maybe_layout_super_class): Extra first argument passed to
11280         do_resolve_class.
11281         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
11282         ID_INIT_P.
11283         * decl.c (access0_identifier_node): New global.
11284         (init_decl_processing): access0_identifier_node initialized.
11285         (pushdecl): Set DECL_CONTEXT only on non type decls.
11286         * expr.c (lookup_field): Lookup inner class fields in enclosing
11287         contexts.
11288         (expand_invoke): Use ID_INIT_P.
11289         (expand_java_field_op): Use DECL_CLINIT_P.
11290         * java-tree.def (CLASS_LITERAL): New tree code.
11291         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
11292         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
11293         (struct lang_decl): New field `inner_access'.
11294         (enclosing_context_p): Prototyped.
11295         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
11296         ID_CLINIT_P): New macros.
11297         (CLASS_STATIC): New macro.
11298         (CLASS_ACCESS0_GENERATED_P): New macro.
11299         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
11300         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
11301         INNER_CLASS_P): New macros.
11302         (DECL_INNER_CLASS_LIST): New macro.
11303         * jcf-parse.c (yyparse): Avoid the use of ANSI string
11304         concatenation.
11305         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
11306         the shift value to int. Fixed typo in comment.
11307         * lex.c (inst_id, wpv_id): Initialize.
11308         * mangle.c (unicode_mangling_length): Take `$' into account.
11309         * parse.h (DRECOVER, RECOVER): Terminate properly.
11310         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
11311         (typedef struct _jdep): New field `enclosing'.
11312         (JDEP_ENCLOSING): New macro.
11313         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
11314         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
11315         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
11316         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
11317         GET_ENCLOSING_CPC_CONTEXT): New macros.
11318         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
11319         (do_resolve_class): Added extra argument in prototype.
11320         * parse.y (resolve_class): Added extra argument in prototype.
11321         (maybe_create_class_interface_decl): Likewise.
11322         (maybe_use_access_method, build_wfl_wrap): New functions.
11323         (java_complete_expand_classes, java_complete_expand_class):
11324         Likewise.
11325         (java_parser_context_push_initialized_field,
11326         java_parser_context_suspend, java_parser_context_resume):
11327         Likewise.
11328         (maybe_make_nested_class_name, make_nested_class_name,
11329         set_nested_class_simple_name_value,
11330         link_nested_class_to_enclosing, find_as_inner_class,
11331         find_as_inner_class_do, check_inner_class_redefinition,
11332         build_thisn_assign, build_current_thisn, build_access_to_thisn,
11333         maybe_build_thisn_access_method, build_outer_field_access,
11334         build_outer_field_access_methods, build_outer_field_access_expr,
11335         build_outer_method_access_method, build_new_access_id,
11336         build_outer_field_access_method, outer_field_access_p,
11337         outer_field_expanded_access_p, outer_field_access_fix,
11338         build_incomplete_class_ref, patch_incomplete_class_ref,
11339         create_anonymous_class): Likewise.
11340         (inst_id, wpv_id): New static global variables.
11341         (synchronized:): New rule, tagged <node>.
11342         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
11343         rules.
11344         (anonymous_class_creation:): New rule, tagged <node>.
11345         (NEW_TK): Tagged <node>.
11346         (type_literals, array_type_literal): New rules, tagged <node>.
11347         (class_declaration:): Removed action when reducing by class_body:
11348         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
11349         using GET_CPC in sub-rules.
11350         (class_member_declaration): Handle inner classes.
11351         (method_declaration): When reducing method_header:, reset
11352         current_function_decl when appropriate.
11353         (method_declarator:): Set the number of formal parameter to 0 for
11354         method declared without arguments.
11355         (constructor_declarator:): Likewise.
11356         (static_initializer:): List of elements kept in a list.
11357         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
11358         use of the keyword `static' for type declarations.
11359         (block_statement:): Handle inner class declarations.
11360         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
11361         type qualified `this'.
11362         (class_instance_creation_expression): Use anonymous_class_creation:
11363         to handle inner class instances creation. Handle qualified `new'.
11364         (something_dot_new): Added appropriate actions.
11365         (create_new_parser_context): New function.
11366         (java_push_parser_context, java_parser_context_save_global,
11367         java_parser_context_suspend): Use create_new_parser_context.
11368         (check_modifiers): Changed leading comment.
11369         (check_class_interface_creation): Handle interclasses.
11370         (add_superinterfaces): Fixed comment.
11371         (create_interface): Build qualified name from the raw_name instead
11372         of its matching WFL. Push the initialized fields list. raw_name added
11373         as an extra argument to maybe_create_class_interface_decl.
11374         (create_class): Build qualified name from the raw_name instead of
11375         its matching WFL. Removed assignment to current_parsed_class_un.
11376         Call PUSH_ERROR before returning an error. Suspend the current
11377         parser context when processing an inner class. Push the
11378         initialized fields list. raw_name added as an extra argument to
11379         maybe_create_class_interface_decl. Add the private this$<n>
11380         field.
11381         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
11382         (register_fields): Get the class type from GET_CPC and handle
11383         previous errors.  Added code to handle the creation of static
11384         fields in inner classes. Initialized fields initialization
11385         statements kept in a list of lists.
11386         (maybe_generate_finit): Initialized fields initialization
11387         statements kept in a list of lists. Use GET_CPC.
11388         (maybe_generate_clinit): Likewise.
11389         (method_header): Use GET_CPC and GET_CPC_UN.
11390         (parser_qualified_classname): Handle inner classes.
11391         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
11392         (java_fix_constructors): Hide pointer to enclosing context
11393         instance in constructor list when dealing with inner classes.
11394         (jdep_resolve_class): Call resolve_class with extra first argument
11395         JDEP_ENCLOSING.
11396         (resolve_class): Add enclosing context as a first extra argument
11397         to do_resolve_class.
11398         (do_resolve_class): Call find_as_inner_class. Handle WFLs
11399         properly.
11400         (resolve_no_layout): Extra argument added to resolve_class
11401         invocation.
11402         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
11403         (java_get_real_method_name): Use GET_CPC_UN.
11404         (check_abstract_method_definitions): Use DECL_CLINIT_P.
11405         (java_check_abstract_methods): Handle static method declared in
11406         inner classes by an error.
11407         (java_check_regular_methods): Use DECL_CLINIT_P.
11408         (source_start_java_method): Also set DECL_MAX_LOCALS.
11409         (create_artificial_method): Call java_parser_context_save_global
11410         and java_parser_context_restore_global instead of saving/restoring
11411         the context by hand.
11412         (expand_start_java_method): Improved verbose mode message.
11413         (java_complete_expand_methods): Fixed leading comment. Use
11414         DECL_CLINIT_P.
11415         (fix_constructors): Added assignment to this$<n> if necessary.
11416         (java_expand_classes): Call java_complete_expand_classes instead
11417         of java_complete_expand_methods.
11418         (make_qualified_primary): Simplified.
11419         (merge_qualified_name): Optimized for missing left or right parts.
11420         (resolve_expression_name): Handle access to outer class fields from
11421         interclasses.
11422         (resolve_qualified_expression_name): New macro
11423         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
11424         classes. Report error on non appropriate qualification of
11425         `new'. Handle qualified `this'.
11426         (not_accessible_p): Allow access to outer class private fields from
11427         inner classes.
11428         (patch_method_invocation): Handle method invocations through
11429         access methods and inner class constructor invocations.
11430         (find_applicable_accessible_methods_list): Search enclosing
11431         contexts of an inner class.
11432         (search_applicable_methods_list): Fixed typo.
11433         (argument_types_convertible): Handle inner class constructors'
11434         hidden outer context reference argument.
11435         (qualify_ambiguous_name): Handle qualified `this'.
11436         (java_complete_lhs): Handle use of field accessed through
11437         artificial access methods in various cases of assignments. Handle
11438         CLASS_LITERAL node.
11439         (check_final_assignment): Use DECL_CLINIT_P.
11440         (valid_ref_assignconv_cast_p): Handle the destination being an
11441         enclosing context of the source.
11442         (patch_unaryop): Handle use of field accessed through artificial
11443         access methods.
11444         (patch_return): Use DECL_CLINIT_P.
11445         (patch_throw_statement): Use DECL_CLINIT_P.
11446         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
11447         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
11448         ID_INIT_P.
11449
11450 2000-01-16  Anthony Green  <green@cygnus.com>
11451
11452         * parse.y (build_string_concatenation): Only use
11453         StringBuffer(String) shortcut if String arg is constant.
11454
11455 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11456
11457         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
11458         the shift value to int. Fixed typo in comment.
11459
11460 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
11461
11462         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
11463         * jcf-write.c: Likewise.
11464         * parse.y: Likewise.
11465         * parse.c: Regenerate.
11466
11467 2000-01-09  Anthony Green  <green@cygnus.com>
11468
11469         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
11470         bytecodes in the correct order.
11471
11472 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11473
11474         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
11475
11476 2000-01-06  Anthony Green  <green@cygnus.com>
11477
11478         * expr.c (java_lang_expand_expr): Switch to permanent obstack
11479         before building constant array decl.
11480
11481 2000-01-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11482
11483         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
11484         method invocation and typo in conditional expression.
11485         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
11486         the appropriate NOTE_POP.
11487         * parse.y (patch_binop): Shift value mask to feature the right
11488         type.
11489
11490 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11491
11492         * class.c (assume_compiled, assume_compiled_node): Add static
11493         prototype.
11494         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
11495
11496         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
11497
11498         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
11499
11500         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
11501         to `__modifier' to avoid stringifying it.
11502
11503         * parse.y (verify_constructor_circularity): Don't call a variadic
11504         function with a non-literal format string.
11505         (java_check_abstract_methods): Move unreachable code inside
11506         `continue' statement.
11507         (lookup_method_invoke): Call xstrdup, not strdup.
11508
11509         * expr.c (expand_java_field_op): Avoid the use of ANSI string
11510         concatenation.
11511
11512         * jcf-parse.c (yyparse): Likewise.
11513
11514         * jv-scan.c (main): Likewise.
11515
11516 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11517
11518         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
11519         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
11520         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
11521         concatenation.
11522
11523         * parse.y (synchronized, variable_redefinition_error,
11524         check_class_interface_creation, create_interface, create_class,
11525         method_header, finish_method_declaration,
11526         check_modifiers_consistency, method_declarator,
11527         complete_class_report_errors, check_abstract_method_definitions,
11528         java_check_regular_methods, check_throws_clauses,
11529         java_check_abstract_methods, read_import_dir,
11530         check_pkg_class_access, declare_local_variables, fix_constructors,
11531         cut_identifier_in_qualified, resolve_expression_name,
11532         resolve_qualified_expression_name, patch_method_invocation,
11533         java_complete_lhs, patch_assignment, try_builtin_assignconv,
11534         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
11535         patch_exit_expr, patch_exit_expr, patch_switch_statement,
11536         patch_try_statement, patch_synchronized_statement,
11537         patch_throw_statement, check_thrown_exceptions,
11538         patch_conditional_expr): Likewise.
11539
11540 1999-12-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11541
11542         * Makefile.in (LIBDEPS): Added gcc's errors.o
11543         (../jcf-dump$(exeext):): Link with gcc's errors.o
11544         (../gcjh$(exeext):): Likewise.
11545         * expr.c (expand_java_NEW): Layout the entire target type instead of
11546         laying out its methods only.
11547         (lookup_field): Layout the class after having loaded it.
11548         * java-tree.h (java_debug_context): Declared.
11549         * jcf-io.c (toplev.h): Included.
11550         (find_class): Removed assignment to jcf's outofsynch
11551         field. Force source file to be read if newer than its matching
11552         class file. Tweaked debug messages.
11553         * jcf-parse.c (jcf_out_of_synch): Deleted.
11554         (read_class): Call to jcf_out_of_synch removed.
11555         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
11556         (jcf_out_of_synch): Prototype deleted.
11557         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
11558         `deprecated' and `class_err': integer turned into bit-fields.
11559         New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments.
11560         * parse.y (package_list): New global.
11561         (package_declaration:): Record newly parsed package name.
11562         (extra_ctxp_pushed_p): Static global deleted.
11563         (java_parser_context_save_global): Create buffer context for the
11564         purpose of saving globals, if necessary.
11565         (java_parser_context_restore_global): Pop context pushed for the
11566         purpose of saving globals, if necessary.
11567         (java_debug_context_do): New prototype and function.
11568         (java_debug_context): Likewise.
11569         (do_resolve_class): Use already parsed package names to qualify
11570         and lookup class candidate.
11571         (java_pre_expand_clinit): Removed unnecessary local variable.
11572
11573 1999-12-17  Tom Tromey  <tromey@cygnus.com>
11574
11575         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
11576         fixes PR gcj/119.
11577         (process_file): Use `\n\' at end of each line in string.
11578
11579 1999-12-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11580
11581         * expr.c (expand_invoke): Layout the loaded class before
11582         attempting to use it.
11583         (expand_java_field_op): Allow final field assignments to take
11584         place in $finit$.
11585         * typeck.c (convert): Return error_mark_node if expr is null.
11586
11587 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11588
11589         * class.c (class_depth): Return -1 if the class doesn't load
11590         properly.
11591         * expr.c (can_widen_reference_to): Check for errors during depth
11592         computation and return 0 accordingly.
11593         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
11594         create default constructors and add an other error check.
11595         * parse.h (java_fix_constructors): Prototyped.
11596         * parse.y (java_pre_expand_clinit): Likewise.
11597         (build_super_invocation): Re-prototyped to feature one argument.
11598         (java_check_circular_reference): Directly use `current'.
11599         (java_fix_constructors): New function.
11600         (java_check_regular_methods): Don't create default constructors
11601         here, but abort if none were found.
11602         (java_complete_expand_methods): Pre-process <clinit> calling
11603         java_pre_expand_clinit.
11604         (java_pre_expand_clinit): New function.
11605         (fix_constructors): build_super_invocation invoked with the
11606         current method declaration as an argument.
11607         (build_super_invocation): Use the context of the processed method
11608         decl argument instead of current_class.
11609         * typeck.c (lookup_java_method): Take WFLs in method names into
11610         account.
11611
11612 1999-12-14  Per Bothner  <per@bothner.com>
11613
11614         * class.c (make_class_data): flag_keep_inline_functions to keep
11615         private methods in the method array.
11616
11617 1999-12-15  Anthony Green  <green@cygnus.com>
11618
11619         * check-init.c (check_init): Take into account both types of
11620         `throw's when checking for uninitialized variables.
11621
11622 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11623
11624         * parse.y (java_complete_lhs): Force conversion of array
11625         dimensions to int_type_node, that's what runtime's ABI expects.
11626
11627 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11628
11629         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
11630         operand of a WFL, until the Java front-end gets fixed with regard
11631         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
11632
11633 1999-12-10  Andrew Haley  <aph@cygnus.com>
11634
11635         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
11636         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
11637         expr.c (build_java_athrow): Add support for sjlj-exceptions.
11638         java-tree.h: Ditto.
11639         jcf-write.c: Ditto.
11640
11641 1999-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11642
11643         * expr.c (java_lang_expand_expr): Switch to permanent obstack
11644         before calling expand_eh_region_start and expand_start_all_catch.
11645         * except.c (expand_start_java_handler): Switch to permanent
11646         obstack before calling expand_eh_region_start.
11647         (expand_end_java_handler): Switch to permanent obstack before
11648         calling expand_start_all_catch.
11649
11650 1999-12-5  Anthony Green  <green@cygnus.com>
11651
11652         * decl.c (init_decl_processing): Mark throw_node as a noreturn
11653         function with side effects.
11654         (init_decl_processing): Mark all memory allocating DECLs with
11655         DECL_IS_MALLOC.
11656
11657 1999-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11658
11659         * except.c (expand_end_java_handler): Call
11660         expand_resume_after_catch and end_catch_handler.
11661
11662 1999-11-30  Anthony Green  <green@cygnus.com>
11663
11664         * verify.c (verify_jvm_instructions): Create new return label
11665         chain if non existent (don't rely on the verified state of the jsr
11666         target.)
11667
11668 1999-11-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11669
11670         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
11671         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
11672
11673         * parse.y (patch_assignment): Removed bogus final class test on
11674         lhs when checking on whether to emit an ArrayStoreException runtime
11675         check.
11676         * expr.c (expand_java_arraystore): Likewise.
11677
11678 1999-11-28 Anthony Green <green@cygnus.com>
11679
11680         * decl.c (find_local_variable): Reuse single slot decls when
11681           appropriate.
11682
11683 1999-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11684
11685         * jcf-parse.c (saw_java_source): Global variable removed.
11686         (read_class): Don't use `saw_java_source'. Added extra braces.
11687         (yyparse): Code setting `saw_java_source' removed.
11688
11689 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
11690
11691         * except.c (emit_handlers): Zero catch_clauses after emitting them.
11692
11693 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11694
11695         * verify.c (merge_type_state): Non verified subroutines being
11696         considered more than once to trigger passive type merge.
11697
11698 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11699
11700         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
11701         in case of error. Error message tuned.
11702
11703 1999-11-21  Anthony Green  <green@cygnus.com>
11704
11705         * constants.c (find_methodref_index): Unwrap method names before
11706         inserting them in the constant pool.
11707
11708         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
11709
11710         * class.c (assume_compiled_node): New typedef.
11711         (assume_compiled_tree): New static data.
11712         (find_assume_compiled_node): New function.
11713         (add_assume_compiled): New function.
11714         (assume_compiled): New function.
11715         * class.c (make_class_data): Use assume_compiled.
11716         (is_compiled_class): Use assume_compiled.
11717
11718         * java-tree.h (add_assume_compiled): Declare.
11719
11720         * lang.c (lang_decode_option): Parse new options.
11721
11722 1999-11-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11723
11724         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
11725         int_type_node: that's what `_Jv_AllocObject' expects.
11726
11727 1999-11-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11728
11729         * parse.y (lookup_method_invoke): Use lang_printable_name to
11730         reliably build the type name during error report. Fixes PR gcj/97.
11731
11732 1999-11-09  Tom Tromey  <tromey@cygnus.com>
11733
11734         * jcf-path.c: Include <sys/stat.h>.
11735         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
11736         (DIR_UP): New macro.
11737
11738 1999-11-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11739
11740         * parse.y (source_end_java_method): Resume permanent allocation,
11741         reversing Apr 27 1998 patch.
11742         (patch_string_cst): Pop obstacks after having pushed the permanent
11743         ones.
11744
11745 1999-11-05  Tom Tromey  <tromey@cygnus.com>
11746
11747         * class.c (finish_class): Emit inlined methods if any native
11748         methods exist in the class.  Fixes PR gcj/85.
11749
11750 1999-11-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11751
11752         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
11753         (qualify_ambiguous_name): Likewise.
11754
11755 1999-11-03  Godmar Back <gback@cs.utah.edu>
11756
11757         * typeck.c: (lookup_java_method):  search all inherited
11758         interfaces when looking up interface method.
11759
11760 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11761
11762         * parse.y (method_header:): Issue error message for rule `type
11763         error'.
11764         (synchronized:): Error report when not using synchronized.
11765
11766 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11767
11768         * parse.y (resolve_qualified_expression_name): Prevent `this' from
11769         being used before the superclass constructor has been called.
11770         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
11771         instead of `CALL_THIS_CONSTRUCTOR_P'.
11772
11773 1999-10-30  Todd T. Fries <todd@lighthouse.fries.net>
11774
11775         * check-init.c: Fix typo in comment.
11776
11777 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11778
11779         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
11780         and final method.
11781
11782 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11783
11784         * parse.y (expression_statement:): Call function to report
11785         improper invocation of a constructor.
11786         (parse_ctor_invocation_error): New function.
11787
11788 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
11789
11790         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
11791         remember_end_note.
11792
11793 1999-10-21  Tom Tromey  <tromey@cygnus.com>
11794
11795         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
11796         in generated `main'.
11797
11798 1999-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11799
11800         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
11801         (qualify_ambiguous_name): Likewise.
11802
11803 1999-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11804
11805         * parse.y (java_complete_tree): fold_constant_for_init to work on
11806         permanent_obstack.
11807         (java_complete_lhs): Likewise.
11808         (array_constructor_check_entry): Complete an initializer element
11809         on permanent_obstack.
11810
11811 1999-10-19  Tom Tromey  <tromey@cygnus.com>
11812
11813         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
11814         From Mike Moreton <mike@pillim.demon.co.uk>.
11815
11816 1999-10-15  Greg McGary  <gkm@gnu.org>
11817
11818         * java-tree.h (flag_bounds_check): Remove extern decl.
11819         * lang.c (flag_bounds_check): Remove global variable.
11820         (lang_f_options): Remove "bounds-check" entry.
11821         (lang_init_options): Default flag_bounds_check to "on".
11822
11823 1999-10-14  Tom Tromey  <tromey@cygnus.com>
11824
11825         * jvgenmain.c (usage): New function.
11826         (main): Use it.  Also, handle `-D' options.
11827         * jvspec.c (lang_specific_driver): Recognize -D.
11828         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
11829
11830         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
11831
11832 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11833
11834         * jcf-dump.c (print_constant, disassemble_method): Don't call a
11835         variadic function with a non-literal format string.
11836
11837         * parse-scan.y (report_main_declaration): Likewise.
11838
11839         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
11840
11841         * parse.y (read_import_dir, patch_assignment, patch_binop,
11842         patch_array_ref): Likewise.
11843
11844         * typeck.c (build_java_array_type): Likewise.
11845
11846         * verify.c (verify_jvm_instructions): Likewise.
11847
11848 1999-10-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11849
11850         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
11851
11852 1999-10-07  Anthony Green  <green@cygnus.com>
11853
11854         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
11855         where CHECK_PUT may fail for valid reasons.
11856
11857         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
11858         UNSAFE_PUTN): New macros.
11859
11860 1999-10-04  Tom Tromey  <tromey@cygnus.com>
11861
11862         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
11863         well.  Fixes Java PR gcj/59.
11864         * parse-scan.y (yyerror): Report errors.
11865
11866 1999-09-24  Glenn Chambers  <GChambers@provsol.com>
11867
11868         * decl.c (insert_block): Remove unconditional `abort'.
11869
11870 1999-09-24  Bernd Schmidt  <bernds@cygnus.co.uk>
11871
11872         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
11873         FUNCTION_CODE now of type int.  All callers changed.
11874         Set the builtin's DECL_BUILT_IN_CLASS.
11875
11876 1999-09-23  Tom Tromey  <tromey@cygnus.com>
11877
11878         * jvspec.c (lang_specific_driver): Don't read spec file if
11879         -fsyntax-only given.
11880
11881 1999-09-22  Tom Tromey  <tromey@cygnus.com>
11882
11883         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
11884
11885         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
11886         (WORDS_TO_LONG): Likewise.
11887         (WORDS_TO_DOUBLE): Likewise.
11888
11889 1999-09-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11890
11891         * jcf-write.c (RELOCATION_VALUE_0): New macro.
11892         (RELOCATION_VALUE_1): Likewise.
11893         (emit_iinc, emit_reloc, push_constant1, push_constant2,
11894         push_in_const, push_long_const): Prototyped.
11895         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
11896         (push_constant2): Likewise.
11897         (push_int_const): Cast find_constant1's integer arguments to `jword'.
11898         (find_constant_wide): Cast find_constant2's integer arguments to
11899         `jword'.
11900         (find_constant_index): Cast find_constant2's and find_constant2's
11901         integer arguments to `jword'.
11902         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
11903         (emit_switch_reloc): Use RELOCATION_VALUE_0.
11904         (emit_if): Use RELOCATION_VALUE_1.
11905         (emit_goto): Likewise.
11906         (emit_jsr): Likewise.
11907         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
11908         argument to push_long_const to HOST_WIDE_INT.
11909
11910 1999-09-15  Andreas Schwab  <schwab@suse.de>
11911
11912         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
11913
11914 1999-09-20  Nick Clifton  <nickc@cygnus.com>
11915
11916         * lang.c (lang_decode_option): Extend comment.
11917
11918 1999-09-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11919
11920         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
11921         instead of fndecl.
11922
11923 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11924
11925         * gjavah.c (get_field_name, print_method_info, print_include,
11926         add_namelet): Use xmalloc, not malloc.
11927
11928         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
11929         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
11930         NULL pointer.
11931
11932         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
11933
11934         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
11935
11936         * jcf-path.c (add_entry): Likewise.
11937
11938         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
11939
11940         * jv-scan.c (xmalloc): Remove definition.
11941
11942         * jvgenmain.c (xmalloc): Likewise.
11943
11944         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
11945
11946         * lex.c (java_store_unicode): Use xrealloc, not realloc.
11947
11948         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
11949         concat, not xmalloc/sprintf.
11950         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
11951         (xstrdup): Remove definition.
11952
11953         * parse.y (duplicate_declaration_error_p,
11954         constructor_circularity_msg, verify_constructor_circularity,
11955         check_abstract_method_definitions, java_check_regular_methods,
11956         java_check_abstract_methods, patch_method_invocation,
11957         check_for_static_method_reference, patch_assignment, patch_binop,
11958         patch_cast, array_constructor_check_entry, patch_return,
11959         patch_conditional_expr): Use xstrdup, not strdup.
11960
11961         * zextract.c (ALLOC): Use xmalloc, not malloc.
11962
11963 1999-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11964
11965         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
11966
11967         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
11968         (do_spec, lang_specific_pre_link, lang_specific_driver,
11969         input_filename, input_filename_length): Don't declare.
11970         (main_class_name, jvgenmain_spec, lang_specific_driver):
11971         Constify a char*.
11972         (lang_specific_driver): All calls to the function pointer
11973         parameter now explicitly call `fatal'.
11974
11975 1999-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11976
11977         * parse.y (find_applicable_accessible_methods_list): Search
11978         abstract classes as interfaces.
11979
11980 1999-09-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11981
11982         * class.c (finish_class): We're now outside a valid method
11983         declaration. Tell the rest of gcc so.
11984
11985 1999-09-08  Bruce Korb  autogen@linuxbox.com
11986
11987         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
11988
11989 1999-09-07  Tom Tromey  <tromey@cygnus.com>
11990
11991         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
11992         java-array.h.
11993         (decode_signature_piece): Don't emit "::" in JArray<>.
11994         (print_namelet): Only print trailing `;' when printing a class.
11995
11996 1999-09-10  Bernd Schmidt  <bernds@cygnus.co.uk>
11997
11998         * java-tree.h: Delete declarations for all tree nodes now moved to
11999         global_trees.
12000         * decl.c: Delete their definitions.
12001
12002 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
12003
12004         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
12005         * Makefile.in (OBJS): Add ggc-callbacks.o.
12006         (OBJDEPS): Likewise.
12007
12008 1999-09-03  Tom Tromey  <tromey@cygnus.com>
12009
12010         * parse.y (strip_out_static_field_access_decl): Return operand if
12011         it satisfies JDECL_P.
12012
12013 1999-09-02  Tom Tromey  <tromey@cygnus.com>
12014
12015         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
12016         Handle nested arrays, like `[[I'.
12017
12018 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12019
12020         * class.c (finish_class): Remove unused parameter, all callers
12021         changed.
12022
12023         * expr.c (build_java_athrow): Change return type to void.
12024         (java_lang_expand_expr): Make sure each case in switch returns a
12025         value.
12026
12027         * java-tree.h (finish_class): Fix prototype to take void args.
12028
12029         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
12030         (main): Issue return from main, not exit.
12031
12032         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
12033
12034         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
12035
12036         * jv-scan.c (main): Issue return from main, not exit.
12037
12038         * parse.y (check_abstract_method_definitions,
12039         java_check_abstract_method_definitions): Add static prototypes.
12040         (java_complete_expand_methods): Fix call to `finish_class'.
12041
12042         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
12043         and `prevpc'.
12044
12045 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12046
12047         * lang.c (language_string): Constify.
12048
12049 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12050
12051         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
12052         Remove hacks for stuff which comes from libiberty.
12053
12054         * Make-lang.in: Likewise.
12055
12056 1999-08-30  Hans-Peter Nilsson  <hp@axis.se>
12057
12058         * Makefile.in (xref.o): Depend on xref.c explicitly.
12059
12060 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12061
12062         * java-tree.h (lang_printable_name): Constify a char*.
12063
12064         * lang.c (lang_printable_name): Likewise.
12065
12066 1999-08-27  Jeffrey A Law  (law@cygnus.com)
12067
12068         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
12069         comments in C code.
12070
12071 1999-08-26  Tom Tromey  <tromey@cygnus.com>
12072
12073         * gjavah.c (print_cxx_classname): Print "::" before qualified
12074         name.
12075
12076 1999-08-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12077
12078         * parse.y (lookup_cl): Changed leading comment. Now does its best
12079         to set the column number.
12080         (qualify_ambiguous_name): Take WFL wrappers into account.
12081
12082 1999-08-25  Gregg Townsend  <gmt@cs.arizona.edu>
12083
12084         * verify.c (verify_jvm_instructions): Don't check instruction
12085         validity beyond end of method.
12086
12087 1999-08-25  Tom Tromey  <tromey@cygnus.com>
12088
12089         * jvspec.c (lang_specific_driver): Correctly handle --help again.
12090
12091 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12092
12093         * gjavah.c (print_name, print_base_classname, utf8_cmp,
12094         cxx_keyword_subst, generate_access, name_is_method_p,
12095         get_field_name, print_field_name, super_class_name, print_include,
12096         decode_signature_piece, print_class_decls, usage, help,
12097         java_no_argument, version, add_namelet, print_namelet): Add static
12098         prototype.
12099         (print_base_classname, utf8_cmp, cxx_keyword_subst,
12100         name_is_method_p): Constify a char*.
12101         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
12102         Provide a final else clause in an if-else-if.
12103         (print_field_info): Add missing final arg in function call to
12104         `print_field_name'.
12105         (print_method_info, decompile_method, decode_signature_piece,
12106         print_c_decl, print_full_cxx_name, print_stub,
12107         print_mangled_classname, super_class_name, print_include,
12108         add_namelet, add_class_decl, print_class_decls, process_file,
12109         help): Constify a char*.
12110
12111         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
12112         push_int_const, find_constant_wide, find_constant_index,
12113         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
12114         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
12115         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
12116         emit_if, emit_goto, emit_jsr, call_cleanups,
12117         make_class_file_name): Add static prototypes.
12118         (generate_bytecode_return, generate_bytecode_insns): Pass a
12119         NULL_PTR, not a NULL_TREE.
12120
12121         * jv-scan.c: Include "jcf.h".
12122         (main): Declare using DEFUN macro.
12123
12124         * jvspec.c (find_spec_file, lang_specific_pre_link,
12125         lang_specific_driver): Add prototypes.
12126         (find_spec_file): Constify a char*.
12127
12128         * keyword.gperf (hash, java_keyword): Add prototypes.
12129
12130         * lang.c (lang_print_error): Add static prototype.
12131         (lang_init): Prefer memcpy over bcopy to avoid casts.
12132
12133         * lex.c (yylex): Add static prototype.
12134
12135         * parse-scan.y: Include "lex.c" earlier.
12136
12137         * parse.h: Remove redundant declaration for `yylex'.
12138
12139         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
12140         labeled_block_contains_loop_p): Add static prototypes.
12141         (not_accessible_p): Make static to match prototype.
12142
12143         * verify.c (start_pc_cmp): Don't needlessly cast away const.
12144
12145 1999-08-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12146
12147         * parse.y (check_method_redefinition): Changed leading comment.
12148         (check_abstract_method_definitions): New function.
12149         (java_check_abstract_method_definitions): New function.
12150         (java_check_regular_methods): Call it.
12151         (verify_constructor_super): Fixed indentation.
12152         (lookup_method_invoke): Likewise.
12153
12154 1999-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12155
12156         * parse.y (method_header): Return a null pointer if the current
12157         class node is null.
12158         (finish_method_declaration): Return if the current function decl
12159         is null.
12160         (source_start_java_method): Likewise.
12161         (java_method_add_stmt): Likewise.
12162
12163 1999-08-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12164
12165         * class.c (emit_register_class): Removed unnecessary call to
12166         start_sequence.
12167         * parse.y (labeled_block_contains_loop_p): Removed unused local
12168         variable.
12169
12170 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12171
12172         * parse.y (java_refold): Added prototype.
12173
12174 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12175
12176         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
12177         (java_stabilize_reference): Removed unnecessary `else'.
12178         (java_complete_lhs): Set flag to remember boolean. Call
12179         java_refold. Added comments.
12180         (java_decl_equiv): New function.
12181         (binop_compound_p): Likewise.
12182         (java_refold): Likewise.
12183         (patch_unaryop): Striped static field access assigned to decl and
12184         op. Changed promotion scheme for ++/-- operators.
12185         (search_loop): New function.
12186         (labeled_block_contains_loop_p): Likewise.
12187         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
12188         comment.
12189         (patch_bc_statement): Call search_loop. Fixed comment.
12190
12191 1999-08-14  Anthony Green  <green@cygnus.com>
12192
12193         * expr.c (java_lang_expand_expr): Mark static array data as
12194         referenced.
12195
12196 1999-08-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12197
12198         * jvgenmain.c (main): NUL-terminate name_obstack.
12199
12200 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12201
12202         * check-init.c (check_bool2_init, done_alternative): Add static
12203         prototypes.
12204
12205         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
12206         (add_method, build_utf8_ref, build_class_ref,
12207         append_gpp_mangled_type, layout_class_method): Constify a char*.
12208
12209         * decl.c (push_promoted_type, make_binding_level): Add static
12210         prototypes.
12211         (push_promoted_type, pushdecl): Constify a char*.
12212
12213         * except.c (find_handler_in_range, link_handler,
12214         check_start_handlers): Add static prototypes.
12215
12216         * expr.c (process_jvm_instruction): Constify a char*.
12217
12218         * gjavah.c (main): Constify a char*.
12219
12220         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
12221         Constify a char*.
12222
12223         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
12224         static prototypes.
12225         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
12226         munge, print_ents): Constify a char*.
12227
12228         * jcf-dump.c (disassemble_method): Constify a char*.
12229         (print_constant_pool, print_exception_table): Add static prototypes.
12230         (print_constant, print_exception_table, main, disassemble_method):
12231         Constify a char*.
12232
12233         * jcf-io.c (find_classfile, find_class): Likewise.
12234
12235         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
12236         (set_source_filename, predefined_filename_p): Add static prototypes.
12237         (set_source_filename, get_constant, get_class_constant,
12238         find_in_current_zip): Constify a char*.
12239
12240         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
12241         static prototypes.
12242         (add_entry, add_path, jcf_path_classpath_arg,
12243         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
12244
12245         * jcf-reader.c (get_attribute, jcf_parse_preamble,
12246         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
12247         jcf_parse_one_method, jcf_parse_methods,
12248         jcf_parse_final_attributes): Add static prototypes.
12249         (get_attribute): Constify a char*.
12250
12251         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
12252         jcf_dependency_add_target, jcf_path_classpath_arg,
12253         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
12254
12255         * jv-scan.c (main): Constify a char*.
12256         (gcc_obstack_init): Add prototype arguments.
12257
12258         * jvgenmain.c (gcc_obstack_init): Likewise.
12259         (main): Constify a char*.
12260
12261         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
12262         static prototypes.
12263         (put_decl_string, lang_print_error): Constify a char*.
12264         (lang_init): Remove redundant extern prototype.
12265
12266         * mangle.c (emit_unicode_mangled_name): Constify a char*.
12267
12268         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
12269         Add static prototypes.
12270         (get_type_from_signature): Constify a char*.
12271
12272         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
12273         Add static prototypes.
12274         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
12275         (verify_jvm_instructions): Constify a char*.
12276
12277         * xref.c (xref_flag_value): Likewise.
12278
12279         * xref.h (xref_flag_value): Likewise.
12280
12281         * zextract.c (makeword, makelong): Add static prototypes.
12282         (makeword, makelong): Constify a uch*.
12283
12284 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12285
12286         * lang.c (java_dummy_print): Constify a char*.
12287         (lang_print_error): Likewise.
12288         (lang_init): Remove redundant prototype for `print_error_function'.
12289         (lang_init_source): Likewise.
12290         (lang_identify): Constify a char*.
12291
12292 1999-08-09  Tom Tromey  <tromey@cygnus.com>
12293
12294         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
12295         (WORDS_TO_LONG): Likewise.
12296         (WORDS_TO_DOUBLE): Likewise.
12297
12298 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12299
12300         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
12301
12302         * expr.c (java_stack_pop, java_array_data_offset,
12303         build_java_throw_out_of_bounds_exception, case_identity,
12304         build_java_check_indexed_type): Add static prototypes.
12305         (linenumber_table, expand_invoke, expand_java_field_op,
12306         build_primtype_type_ref, expand_byte_code): Constify a char*.
12307
12308         * java-tree.h (build_primtype_type_ref, linenumber_table):
12309         Constify a char*.
12310         (java_lang_expand_expr): Add prototype.
12311
12312         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
12313         `java_lang_expand_expr'.
12314
12315         * lex.c (java_lex_error): Constify a char*.
12316         (java_get_unicode, java_read_char, java_allocate_new_line,
12317         java_unget_unicode, java_sneak_unicode): Prototype.
12318
12319         * parse-scan.y (current_class, package_name, method_declarator,
12320         report_class_declaration, yyerror): Constify a char*.
12321
12322         * parse.h (java_report_errors): Prototype.
12323         (yyerror): Constify a char*.
12324
12325         * parse.y (classitf_redefinition_error, check_modifiers,
12326         parse_jdk1_1_error, lookup_package_type,
12327         lookup_package_type_and_set_next, get_printable_method_name,
12328         purify_type_name): Constify a char*.
12329         (build_super_invocation, maybe_generate_finit,
12330         verify_constructor_super, parser_add_interface,
12331         add_superinterfaces, jdep_resolve_class, note_possible_classname,
12332         java_complete_expand_methods, java_expand_finals,
12333         cut_identifier_in_qualified, java_stabilize_reference,
12334         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
12335         merge_string_cste): Prototype.
12336         (single_type_import_declaration, yyerror,
12337         variable_redefinition_error, build_array_from_name,
12338         build_unresolved_array_type, check_class_interface_creation,
12339         resolve_class, complete_class_report_errors,
12340         note_possible_classname, read_import_dir,
12341         find_in_imports_on_demand, resolve_package, fix_constructors,
12342         check_deprecation, lookup_method_invoke,
12343         maybe_build_primttype_type_ref, array_constructor_check_entry):
12344         Constify a char*.
12345         (java_complete_expand_methods, java_expand_finals): Make static.
12346         (convert_narrow): Remove static prototype.
12347
12348 1999-08-03  J"orn Rennecke <amylaar@cygnus.co.uk>
12349
12350         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
12351
12352 1999-08-02  Richard Henderson  <rth@cygnus.com>
12353
12354         * decl.c: Include defaults.h instead of expr.h.
12355         * parse.y: Likewise.
12356
12357 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
12358
12359         * java/decl.c (start_java_method): Change all uses of
12360         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
12361         Ensure expr.h is included.
12362         * java/expr.c (pop_arguments): Ditto.
12363         * java/parse.y (expand_start_java_method): Ditto.
12364
12365 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12366
12367         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
12368
12369 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
12370
12371         * decl.c: Include "function.h".
12372         * except.c: Likewise.
12373         * parse.y: Likewise.
12374         * Makefile.in: Update dependencies.
12375
12376 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12377
12378         * expr.c (build_java_soft_divmod): Provide a default case in switch.
12379         (java_lang_expand_expr): Mark parameters `target', `tmode' and
12380         `modifier' with ATTRIBUTE_UNUSED.
12381
12382         * gjavah.c (process_file): Add braces around ambiguous `else'.
12383
12384         * jcf-dump.c (print_access_flags, localvar_free): Change return
12385         type to void.
12386
12387         * parse.y (java_complete_expand_method): Initialize variable
12388         `exception_copy'.
12389         (resolve_qualified_expression_name): Likewise for `field_decl'.
12390         (patch_method_invocation): Likewise for `class_to_search'.
12391         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
12392         (patch_assignment): Likewise for `lhs_type'.
12393
12394         * verify.c (verify_jvm_instructions): Remove unused variable
12395         `caller'.
12396
12397 1999-07-25  Richard Henderson  <rth@cygnus.com>
12398
12399         * decl.c (va_list_type_node): New.
12400
12401 1999-07-25  Anthony Green  <green@cygnus.com>
12402
12403         * gjavah.c (print_stub): New function.
12404         (METHOD_IS_NATIVE): New macro.
12405         (print_mangled_classname): Make static.
12406         (HANDLE_END_FIELD): Don't emit fields during stub generation.
12407         (process_file): Perform stub generation.
12408         (HANDLE_METHOD): Don't emit class decls during stub
12409         generation.
12410         (HANDLE_END_METHOD): Take into account stub generation.
12411         (print_method_info): Handle stub generation.
12412         (print_stub): New function.
12413         (print_cxx_classname): Make signature consistant with others.
12414         (help): Describe -stubs option.
12415         (main): Create stub file.
12416         (version): Use version.c.
12417         (print_full_cxx_name): New function.
12418         (print_c_decl): Use print_full_cxx_name.
12419
12420 1999-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12421
12422         * check-init.c (check_init): Handle MAX_EXPR.
12423
12424 1999-07-15  Andrew Haley  <aph@cygnus.com>
12425
12426         * lang.c (flag_use_divide_subroutine): New variable.
12427         * typeck.c: (convert_ieee_real_to_integer): Bounds check
12428         fp-to-integer conversion.
12429         (convert): Call convert_ieee_real_to_integer when flag_fast_math
12430         is not set.
12431
12432         * expr.c (build_java_soft_divmod): New function.
12433         (build_java_binop): Call build_java_soft_divmod if
12434         flag_use_divide_subroutine is set.
12435         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
12436         soft_lrem_node: new builtin functions.
12437         (init_decl_processing) Initialize the new builtins.
12438         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
12439         soft_lrem_node: new builtin functions.
12440         (build_java_soft_divmod): New function.
12441         * parse.y: Call build_java_soft_divmod if
12442         flag_use_divide_subroutine is set.
12443         * parse.c: Rebuilt.
12444
12445         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
12446         a --specs= arg) even if not linking.
12447         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
12448         -fuse-divide-subroutine
12449
12450 1999-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12451
12452         * parse.y (resolve_and_layout): Check methods only once.
12453         (resolve_qualified_expression_name): Verify thrown exceptions
12454         compatibility.
12455         (check_thrown_exceptions): Reject exceptions thrown in
12456         initializer. Error message tuned.
12457
12458 1999-07-14  Andrew Haley  <aph@cygnus.com>
12459
12460         * expr.c (expand_expr): Do not return the last statement in a
12461         block as the block's value.
12462
12463 1999-07-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12464
12465         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
12466         CALL_EXPR, to avoid order of evaluation changes.
12467
12468 1999-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12469
12470         * parse.y (qualify_ambiguous_name): Do not use
12471         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
12472
12473 1999-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12474
12475         * check-init.c (check_init): Handle MAX_EXPR.
12476         * expr.c (force_evaluation_order): Force method call arguments to
12477         be evaluated in left-to-right order.
12478         * parse.y (qualify_ambiguous_name): Loop again to qualify
12479         NEW_ARRAY_EXPR properly.
12480
12481 1999-06-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12482
12483         * parse.y (patch_invoke): Resolve unresolved invoked method
12484         returned type.
12485         (qualify_ambiguous_name): STRING_CST to qualify expression for
12486         type name resolution.
12487
12488 1999-06-24  Andrew Haley  <aph@cygnus.com>
12489
12490         * class.c (finish_class): Whenever a deferred method is
12491         output, rescan the list of methods to see if a new candidate for
12492         output can be found.
12493
12494 1999-06-28  Tom Tromey  <tromey@cygnus.com>
12495
12496         * jvspec.c (lang_specific_driver): Recognize --help.
12497
12498 1999-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12499
12500         * parse.y (resolve_package): Fixed bogus return statement.
12501         (patch_method_invocation): Resolve method invocation beginning with
12502         a package name qualifier.
12503
12504 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12505
12506         * Make-lang.in (java.stage1): Depend on stage1-start.
12507         (java.stage2): Likewise for stage2-start.
12508         (java.stage3): Likewise for stage3-start.
12509         (java.stage4): Likewise for stage4-start.
12510
12511 1999-06-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12512
12513         * parse.y (java_complete_lhs): When doing cross referencing, don't
12514         try to keep file location on a WFL expanded as a CALL_EXPR.
12515
12516 1999-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12517
12518         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
12519         compiling to class file a void method with an empty method body.
12520         As a side effect, the bytecode backend will generate the
12521         appropriate `return' instruction.
12522
12523 1999-06-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12524
12525         * parse.y (lookup_package_type_and_set_next): New function prototype.
12526         (resolve_package): Search current and imported packages.
12527         (lookup_package_type_and_set_next): New function.
12528
12529 1999-06-22  Andrew Haley  <aph@cygnus.com>
12530
12531         * verify.c (verify_jvm_instructions): Check for pending blocks
12532         before invalid PC test and opcode switch, not after.
12533
12534 1999-06-21  Andrew Haley  <aph@cygnus.com>
12535
12536         * except.c (find_handler_in_range): The upper limit for exception
12537         ranges is exclusive, not inclusive: (start <= pc < end).
12538         (link_handler): find child pointer which points to outer by
12539         searching sibling list: previous code incorrectly assumed that
12540         outer->outer->first_child must point to outer.
12541         * verify.c (verify_jvm_instructions): FIXME added to code for
12542         `athrow'.
12543         (verify_jvm_instructions): Do not assume that the last block
12544         processed in a subroutine is a block which ends with a `ret'
12545         instruction.  With some control flows it is possible that the last
12546         block ends with an `athrow'.
12547
12548 1999-06-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12549
12550         * parse.y (qualify_ambiguous_name): Reorganized the post
12551         evaluation of non WFL leading expression nodes.
12552
12553 1999-06-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12554
12555         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
12556         CONVERT_EXPR.
12557
12558 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12559
12560         * parse.y (qualify_ambiguous_name): Handle qualified expression
12561         beginning with a STRING_CST.
12562
12563 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12564
12565         * parse.y (register_fields): Set DECL_INITIAL on both
12566         pre-initialized static and public fields.
12567         (resolve_field_access): Static field access expressions to always
12568         use pointer types.
12569         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
12570         qualification. CONVERT_EXPR to be resolved as an expression name.
12571         (java_complete_lhs): Identify and access qualified final
12572         initialized field in switch statement case expression.
12573         (fold_constant_for_init): Pre-initialized field decl constant to
12574         be folded.
12575
12576 1999-06-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12577
12578         * parse.y (note_possible_classname): Mark returned node with
12579         QUALIFIED_P only if the original class name contained a '/'.
12580
12581 1999-06-05  Anthony Green  <green@cygnus.com>
12582
12583         * Make-lang.in (gcjh): More parallel build fixes.
12584
12585 1999-06-03  Mike Stump  <mrs@wrs.com>
12586
12587         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
12588
12589 1999-06-02  Anthony Green  <green@cygnus.com>
12590
12591         * except.c (link_handler): Chain exception handlers in order.
12592
12593 1999-06-02  Anthony Green  <green@cygnus.com>
12594
12595         * expr.c (expand_byte_code): Fill unreachable bytecode regions
12596         with nops and process as usual in order to always set correct EH
12597         ranges.  Emit detailed warnings about unreachable bytecodes.
12598
12599 1999-06-02  Anthony Green  <green@cygnus.com>
12600
12601         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
12602         constant.
12603
12604 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12605
12606         * parse.y (lookup_field_wrapper): Unified returned value to NULL
12607           or the searched field decl.
12608
12609 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12610
12611         * parse.y (fold_constant_for_init): Convert numerical constant
12612         values to the type of the assigned field.
12613
12614 1999-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12615
12616         * expr.c (lookup_field): Relaxed the test on class loading error
12617         detection.
12618         * parse.y (fold_constant_for_init): Enabeled old code.
12619
12620 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12621
12622         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
12623         decide the validity of the cast of a java.lang.Cloneable reference
12624         to an array.
12625         (patch_conditional_expr): Fixed first argument passed to
12626         binary_numeric_promotion.
12627
12628 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12629
12630         * parse.y (qualify_ambiguous_name): Take into account that a
12631         CONVERT_EXPR might specify a type as a WFL.
12632
12633 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12634
12635         * parse.y (patch_assignment): Save the rhs before using it as an
12636         argument to _Jv_CheckArrayStore.
12637
12638 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12639
12640         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
12641
12642 1999-05-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12643
12644         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
12645         floating point literal only when the exponent indicator has been
12646         parsed.
12647
12648 1999-05-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12649
12650         * parse.y (formal_parameter:): Construct argument tree list
12651         element even if a yet unsupported final parameter was encountered.
12652
12653 1999-05-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12654
12655         * parse.y (finish_method_declaration): Issue errors for native or
12656         abstract methods declared with a method body, as well as for non
12657         native or non abstract methods with no method body.
12658
12659 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12660
12661         * class.c (build_utf8_ref): Initialize variable `field'.
12662
12663         * decl.c (init_decl_processing): Initialize variable `field'.
12664
12665         * expr.c (build_known_method_ref): Mark parameters `method_type',
12666         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
12667         (process_jvm_instruction): Likewise for parameter `length'.
12668
12669         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
12670         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
12671         ATTRIBUTE_UNUSED.
12672
12673         * parse.y (maybe_generate_clinit): Remove unused variable
12674         `has_non_primitive_fields'.
12675         (find_in_imports_on_demand): Initialize variables `node_to_use'
12676         and `cl'.
12677         (patch_binop): Likewise for variable `prom_type'.
12678         (patch_unaryop): Likewise for variable `prom_type'.
12679
12680         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
12681
12682         * xref.c (xref_table): Add missing initializer.
12683
12684 1999-05-14  Tom Tromey  <tromey@cygnus.com>
12685
12686         * java-except.h (struct eh_range): Removed unused `next' member.
12687         * verify.c (verify_jvm_instructions): Call check_nested_ranges
12688         after adding all exception handlers.  Sort exception ranges in
12689         order of start PC.
12690         (struct pc_index): New structure.
12691         (start_pc_cmp): New function.
12692         * except.c (add_handler): Return `void'.  Don't call link_handler;
12693         instead construct an ordinary linked list and do range
12694         coalescing.
12695         (check_nested_ranges): New function.
12696         (link_handler): Changed interface to allow merging of eh_ranges.
12697         Split overlapping ranges.  Return `void'.
12698
12699 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12700
12701         * parse.y (constructor_block_end:): New rule, tagged <node>.
12702         (constructor_body:): Use `constructor_block_end' instead of
12703         `block_end'.
12704
12705 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12706
12707         * parse.y (statement_nsi:): Pop `for' statement block.
12708         (java_complete_lhs): Labeled blocks containing no statement are
12709         marked as completing normally.
12710
12711 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12712
12713         * xref.c (xref_set_current_fp): New function, defined.
12714         * xref.h (xref_set_current_fp): New function, prototyped.
12715
12716 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12717
12718         * check-init.c (check_init): Take into account that
12719         LABELED_BLOCK_STMT can be empty.
12720
12721 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12722
12723         * parse.y (java_check_regular_methods): Warning check on not
12724         overriding methods with default access in other packages does not
12725         apply to `<clinit>'.
12726         (java_complete_lhs): If block body is an empty_stmt_node, replace
12727         it by NULL_TREE. This prevents gcc from generating an irrelevant
12728         warning.
12729
12730 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12731
12732         * check-init.c (check_init): Removed code accepting to see things
12733         falling through default:, when doing xrefs.
12734         * java-tree.h (do_not_fold): New global variable, declared.
12735         * parse.y (do_not_fold): New global variable, defined.
12736         (java_complete_expand_method): Set `do_not_fold' to the value of
12737         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
12738         and reinstall them after them have been purged; do not check for
12739         initializations; do not issue missing return errors.
12740         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
12741         when doing xrefs.
12742         (patch_binop): Skip the fold part when doing xrefs.
12743         (build_string_concatenation): Skip the concatenation part when
12744         doing xrefs.
12745         (patch_synchronized_statement): Do not generate a try-finally when
12746         doing xrefs.
12747         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
12748         and keep the location where the throw was seen.
12749         * typeck.c (convert): When `do_not_fold' is set, do not attempt
12750         any treatment on the converted node an simply return a NOP_EXPR of
12751         the targeted type.
12752         * xref.c (xref_get_data): New function, defined.
12753         * xref.h (xref_get_data): New function, declared.
12754         (XREF_GET_DATA): Use xref_get_data.
12755
12756 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12757
12758         * gjavah.c (print_include): Cast the result of `strlen' to int
12759         when comparing against a signed value.
12760         (add_namelet): Likewise.
12761
12762 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12763
12764         * expr.c (expand_invoke): Mark parameter `nargs' with
12765         ATTRIBUTE_UNUSED.
12766         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
12767
12768         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
12769         ATTRIBUTE_UNUSED.
12770
12771         * jcf-reader.c (get_attribute): Cast a value to long
12772         when comparing against a signed expression.  Likewise.
12773
12774         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
12775         HOST_BITS_PER_CHAR.
12776
12777 1999-05-11  Andrew Haley  <aph@cygnus.com>
12778
12779         * parse.y (source_end_java_method): If the current method contains
12780         any exception handlers, force asynchronous_exceptions: this is
12781         necessary because signal handlers in libjava may throw exceptions.
12782         * decl.c (end_java_method): Ditto.
12783
12784 1999-05-11  Tom Tromey  <tromey@cygnus.com>
12785
12786         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
12787         flags.
12788         * jvspec.c (THREAD_NAME): Removed.
12789         (GC_NAME): Likewise.
12790         (MATHLIB): Likewise.
12791         (WITHLIBC): Likewise.
12792         (GCLIB): Likewise.
12793         (THREADLIB): Likewise.
12794         (MATH_LIBRARY): Likewise.
12795         (lang_specific_driver): Don't add `-l' options to command line.
12796         Instead, add a single --specs option.  Recognize `-L' options and
12797         use them to search for spec file.
12798         (find_spec_file): New function.
12799         (SPEC_FILE): New define.
12800
12801 1999-05-11  Dave Brolley  <brolley@cygnus.com>
12802
12803         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
12804         cpplib-enabled build.
12805
12806 1999-05-05  Per Bothner  <bothner@cygnus.com>
12807
12808         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
12809         temporarily zero it while calling rest_of_decl_compilation.
12810
12811         * java-tree.h (string_ptr_type_node):  Add declaration.
12812         * decl.c:  Define and initialize string_ptr_type_node.
12813         * parse.y (patch_string_cst):  Use string_ptr_type_node.
12814
12815         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
12816         * parse.y (for_statement):  Now unconditionally exit_block.
12817         (finish_labeled_statement):  No longer exit_block if for-loop.
12818         (patch_loop_statement):  Check harder if the loop is already labeled.
12819
12820         * parse.y (patch_initialized_static_field):  Removed function.
12821         (maybe_generate_clinit):  Removed special handling for interfaces.
12822         (java_complete_expand_methods):  Do a preliminary java_complete_tree
12823         on <clinit> to determine if it can be removed.
12824         (java_complete_expand_method):  Remove special handling for <clinit>.
12825         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
12826         optimize if we get back empty_stmt_node.
12827         For MODIFY_EXPR, re-do checking of static initializers.
12828         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
12829         For VAR_DECL, pass correct context.
12830
12831         * verify.c (verify_jvm_instructions):  Better error messages.
12832
12833 1999-05-03  Tom Tromey  <tromey@cygnus.com>
12834
12835         * parse-scan.y (interface_declaration): Call
12836         report_class_declaration for interfaces.
12837
12838 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
12839
12840         * Makefile.in: Remove -v from bison command lines.
12841
12842 1999-04-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12843
12844         * check-init.c (check_init): Exclude a case of error when doing
12845         xrefs.
12846         * class.c (layout_class_method): Don't generate the error message
12847         twice when compiling from source.
12848         * lang-options.h: Added `-Wredundant-modifers' and
12849         `-Wunusupported-jdk11' flags and help text.
12850         * lang.c (lang_decode_option): Added support for
12851         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
12852         flag_static_local_jdk11 and flag_redundant set accordingly.
12853         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
12854         * parse.h (EXPR_WFL_ADD_COL): New macro.
12855         (DECL_END_SOURCE_LINE): Likewise.
12856         (DECL_INHERITED_SOURCE_LINE): Likewise.
12857         * parse.y (static_ref_err): New function, prototyped.
12858         (CCB_TK): Now tagged <operator>.
12859         (class_body:): Remember the location of the closing '}' of a class
12860         definition when doing xrefs.
12861         (block:): Likewise.
12862         (block_end:): Likewise.
12863         (create_class): Remember the location of the inherited class
12864         identifier when doing xrefs.
12865         (register_fields): Added test on first operand of `init' before
12866         testing it TREE_CODE.
12867         (method_header): Store the location of the class identifier in the
12868         class decl when doing xrefs.
12869         (finish_method_declaration): Don't combine first/last method line
12870         when doing xref.
12871         (java_check_regular_methods): Warning check on not overriding
12872         methods with default access on other packages move before check on
12873         static methods. Initialization of `aflags' also moved up.
12874         (resolve_expression_name): Call static_ref_err to report the error.
12875         (static_ref_err): New function, implemented.
12876         (resolve_field_access): Returned simplified static field access
12877         when doing xrefs.
12878         (resolve_qualified_expression_name): Check for illegal use of
12879         static fields in a non static context. Call static_ref_err to
12880         report error in various places.
12881         (java_complete_tree): Do not fold initialized static fields when
12882         doing xrefs.
12883         (java_complete_lhs): Likewise.
12884
12885 1999-04-29  Anthony Green  <green@cygnus.com>
12886
12887         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
12888         create internal labels.
12889         (lookup_label): Ditto.
12890
12891 1999-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12892
12893         * class.c (layout_class_method): Generate <clinit>'s rtl for
12894         interfaces.
12895         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
12896         for interfaces' <clinit>.
12897         * expr.c (lookup_field): Search for fields in interfaces.
12898         (expand_invoke): Fixed indentation.
12899         (expand_java_field_op): Likewise. Use IS_CLINIT.
12900         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
12901         (IS_CLINIT): New macro.
12902         * parse.y (type_declaration:): Call maybe_generate_clinit after an
12903         interface was parsed.
12904         (maybe_generate_clinit): Don't generate if the current class is an
12905         interface with only fields of primitive types.
12906         (reset_method_name): Use IS_CLINIT.
12907         (java_complete_expand_method): Expand <clinit> when it exists for
12908         interfaces. Use IS_CLINIT.
12909         (resolve_expression_name): Use DECL_CONTEXT instead of
12910         current_class to build static field references.
12911         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
12912         ARRAY_REF when doing xreferencing.
12913         (check_final_assignment): Fixed typo in leading comment. Use
12914         IS_CLINIT.
12915         (patch_array_ref): Don't fully expand array references when
12916         xreferencing.
12917         (patch_return): Use IS_CLINIT.
12918         (patch_throw_statement): Likewise.
12919
12920 1999-04-22  Tom Tromey  <tromey@cygnus.com>
12921
12922         * Make-lang.in (JAVA_SRCS): Added check-init.c.
12923
12924 1999-04-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12925
12926         * decl.c (predef_filenames, predef_filenames_size): New globals
12927         (init_decl_processing): predef_filenames and predef_filenames_size
12928         initialized.
12929         * java-tree.h (predef_filenames, predef_filenames_size): Declared
12930         extern.
12931         * jcf-parse.c (predefined_filename_p): New function.
12932         (yyparse): Check that files on the command line are specified only
12933         once and issue a warning otherwise.
12934         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
12935         * parse.y (source_end_java_method): Nullify NOP method bodies, to
12936         avoid a gcc warning with -W -Wall turned on.
12937         (java_expand_classes): Abort if errors were encountered.
12938         (java_complete_lhs): If the cross reference flag is set, wrap
12939         field DECL node around a WFL when resolving expression name.
12940
12941 1999-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12942
12943         * lang.c (lang_decode_option): Fixed returned value when parsing
12944         `-fxref=...' and `-Wall'.
12945         * parse.y (source_end_java_method): Do not generate code when
12946         flag_emit_xref is set.
12947         (resolve_expression_name): Do not build static field access when
12948         flag_emit_xref is set.
12949         (resolve_field_access): No special treatment on `length' when
12950         flag_emit_xref is set. Do not build qualified static field access
12951         when flag_emit_xref is set.
12952         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
12953         when flag_emit_xref is set.
12954         (patch_assignment): Do not generate array store runtime check when
12955         flag_emit_xref is set.
12956         * xref.c (xref_flag_value): Fixed function declaration
12957         indentation.
12958         (xset_set_data): New function.
12959         * xref.h (xref_set_data): Added prototype for new function.
12960         (typedef struct xref_flag_table): New field data.
12961         (XREF_GET_DATA): New macro.
12962
12963 1999-04-19  Tom Tromey  <tromey@cygnus.com>
12964
12965         * xref.h (enum): Removed trailing comma.
12966
12967         * parse.y (resolve_qualified_expression_name): Added missing
12968         `break'.
12969
12970 1999-04-15  Anthony Green  <green@cygnus.com>
12971
12972         * gjavah.c: New prototypes for java_float_finite and
12973         java_double_finite.
12974
12975 1999-04-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12976
12977         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
12978         references.
12979
12980 1999-04-06  Jeffrey A Law  (law@cygnus.com)
12981
12982         * Makefile.in (TREE_H): Add tree-check.h.
12983         (RTL_H): Add genrtl.h.
12984
12985 1999-04-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12986
12987         * parse.y (patch_assignment): Added ArrayStoreException runtime
12988         check.
12989
12990 1999-04-06  Per Bothner  <bothner@cygnus.com>
12991
12992         * expr.c (pop_type_0):  New function.
12993         (pop_type):  Use pop_type_0.
12994         * java-tree.h (pop_type_0):  New declaration.
12995         * verify.c (verify_jvm_instructions):  Check return instructions.
12996
12997         * parse.y (patch_binop):  Don't fold if non-constant and emiting
12998         class files.
12999
13000 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13001
13002         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
13003
13004         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
13005         (main_jcf): Don't define.
13006         (process_file): Don't set `main_jcf'.
13007
13008         * java-tree.h (main_jcf): Don't declare.
13009
13010         * jcf-parse.c (main_jcf): Add static definition.
13011
13012         * lang.c (main_jcf): Don't define.
13013
13014 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13015
13016         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
13017
13018         * decl.c (copy_lang_decl): Likewise for `bcopy'.
13019
13020         * jcf-depend.c: Include "config.h", not <config.h>.
13021
13022         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
13023         `bcopy' to PTR.
13024
13025         * jcf-path.c: Include "config.h", not <config.h>.
13026
13027         * lex.c: Don't include various system header files.
13028         (java_init_lex): Cast the argument of `bzero' to PTR
13029
13030         * parse-scan.y (java_push_parser_context): Likewise.
13031
13032         * parse.y (java_push_parser_context): Likewise.
13033         (patch_bc_statement): Match format specifier to variable argument.
13034
13035         * xref.c: Don't include <stdio.h>.
13036
13037 1999-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13038
13039         * parse.y (struct parser_ctxt *ctxp): Now global.
13040         (declare_local_variables): Use WFL compound value for the
13041         declaration source line value, when doing cross-referencing.
13042
13043 1999-03-31  Tom Tromey  <tromey@cygnus.com>
13044
13045         * gjavah.c (print_field_info): Allow constants of other types.
13046         (print_include): Generate include when new name is proper prefix
13047         of already printed name.
13048         (add_namelet): Likewise.
13049         (cxx_keyword_subst): New function.
13050         (print_method_info): Use it.
13051         (print_field_name): New function.
13052         (get_field_name): New function.
13053         (print_field_info): Use get_field_name and print_field_name.
13054
13055 1999-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13056
13057         * Makefile.in (keyword.h): Generate using gperf language 'C', not
13058         'KR-C', so gperf uses the `const' keyword on strings.
13059
13060         * keyword.gperf (java_keyword): Const-ify a char*.
13061
13062 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13063
13064         * parse.y (patch_bc_statement): Fixed identation and a bogus
13065         `printf' format.
13066
13067 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13068
13069         * parse.y (patch_assignment): Allow static variables in other
13070         classes to be assigned.
13071
13072 1999-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13073
13074         * class.c (maybe_add_interface): Remove unused variable
13075         `interface_binfo'.
13076         (make_class_data): Use = for assignment, not ==.  Likewise.
13077         (emit_register_classes): Remove unused variable `decl'.
13078
13079         * lex.c: Fix comment so as not to contain an embedded `/*'.
13080
13081         * verify.c (verify_jvm_instructions): Remove unused variable
13082         `self_type'.
13083
13084 1999-03-27  Per Bothner  <bothner@cygnus.com>
13085
13086         * parse.y (complete_loop_body):  Rename to finish_loop_body.
13087         (complete_labeled_statement):  Rename to finish_labeled_statement.
13088         (complete_for_loop):  Rename to finish_for_loop.
13089         (complete_method_declaration):  Rename to finish_method_declaration.
13090
13091         * java-tree.h (continue_identifier_node):  New global node.
13092         * decl.c:  Define and initialize continue_identifier_node.
13093         * parse.y (generate_labeled_block):  Remove - no longer needed.
13094         (build_loop_body):  Use continue_identifier_node for continue block.
13095         (finish_labeled_statement):  Also do pop_labeled_block actions.
13096         (java_complete_lhs):  POP_LOOP even if error.
13097         (build_labeled_block):  Special handling for continue_identifier_node.
13098         (patch_loop_statement):  Re-organize.
13099         (patch_bc_statement):  Re-write.
13100
13101 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13102
13103         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
13104         using a WFL compound value.
13105         * parse.y (xref.h): Include.
13106         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
13107         WFL compound value.
13108         (register_fields): Set WFL compound value to lineno if doing
13109         xrefs.
13110         (java_complete_expand_method): Call expand_xref if flag_emit_xref
13111         is set.
13112         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
13113         * xref.h (expand_xref): Prototype renamed from xref_generate.
13114
13115 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13116
13117         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
13118         (GET_CURRENT_BLOCK): New macro.
13119         * parse.y (current_static_block): New global variable.
13120         (method_body:): Define action.
13121         (complete_method_declaration): Set current_function_decl to NULL
13122         when work on the current method is done.
13123         (declare_local_variables): Use GET_CURRENT_BLOCK.
13124         (java_method_add_stmt): Likewise.
13125         (java_complete_expand_method): Disable the use of `this' when
13126         expanding <clinit>.
13127         (enter_a_block): If no current method exist, use
13128         current_static_block to link static initializer blocks.
13129         (exit_block): Rewritten to use current_static_block when no current
13130         method decl exists.
13131         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
13132         (patch_return): Forbid the use of `return' in static initializers.
13133         (patch_throw_statement): Fixed indentation. Issue specific error
13134         for uncaught thrown checked exception in static initializer
13135         blocks. Removed FIXME.
13136
13137 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
13138
13139         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
13140         Link gcj from gcc.o.
13141
13142 1999-03-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13143
13144         * parse.y (find_applicable_accessible_methods_list): When dealing
13145         with interface: ensure that a given interface or java.lang.Object
13146         are searched only once.
13147
13148 1999-03-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13149
13150         * gjavah.c (print_c_decl): Remove unused argument `flags'.
13151
13152         * jcf-dump.c (print_access_flags): Add braces around if-else.
13153
13154         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
13155         COMBINE_INPUTS.
13156
13157         * lex.c (build_wfl_node): Add static prototype.
13158
13159         * lex.h (build_wfl_node): Remove static prototype.
13160
13161         * parse.y: Include lex.c early enough to declare everything needed.
13162         Ensure calls to `build_wfl_node' pass the proper arguments.
13163         (create_class): Remove unused variable `super_decl'.
13164         (get_printable_method_name): Initialize variable `name'.
13165
13166 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13167
13168         * Changelog: Fixed 1999-03-22 typos.
13169         * lang.c (lang_decode_option): Fixed typo in error string in the
13170         XARG section.
13171
13172 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13173
13174         * Makefile.in (JAVA_OBJS): Added entry xref.o.
13175         (xref.o): New rule.
13176         * java-tree.h (flag_emit_xref): Declared extern.
13177         * lang.c (xref.h): Included.
13178         (flag_emit_xref): New global variable.
13179         (lang_decode_option): Added support for -fxref.
13180         * xref.c: Created.
13181         * xref.h: Likewise.
13182
13183 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
13184
13185         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
13186         linked with.
13187
13188 1999-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13189
13190         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
13191         $(srcdir)/../system.h and $(JAVA_TREE_H).
13192         (jcf-io.o): Depend on $(JAVA_TREE_H).
13193         (mangle.o): Likewise.
13194
13195         * check-init.c (check_cond_init): Add static prototype.
13196
13197         * class.c (build_java_method_type, hashUtf8String,
13198         make_field_value, get_dispatch_vector, get_dispatch_table,
13199         append_gpp_mangled_type, mangle_static_field): Likewise.
13200         (strLengthUtf8): Hide unused definition.
13201         (hashUtf8String): Const-ify.
13202         (make_field_value): Un-ANSI-fy.
13203
13204         * constants.c: Move inclusion of jcf.h above java-tree.h.
13205         (set_constant_entry, find_class_or_string_constant,
13206         find_name_and_type_constant, get_tag_node,
13207         build_constant_data_ref): Add static prototype.
13208
13209         * decl.c (push_jvm_slot, builtin_function,
13210         lookup_name_current_level): Likewise.
13211         (builtin_function): Const-ify.
13212
13213         * except.c (expand_start_java_handler, expand_end_java_handler):
13214         Add static prototype.
13215
13216         * expr.c (flush_quick_stack, push_value, pop_value,
13217         java_stack_swap, java_stack_dup, build_java_athrow,
13218         build_java_jsr, build_java_ret, expand_java_multianewarray,
13219         expand_java_arraystore, expand_java_arrayload,
13220         expand_java_array_length, build_java_monitor, expand_java_pushc,
13221         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
13222         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
13223         expand_compare, expand_test, expand_cond, expand_java_goto,
13224         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
13225         expand_java_field_op, java_push_constant_from_pool): Likewise.
13226
13227         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
13228         (build_java_arraynull_check): Mark parameters `node' and `type'
13229         with ATTRIBUTE_UNUSED.
13230         (note_label): Likewise for parameter `current_pc'.
13231         (expand_java_call, expand_java_ret): Hide unused definition.
13232
13233         * java-tree.h (make_class, build_constants_constructor,
13234         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
13235         init_outgoing_cpool, register_class, emit_register_classes,
13236         java_layout_seen_class_methods): Prototype.
13237         (unicode_mangling_length): Const-ify.
13238         (append_gpp_mangled_name, append_gpp_mangled_classtype,
13239         emit_unicode_mangled_name, format_int, format_uint,
13240         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
13241         jcf_print_utf8_replace, open_class): Prototype.
13242
13243         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
13244         <stdio.h>.  Include tree.h/java-tree.h.
13245         (utf8_equal_string usage, process_class): Add static prototype.
13246         (open_class): Don't prototype this here.
13247         (utf8_equal_string): Match arguments to format specifiers.
13248         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
13249         TABLE_SWITCH, disassemble_method): Likewise.
13250
13251         * jcf-io.c: Include tree.h/java-tree.h.
13252         (open_class, find_classfile, jcf_print_utf8,
13253         jcf_print_utf8_replace): Const-ify.
13254
13255         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
13256         parse_class_file): Add static prototype.
13257         (find_in_current_zip): Match definition to existing static
13258         prototype.
13259
13260         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
13261         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
13262         finish_jcf_block, define_jcf_label, get_jcf_label_here,
13263         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
13264         write_chunks, adjust_typed_op, generate_bytecode_conditional,
13265         generate_bytecode_return, perform_relocations, init_jcf_state,
13266         init_jcf_method, release_jcf_state, generate_classfile):
13267         Add static prototype.
13268         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
13269         (make_class_file_name): Const-ify.
13270
13271         * jcf.h (find_classfile): Const-ify.
13272
13273         * jv-scan.c (reset_report): Remove prototype.
13274
13275         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
13276         (error): Rewrite to allow varargs.
13277
13278         * lang.c (lang_f_options): Const-ify.
13279
13280         * lex.c (java_parse_escape_sequence): Add static prototype.
13281         (java_allocate_new_line): Match definition to existing static
13282         prototype.
13283
13284         * mangle.c Include tree.h/java-tree.h.
13285         (unicode_mangling_length, emit_unicode_mangled_name,
13286         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
13287
13288         * parse.h (jdep_code): Remove trailing comma in enumeration.
13289         (java_get_line_col): Move prototype outside of !JC1_LITE test.
13290         (reset_report): Add prototype.
13291
13292         * verify.c (push_pending_label, merge_types): Add static
13293         prototypes.
13294
13295         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
13296
13297 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13298
13299         * parse.y (find_applicable_accessible_methods_list): Extend the
13300         search to superinterfaces when relevant.
13301         (search_applicable_methods_list): New function.
13302
13303 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13304
13305         * class.c (unmangle_classname): Implemented stricter testing
13306         before setting the QUALIFIED_P flag on an identifier.
13307
13308 1999-03-16  Per Bothner  <bothner@cygnus.com>
13309
13310         * parse.y (java_complete_lhs):  Call force_evaluation_order
13311         after patch_newarray.
13312         (patch_binop):  Don't call fold if there are side effects.
13313
13314 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13315
13316         * parse.y (java_stabilize_reference): Use save_expr instead of
13317         building a SAVE_EXPR node.
13318         (java_complete_lhs): Patch the resulting string of the `+='
13319         operator (if necessary) and complete the RHS after having built
13320         the cast.
13321
13322 1999-03-15  Per Bothner  <bothner@cygnus.com>
13323
13324         * class.c (make_class):  Don't set CLASS_P here (because
13325         this function is also called by build_java_array_type).
13326         (push_class):  Set CLASS_P here instead.
13327         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
13328
13329         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
13330         context.  If the context is class, perfer "super" over "synchronized".
13331         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
13332
13333         * parse.y (create_class):  Don't call parser_check_super here;
13334         it is not robust.  Always wait until later.
13335
13336         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
13337         match what JDK 1.2 does), but don't set ACC_PUBLIC.
13338
13339 1999-03-13  Per Bothner  <bothner@cygnus.com>
13340
13341         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
13342         * lex.h (UNGETC):  Change misleading macro.
13343
13344 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13345
13346         * parse.y (java_stabilize_reference): Return NODE when patching a
13347         COMPOUND_EXPR.
13348         (java_complete_lhs): Put parenthesis around truth values.
13349
13350 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13351
13352         * class.c (layout_class_method): Don't make rtl for interface
13353         methods.
13354         * parse.h (GET_TYPE_NAME): New macro.
13355         * parse.y (if_then_statement:): Fixed indentation.
13356         (if_then_else_statement:): Likewise.
13357         (for_statement:): Fixed spacing.
13358         (try_statement:): Fixed indentation.
13359         (create_interface): Don't force interfaces to be abstract.
13360         (method_header): Abstract methods are OK in interfaces.
13361         (declare_local_variables): Fixed typo in comment.
13362         (java_complete_expand_method): Fixed indentation.
13363         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
13364         non accessible fields.
13365         (java_stabilize_reference): New function.
13366         (java_complete_lhs): Fixed indentation. Use
13367         java_stabilize_reference in compound assignment. Insert the
13368         cast. If not processing `+' fix string constants before processing
13369         binop.
13370
13371 1999-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13372
13373         * constants.c (find_class_or_string_constant): Cast variable `j'
13374         to a `jword' when comparing against one.
13375
13376         * expr.c (java_lang_expand_expr): Remove unused variables
13377         `has_finally_p' and `op0'.
13378
13379         * gjavah.c (print_field_info): Cast a value to jint when comparing
13380         against one.  Likewise for a jlong.
13381         (add_namelet): Likewise cast a `sizeof' to an int when comparing
13382         against a signed quantity.
13383
13384         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
13385         (print_signature): Don't needlessly dereference variable `str'
13386
13387         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
13388         `max_locals' with ATTRIBUTE_UNUSED.
13389         (jcf_parse_class): Likewise for variable `index'.
13390
13391         * parse.h (reverse_jdep_list): Remove static prototype.
13392
13393         * parse.y (build_jump_to_finally): Remove prototype and definition.
13394         (reverse_jdep_list): Add static prototype.
13395
13396         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
13397         `assignment' and `expr_decl'.
13398
13399         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
13400
13401 1999-03-12  Andrew Haley  <aph@cygnus.com>
13402
13403         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
13404         we'll need a directory separator and a null character.
13405
13406 1999-03-10  Per Bothner  <bothner@cygnus.com>
13407
13408         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
13409
13410   Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13411
13412         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
13413         interfaces.
13414
13415 1999-03-05  Per Bothner  <bothner@cygnus.com>
13416
13417         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
13418
13419         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
13420
13421         * class.c (layout_class_method):  A static method in a base class
13422         is never overridden, so treat it like it doesn't exist.
13423         However, do complain about private non-static method overriding
13424         public static method.
13425
13426         * parse.y:  Don't set unused INITIALIZED_P flag.
13427         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
13428
13429         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
13430         (build_array_from_name):  Re-order &index[string] to &string[index].
13431
13432         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
13433         error_mark (it might catch more errors, but it is more likely to lose).
13434
13435 1999-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13436
13437         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
13438         (parse-scan.o): Depend on toplev.h.
13439
13440         * class.c (make_method_value): Add prototype.  Make it static.
13441         Remove unused second argument, caller changed.
13442
13443         * expr.c (java_lang_expand_expr): Remove unused variable
13444         `return_label'.
13445
13446         * java-tree.h: Don't prototype find_in_current_zip.
13447         Add prototypes for verify_constant_pool, start_java_method,
13448         end_java_method, give_name_to_locals, expand_byte_code,
13449         open_in_zip, set_constant_value, find_constant1, find_constant2,
13450         find_utf8_constant, find_string_constant, find_class_constant,
13451         find_fieldref_index, find_methodref_index, write_constant_pool,
13452         count_constant_pool_bytes and encode_newarray_type.
13453
13454         * jcf-dump.c: Remove unused variable `LONG_temp'.
13455
13456         * jcf-parse.c: Include parse.h.
13457         (jcf_parse_source): Remove unused parameter, all callers changed.
13458         (jcf_figure_file_type): Add static prototype.
13459         (find_in_current_zip): Likewise.  Also remove unused parameter,
13460         all callers changed.
13461         (read_class): Initialize variable `saved_pos'.
13462
13463         * jcf-reader.c (jcf_parse_preamble): Mark variables
13464         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
13465
13466         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
13467         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
13468         (java_parse_doc_section): Initialize variable `seen_star'.
13469         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
13470         (java_lex_error): Mark parameters `msg' and `forward' with
13471         ATTRIBUTE_UNUSED.
13472         (java_get_line_col): Mark parameters `filename' and `line' with
13473         ATTRIBUTE_UNUSED.
13474
13475         * parse-scan.y: Include toplev.h.
13476         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
13477
13478         * parse.h: use `struct JCF', not plain `JCF'.
13479         (java_parser_context_save_global, java_expand_classes
13480         java_parser_context_restore_global, java_parse): Add prototypes.
13481
13482         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
13483         `node'.
13484
13485 1999-02-24  Per Bothner  <bothner@deneb.cygnus.com>
13486
13487         *  check-init.c (check_init):  COPYN takes word count, not bit count.
13488
13489 1999-02-26  Per Bothner  <bothner@cygnus.com>
13490
13491         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
13492         explicit build_decl.  (Avoids crash in reload when optimizing.)
13493
13494 1999-02-25  Per Bothner  <bothner@cygnus.com>
13495
13496         * decl.c (complete_start_java_method):  Handle synchronized method
13497         even when compiling from bytecode.
13498
13499 1999-02-26  Tom Tromey  <tromey@cygnus.com>
13500
13501         * gjavah.c (add_class_decl): Only generate `#include' if outer
13502         class is not the name of the class we are processing.  Correctly
13503         append `.h' in #include.
13504         (process_file): Clean up newlines around generated `#include's.
13505         (decode_signature_piece): Correctly handle inner classes.
13506         (struct include): New structure.
13507         (all_includes): New global.
13508         (print_include): New function.
13509         (add_class_decl): Use it.
13510         (process_file): Likewise.
13511         (add_class_decl): Generate include for java-array.h if array
13512         seen.
13513         (process_file): Don't generate java-array.h include.
13514
13515         * gjavah.c (add_namelet): Check for standard package names here.
13516         (add_class_decl): Don't check for standard package names here.
13517
13518 1999-02-25  Tom Tromey  <tromey@cygnus.com>
13519
13520         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
13521         When reading a zip file, only use strncmp if both strings are
13522         bigger than the buffer length.  Initialize `k' when looping
13523         through zip file.
13524
13525 1999-02-24  Tom Tromey  <tromey@cygnus.com>
13526
13527         * gjavah.c (struct namelet): New structure.
13528         (add_namelet): New function.
13529         (print_namelet): New function.
13530         (print_class_decls): Use add_namelet and print_namelet to generate
13531         namespaces and not classes.
13532         (method_printed): New global.
13533         (HANDLE_END_METHOD): Examine method_printed.
13534         (print_method_info): Set method_printed when required.  Print
13535         error if function to be ignored is marked virtual.  Handle $finit$
13536         method.
13537         (METHOD_IS_FINAL): New macro.
13538         (print_field_info): Use it.
13539         (HANDLE_METHOD): Clear method_printed.
13540         (method_pass): New global.
13541         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
13542         (process_file): Do two passes over both fields and methods.
13543         (HANDLE_METHOD): Examine method_pass.
13544         (root): New global.
13545         (add_class_decl): New function.
13546         (print_class_decls): Don't scan over entire constant pool.
13547
13548 1999-02-23  Tom Tromey  <tromey@cygnus.com>
13549
13550         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
13551         disable linking in that case.
13552
13553 1999-02-20  Tom Tromey  <tromey@cygnus.com>
13554
13555         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
13556         not 0x1f.
13557
13558 1999-02-21  Per Bothner  <bothner@cygnus.com>
13559
13560         * decl.c (build_result_decl), java-tree.h:  New method.
13561         (complete_start_java_method):  Handle synchronized methods.
13562         Don't build DECL_RESULT here.  (Ordering dependency problem.)
13563         (start_java_method):  Call build_result_decl here instead  ...
13564         * parse.y (java_complete_expand_method):  ... and here.
13565         (expand_start_java_method): Don't call complete_start_java_method here.
13566         (java_complete_expand_method):  Call it here instead.
13567         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
13568         * java-tree.h:  ... here.
13569
13570         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
13571         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
13572         for ARRAY_REF - it doesn't work when array bounds are checked.
13573         (patch_array_ref):  Handle it here instead.
13574
13575         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
13576
13577 1999-02-19  Per Bothner  <bothner@cygnus.com>
13578
13579         Force left-to-right evaluation of binary operations etc.
13580         * expr.c (force_evaluation_order), java-tree.h:  New function.
13581         * parse.y (java_complete_lhs):  Pass binary operations, procedure
13582         calls, and ARRAY_REFs to force_evaluation_order.
13583         (various):  Set TREE_SIDE_EFFECTS more carefully.
13584
13585         Tolerate random (non-UTF8) encoding in comments without complaining.
13586         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
13587         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
13588
13589         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
13590         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
13591
13592         * parse.y (java_complete_lhs):  Ignore an empty statement in a
13593         COMPOUND_EXPR.  Don't complain about empty statement after return.
13594
13595 1999-02-19  Per Bothner  <bothner@cygnus.com>
13596
13597         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
13598         in TREE_LIST - just chain the POINTER_TYPEs together.
13599         (resolve_class):  If type already resolved, return decl.
13600         After resolving, update TREE_TYPE(class_type), and name (if array).
13601         * parse.h (do_resolve_class), parse.y:  Make non-static.
13602         * class.c (maybe_layout_super_class):  Take this_class argument.
13603         Do do_resolve_class if necessary.
13604         (layout_class, layout_class_methods): Adjust calls appropriately.
13605         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
13606         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
13607         * typeck.c (build_java_array_type):  Don't call layout_class.
13608
13609 1999-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13610
13611         * parse.y (check_pkg_class_access): Allow private class access
13612         within the same package.
13613         (strip_out_static_field_access_decl): New function.
13614         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
13615         operator argument before testing its nature.
13616
13617 1999-02-03  Per Bothner  <bothner@cygnus.com>
13618
13619         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
13620         (TRY_EXPR):  Simplify - it no longer has a finally clause.
13621         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
13622         Simpler handling of TRY_EXPR, which no longer has a finally clause.
13623         * expr.c (java_lang_expand_expr):  Likewise.
13624         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
13625         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
13626         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
13627         (build_try_statement):  Remove finally parameter and handling.
13628         (build_try_finally_statement):  New function.
13629         (patch_try_statement):   No longer need to support finally clause.
13630         (try_statement):  Update grammar action rules.
13631         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
13632         Simpler handling of TRY_EXPR, which no longer has a finally clause.
13633
13634 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
13635
13636         * jcf-parse.c (get_constant): Add braces around computation of 'd'
13637         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
13638
13639 1999-02-17  Andrew Haley  <aph@cygnus.com>
13640
13641         * class.c (build_utf8_ref): Back out broken patch which was
13642         intended to to output signatures using '.' as a separator.
13643
13644         * class.c (make_class_data): Output signatures using '.' as a
13645         separator, rather than '/'.
13646         (mangled_classname): Likewise.
13647         (make_field_value): Likewise.
13648         (make_method_value): Likewise.
13649         * constants.c (alloc_class_constant): Likewise.
13650         * expr.c (build_invokeinterface): Likewise.
13651
13652 1999-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13653
13654         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
13655         of an ancient workaround.
13656
13657 1999-02-10  Jeffrey A Law  (law@cygnus.com)
13658
13659         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
13660         here anymore.
13661
13662 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13663
13664         * lex.c (yylex): Encode \0 as UTF8.
13665
13666 1999-02-10  Tom Tromey  <tromey@cygnus.com>
13667
13668         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
13669         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
13670         (libgcj_zip): Renamed.
13671         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
13672         LIBJAVA_ZIP_FILE.
13673         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
13674
13675         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
13676         (GC_NAME): Renamed -lgc to -lgcjgc.
13677
13678 1999-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13679
13680         * lex.c (java_lang_cloneable): Initialize.
13681         * parse.y (java_lang_cloneable): New static variable.
13682         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
13683         doing one more qualification round.
13684         (valid_ref_assignconv_cast_p): Reject null source or
13685         destination. Allow an array to be cast into java.lang.Cloneable.
13686         (patch_cast): Swapped two first arguments to first call to
13687         valid_ref_assignconv_cast_p.
13688
13689 1999-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13690
13691         * parse.h: DECL_P renamed JDECL_P.
13692         * parse.y: DECL_P replaced by JDECL_P.
13693         (build_array_from_name): Always use pointer's type.
13694         (patch_bc_statement): Extra code to search continue target in a
13695         for loop. Fixed comments. Continue target is current loop when
13696         unlabeled.
13697
13698 1999-02-05  Andrew Haley  <aph@cygnus.com>
13699
13700         * class.c (make_class_data): The superclass of an interface should
13701         be null, not class Object.
13702
13703         * lex.c (java_lex): Sign extend hex literals.
13704
13705 1999-02-04  Andrew Haley  <aph@cygnus.com>
13706
13707         * class.c (build_utf8_ref): Output signatures using '.' as a
13708         separator, rather than '/'.
13709         (make_class_data): Likewise.
13710
13711 1999-02-03  Marc Espie <Marc.Espie@liafa.jussieu.fr>
13712
13713         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
13714         mkstemp.o.  Get them from libiberty now.
13715
13716 1999-02-02  Jeffrey A Law  (law@cygnus.com)
13717
13718         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
13719
13720 1999-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13721
13722         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
13723         from libiberty.h
13724
13725 1999-02-02  Per Bothner  <bothner@cygnus.com>
13726
13727         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
13728         * jcf-write.c (generate_bytecode_return):  New function.
13729         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
13730
13731         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
13732         generate special [fd]const_[01] instructions.
13733
13734         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
13735
13736         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
13737         handling OPCODE_lookupswitch or OPCODE_tableswitch.
13738
13739 1999-02-01  Per Bothner  <bothner@cygnus.com>
13740
13741         * parse.y (patch_method_invocation):  Handle calling static methods,
13742         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
13743
13744         * parse.y (java_complete_lhs):  Don't complain about unreachable
13745         exit condition in a do-while statement.
13746
13747 1999-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13748
13749         * lex.c (java_read_char): Fixed utf8 decoding.
13750         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
13751         range.
13752         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
13753         comments. Local variable `all_primitive' is gone. Broadened
13754         acceptance of `0' to floating point targets. `long' can now be
13755         widened to `double' or `float'.
13756         (valid_method_invocation_conversion_p): Added leading
13757         comment. Fixed tabulation.
13758         (build_string_concatenation): Optimize out left or right empty
13759         string constants.
13760
13761 1999-01-28  Per Bothner  <bothner@cygnus.com>
13762
13763         * jcf-write.c (localvar_alloc):  Only emit entry for
13764         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
13765         (generate_bytecode_insns):  Only call put_linenumber if
13766         debug_info_level > DINFO_LEVEL_NONE.
13767         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
13768         is specified, add -g1 (for compatibility wih javac).
13769
13770 1999-01-28  Hans-Peter Nilsson  <hp@axis.se>
13771
13772         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
13773         gjavah.o, check-init.o, jv-scan.o
13774
13775 1999-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13776
13777         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
13778
13779         * gjavah.c: Include config.h and system.h.
13780
13781         * javaop.h (inline): Don't define, its handled by system.h.
13782         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
13783         from `inline' to `static inline'.
13784
13785         * jcf.h (inline): Don't define, its handled by system.h.
13786
13787         * lex.c (inline): Likewise.
13788
13789 1999-01-31  Zack Weinberg  <zack@rabi.columbia.edu>
13790
13791         * lang-specs.h: Map -Qn to -fno-ident.
13792
13793 1999-01-29  Richard Henderson  <rth@cygnus.com>
13794
13795         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
13796
13797 1999-01-29  Tom Tromey  <tromey@cygnus.com>
13798
13799         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
13800         then cast it to Object before calling `append' method.
13801
13802 1999-01-28  Per Bothner  <bothner@cygnus.com>
13803
13804         * check-init.c (check_bool2_init, check_bool_init, check_init):
13805         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
13806         * jcf-write.c (generate_bytecode_insns):  Likewise.
13807
13808 1999-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13809
13810         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
13811         * parse.y (patch_cast): Allow a boolean to be cast into a
13812         boolean.
13813
13814 1999-01-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13815
13816         * parse.y: (class_declaration:): Fixed indentation.
13817         (class_member_declaration:): Extra `;' after field declaration now
13818         accepted.
13819         (interface_declaration:): Removed debug messages in error reports.
13820         (patch_binop): Nodes created and returned inherit the orignal
13821         node's COMPOUND_ASSIGN_P flag value.
13822         (patch_cast): Fix cast from char to floating point.
13823
13824 1999-01-25  Andrew Haley  <aph@cygnus.com>
13825
13826         * except.c, java-except.h (expand_resume_after_catch): new
13827         function.
13828         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
13829         to branch back to main flow of control after a catch block.
13830
13831 1999-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13832
13833         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
13834         $(srcdir)/../system.h.
13835         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
13836         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
13837         (jcf-write.o): Likewise.
13838         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
13839         (mangle.o): Depend on $(srcdir)/../toplev.h.
13840         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
13841         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
13842
13843         * class.c: Include output.h and parse.h.
13844         (mangled_classname): Add the `const' keyword to a char*.
13845         (find_named_method): Hide unused function definition.
13846         (build_utf8_ref): Change type of variable `c' to unsigned char.
13847         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
13848         (build_class_ref): Add the `const' keyword to a char*.
13849         (layout_class_method): Remove unused variable `buf'.
13850
13851         * decl.c (find_local_variable): Remove unused variable `rtl'.
13852         (pushdecl): Likewise for variables `different_binding_level' and
13853         `oldglobal'.
13854         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
13855         (maybe_build_cleanup): Likewise for parameter `decl'.
13856
13857         * except.c (expand_start_java_handler): Mark parameter `range'
13858         with ATTRIBUTE_UNUSED.
13859
13860         * expr.c: Include except.h.
13861         (pop_type): Remove unused variable `i'.
13862         (pop_value): Likewise for variables `n_words' and `i'.
13863         (expand_java_arrayload): Likewise for variable `convert'.
13864         (java_lang_expand_expr): Likewise for variables `op0', `type',
13865         `mode', `unsignedp', `node' and `elements'.
13866         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
13867         `eh_ranges'.
13868         (process_jvm_instruction): Add a `const' qualifier to a char*.
13869
13870         * gjavah.c (output_directory): Add the `const' keyword to a char*.
13871         (temp_directory): Likewise.
13872         (print_c_decl): Likewise.
13873         (print_method_info): Likewise.
13874         (decode_signature_piece): Likewise.
13875         (print_mangled_classname): Likewise.
13876
13877         * java-except.h: Provide prototypes for maybe_start_try,
13878         maybe_end_try and add_handler.
13879
13880         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
13881         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
13882         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
13883         init_expr_processing, push_super_field, init_class_processing,
13884         can_widen_reference_to, class_depth, verify_jvm_instructions,
13885         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
13886         set_local_type, merge_type_state, push_type, load_type_state,
13887         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
13888         emit_unicode_mangled_name): Add prototypes.
13889
13890         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
13891         (print_signature_type): Use ISDIGIT, not isdigit.
13892         (print_signature): Remove unused variable `j'.
13893
13894         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
13895         int when comparing against one.
13896
13897         * jcf-parse.c: Include toplev.h.
13898
13899         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
13900         (localvar_free): Remove unused variable `i'.
13901         (generate_bytecode_conditional): Likewise for variable `kind'.
13902
13903         * jv-scan.c: Include config.h and system.h.  Remove redundant
13904         OS header and gansidecl.h includes.
13905         (warning): Add the `const' keyword to a char*.  Also add
13906         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
13907         __STDC__, when determining whether to use ANSI-isms.
13908         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
13909         (xmalloc): Don't redundantly prototype here.
13910         (main): Remove unused parameter `envp'.  Also fix the arguments
13911         passed to function `fatal' to match the format specifier.
13912
13913         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
13914
13915         * mangle.c: Include toplev.h.
13916         (emit_unicode_mangled_name): Declare parameter `len'.
13917
13918         * parse.y (parse_warning_context): Add the `const' keyword to a
13919         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
13920         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
13921         (issue_warning_error_from_context): Add the `const' keyword to
13922         a char*.
13923         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
13924         not `__STDC__' for whether to use ANSI-isms.
13925
13926         * typeck.c (incomplete_type_error): Mark parameters `value' and
13927         `type' with ATTRIBUTE_UNUSED.
13928         (parse_signature_type): Use ISDIGIT, not isdigit.
13929
13930         * verify.c (check_pending_block): Add the `const' keyword to a char*.
13931         (verify_jvm_instructions): Likewise.  Remove unused variables
13932         `field_name' and `default_val'.
13933
13934         * zextract.c: Include config.h and system.h.  Remove redundant
13935         OS header includes.
13936
13937         * zipfile.h: Prototype `read_zip_archive'.
13938
13939 1999-01-21  Andrew Haley  <aph@cygnus.com>
13940
13941         * typeck.c (convert): Allow conversions to void type: some
13942         optimizations in gcc do this.
13943
13944 1999-01-21  Andrew Haley  <aph@cygnus.com>
13945
13946         * typeck.c (convert_ieee_real_to_integer): New function.
13947         (convert): When not using fast-math and using hardware fp, convert
13948         an IEEE NaN to zero.
13949
13950 1999-01-18  Andrew Haley  <aph@cygnus.com>
13951
13952         * parse.y (patch_binop): Do a type conversion from signed to
13953         unsigned and then back to signed when a ">>>" is found.
13954
13955 1999-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13956
13957         * java-tree.h: (check_for_initialization): Added prototype.
13958         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
13959         * parse.y (do_resolve_class): Removed unused locals.
13960         (read_import_dir): Likewise.
13961         (resolve_qualified_expression_name): Array creation
13962         expressions are valid primary expressions.
13963         (qualify_ambiguous_name): Likewise.
13964         (patch_synchronized_statement): Removed unused local.
13965
13966 1999-01-17  Jeffrey A Law  (law@cygnus.com)
13967
13968         * Makefile.in (zextract.o): Add dependencies.
13969
13970         * Makefile.in: Do not put ^Ls at the start of a line.
13971
13972 1999-01-15  Per Bothner  <bothner@cygnus.com>
13973
13974         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
13975         sub-type the result of the call that gets the exception value.
13976
13977         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
13978         don't call finish_class.
13979
13980         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
13981         clear found before continuing.
13982
13983         * verify.c (verify_jvm_instructions):  On an array load, allow
13984         and handle top of stack to be TYPE_NULL.
13985
13986         * gjavah.c (generate_access):  Translate Java package private or
13987         protected access to C++ public, but with a comment.
13988
13989 1999-01-13  Andrew Haley  <aph@cygnus.com>
13990
13991         * expr.c (generate_name): Name prefix changed to avoid clashes
13992         with assembler temp labels.
13993
13994         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
13995         MODIFY_EXPR.  Without this, code for the assignment may not be
13996         generated at all and the synchronized statement will read an
13997         uninitialized variable.
13998
13999 1999-01-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14000
14001         * class.c (maybe_layout_super_class): Fixed returned value.
14002         * lex.c: Added 1999 to the copyright.
14003         (java_init_lex): Initialize java_lang_imported.
14004         * lex.h: Added 1999 to the copyright.
14005         * parse.h: Added 1999 to the copyright.
14006         (REGISTER_IMPORT): Fixed typo in trailing macro.
14007         (CURRENT_OSB): New macro.
14008         (struct parser_ctxt): New fields osb_depth, osb_limit.
14009         * parse.y (java_lang_id): New global variable.
14010         (type_import_on_demand_declaration): Don't import java.lang.* twice.
14011         (array_creation_expression:): Use CURRENT_OSB.
14012         (dims:): Uses a stack to keep track of array dimensions.
14013         (cast_expression:): Use CURRENT_OSB.
14014         (find_expr_with_wfl): Return NULL if node found doesn't meet the
14015         conditions.
14016         (register_fields): Fixed typos in comment.
14017         (check_method_redefinition): Fixed comment indentation.
14018         (java_check_regular_methods): Set saved found wfl to NULL after
14019         having reinstalled it in the previously found DECL_NAME.
14020
14021 1999-01-10  Richard Henderson  <rth@cygnus.com>
14022
14023         * gjavah.c (java_float_finite): Use a union to do type punning.
14024         (java_double_finite): Likewise.
14025
14026 1999-01-09  Per Bothner  <bothner@cygnus.com>
14027
14028         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
14029         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
14030         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
14031         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
14032         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
14033         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
14034
14035 1999-01-08  Per Bothner  <bothner@cygnus.com>
14036
14037         * check-init.c (check_init):  If compiling to native, we don't
14038         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
14039
14040 1999-01-08  Tom Tromey  <tromey@cygnus.com>
14041
14042         * parse-scan.y (variable_declarator_id): Set or increment
14043         bracket_count.
14044         (bracket_count): New global.
14045         (formal_parameter): Handle case where bracket pairs trail variable
14046         declarator id.
14047
14048 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
14049
14050         * jcf-parse.c (yyparse): variable len changed from a char to an
14051         int to prevent overflow.
14052
14053 1999-01-06  Per Bothner  <bothner@cygnus.com>
14054
14055         * java-tree.h:  Declare read_class.
14056         * jcf-parse.c (read_class):  New function.
14057         (load_class):  Now just call read_class.
14058
14059         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
14060         * jcf-parse.c (parse_source_file):  Declare save_error_count,
14061         which is needed by java_parse_abort_on_error macro,
14062         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
14063
14064         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
14065         constructor, if initializing a static field.
14066         (patch_new_array_init):  Set TREE_CONSTANT if it is.
14067         * expr.c (java_lang_expand_expr):  For a static array constructor
14068         of primitive elements, allocate the array itself statically.
14069         Disabled until we can set the vtable field statically.
14070
14071         * check-init.c:  New file.  Checks for definite assignment.
14072         * Makefile.in (JAVA_OBJS):  Add check-init.o.
14073         * parse.y (java_complete_expand_method): Call check_for_initialization.
14074         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
14075
14076 1999-01-06  Graham <grahams@rcp.co.uk>
14077
14078         * parse.y : include system.h instead of including
14079         standard headers directly with the exception of <dirent.h>.
14080
14081 1999-01-06  Per Bothner  <bothner@cygnus.com>
14082
14083         * lex.h:  Moved static function declarations to lex.c,
14084         to shut up some -Wall warnings.
14085         * lex.c:  Static function declarations moved here.
14086         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
14087
14088 1999-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14089
14090         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
14091
14092 1998-12-22  Per Bothner  <bothner@cygnus.com>
14093
14094         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
14095         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
14096
14097         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
14098         (localvar_alloc):  Change return type to void,
14099         (emit_unop):  Remove unused variable size.
14100
14101         * jcf-write.c (struct jcf_block):  Add new union.
14102         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
14103         (call_cleanups):  New functions.
14104         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
14105         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
14106         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
14107         * lang.c (lang_init):  Call using_eh_for_cleanups.
14108         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
14109         completing operands to patch_synchronized_statement.
14110         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
14111         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
14112         WITH_CLEANUP_EXPR instead of TRY_EXPR.
14113
14114 1998-12-20  John F. Carr  <jfc@mit.edu>
14115
14116         * Make-lang.in: Comment out control-Ls; they upset some makes.
14117
14118 1998-12-18  Tom Tromey  <tromey@cygnus.com>
14119
14120         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
14121         consistently.
14122
14123 1998-12-17  Tom Tromey  <tromey@cygnus.com>
14124
14125         * parse.y (DIR_SEPARATOR): New define.
14126         (check_class_interface_creation): Use it.
14127
14128         * parse-scan.y (report_main_declaration): Recognize
14129         `java.lang.String' in argument to main.
14130
14131 1998-12-16  Per Bothner  <bothner@cygnus.com>
14132
14133         * parse.y (create_interface):  Remove bogus test.
14134
14135 1998-12-16  Per Bothner  <bothner@cygnus.com>
14136
14137         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
14138         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
14139
14140 1998-12-16  Tom Tromey  <tromey@cygnus.com>
14141
14142         * parse-scan.y (qualified_name): Use correct sprintf format.
14143
14144 1998-12-15  Tom Tromey  <tromey@cygnus.com>
14145
14146         * gjavah.c (print_field_info): Changed how most negative number is
14147         printed.
14148
14149 1998-12-14  Per Bothner  <bothner@cygnus.com>
14150
14151         * parse.y (fold_constant_for_init):  New function.
14152         (resolve_expression_name):  Don't replace static final
14153         constant-initialized fields by its value.
14154         (java_complete_lhs):  New.  Same as java_complete_tree, except does
14155         not replace static final constant-initialized fields by their values.
14156         (register_fields):  If there is an initializer, set DECL_INITIAL and
14157         MODIFY_EXPR_FROM_INITIALIZATION_P.
14158         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
14159         Only call patch_initialized_static_field if
14160         MODIFY_EXPR_FROM_INITIALIZATION_P.
14161         (patch_initialized_static_field):  If not valid constant, clear
14162         DECL_INITIAL.
14163
14164         * parse.y (lookup_field_wrapper):  Fix thinko.
14165
14166         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
14167         set and restore global lineno.
14168
14169 1998-12-14  Tom Tromey  <tromey@cygnus.com>
14170
14171         * gjavah.c (print_field_info): If value to print is the smallest
14172         value of its size, then print as hex to avoid later warnings from
14173         C++ compiler.
14174
14175 1998-12-14  Tom Tromey  <tromey@cygnus.com>
14176
14177         * gjavah.c (decompile_method): Decompile `return null'.
14178         (process_file): Generate `#pragma interface'.
14179         (method_declared): New global.
14180         (print_method_info): Set it.
14181         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
14182         (print_method_info): Handle abstract methods.
14183
14184 1998-12-13  Per Bothner  <bothner@cygnus.com>
14185
14186         * parse.y (patch_method_invocation):  If class_decl is null
14187         (e.g. an array type), use original type.
14188
14189         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
14190         errors about uncaught exception from clone (of array, specifically).
14191
14192 1998-12-13  Tom Tromey  <tromey@cygnus.com>
14193
14194         * gjavah.c (decompile_method): Handle all types of `return'
14195         opcode.  Decompile `return this' and `return'.
14196         (method_access): New global.
14197         (print_method_info): Set it.
14198         (decompile_method): Don't decompile a synchronized method.
14199
14200 1998-12-13  Tom Tromey  <tromey@cygnus.com>
14201
14202         * jcf-reader.c (jcf_parse_one_method): Recognize
14203         HANDLE_END_METHOD.
14204         * gjavah.c (HANDLE_END_METHOD): New macro.
14205         (HANDLE_CODE_ATTRIBUTE): New macro.
14206         (decompile_method): New function.
14207         (print_method_info): Don't print `;\n' at end of function decl.
14208         Include java-opcodes.h.
14209         (decompiled): New global.
14210
14211 1998-12-12  Per Bothner  <bothner@cygnus.com>
14212
14213         * class.c (build_class_ref):  Handle PRIMTYPE.class if
14214         flag_emit_class_files.
14215         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
14216         if flag_emit_class_files.
14217         * parse.y (java_complete_tree):  Pre-liminary support for
14218         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
14219
14220         * parse.y (patch_synchronized_statement):   Don't call monitorexit
14221         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
14222
14223         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
14224
14225         * zipfile.h (opendir_in_zip):  New declaration.
14226         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
14227         (opendir_in_zip):  New function, using code from open_in_zip.
14228         (open_in_zip):  Call opendir_in_zip.
14229         (find_class):  Remove no-longer-used do_class_file parameter,
14230         but add source_ok parameter.  Change logic so if we find a .java file,
14231         we don't look for .class in later classpath emtries.
14232         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
14233         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
14234         * gjavah.c: Update call to find_class.
14235         * jcf-dump.c:  Likewise.
14236
14237         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
14238         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
14239         nothing if body is empty_stmt_node.
14240         Various little fixes so SP gets correctly adjusted.
14241         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
14242         For CALL_EXPR, test if static first.
14243         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
14244         such as the ones we create for Object and Class.
14245         Set and restore current_function_decl.
14246         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
14247         (note_possible_classname):  New function.
14248         (read_import_entry):  Removed.  Merged with read_import_dir.
14249         (read_import_dir):  Don't call find_class - that only gives us
14250         the first classpath entry having the needed package.
14251         Use the struct buffer data structure from buffer.h.
14252         (read_import_dir, find_in_imports_on_demand):  The remembered
14253         class names now use '.' (not '/') as package separator.
14254
14255         * parse.y (java_complete_expand_methods):  Call write_classfile
14256         here, and not in java_expand_classes (which only gets first class).
14257
14258 1998-12-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14259
14260         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
14261         (register_fields):  If a static fields has an initializer, just
14262         chain it on ctxp->static_initialized, and handle later.
14263         (java_complete_expand_methods):  Force <clinit> first.
14264         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
14265         - it's already been completed.
14266         (patch_initialized_static_field):  New function.
14267         (java_complete_field):  Call it.
14268
14269 1998-12-12  Per Bothner  <bothner@cygnus.com>
14270
14271         * expr.c (encode_newarray_type, build_new_array):  New functions.
14272         * java-tree.h:  Declare build_new_array.
14273         * jcf-write.c (patch_newarray):  Use build_new_array.
14274
14275         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
14276         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
14277
14278         * parse.y (patch_new_array_init):  Re-organize.
14279         Now is passed the actual array (pointer) type of the value.
14280         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
14281         (patch_array_constructor):  Removed - merged into patch_new_array_init.
14282         (java_complete_tree):  Update patch_new_array_init.
14283
14284         * jcf-write.c (find_constant_index):  New function.
14285         (generate_bytecode_insns):  Use find_constant_index.
14286         (generate_classfile):  Use find_constant_index for ConstantValue.
14287
14288 1998-12-11  Tom Tromey  <tromey@cygnus.com>
14289
14290         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
14291         * decl.c (init_decl_processing): Renamed dtable -> vtable.
14292         * class.c (make_class_data): Renamed dtable -> vtable, and
14293         dtable_method_count -> vtable_method_count.
14294
14295 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14296
14297         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
14298         global variables, initialized.
14299         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
14300         Declared new global variables.
14301         * lex.c (java_lex): Return long_zero_node, float_zero_node,
14302         double_zero_node, integer_zero_node upon direct matching.
14303         * parse.y (purify_type_name): Added function prototype.
14304         (duplicate_declaration_error_p): Consider new_type as potentially
14305         being a incomplete type. Use purify_type_name on type string.
14306         (method_header): saved_type: unused variable removed. Don't figure
14307         return type if method name is invalid.
14308         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
14309         processed by patch_unaryop.
14310         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
14311         increment/decrement node into its original type after binary
14312         numeric promotion on its operands.
14313
14314 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14315
14316         * parse.y (array_initializer:): Array init operand is NULL_TREE
14317         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
14318         now an error. Fixed indentation problems.
14319         (patch_string): Handle error_mark_node as an argument.
14320         (patch_new_array_init): Fixed indentation problems.
14321         (array_constructor_check_entry): Removed check on null wfl_value.
14322         Return an error if wfl_value's walk returns an error.
14323
14324 1998-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14325
14326         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
14327         * lex.c (java_lex): Remember column position before advancing one
14328         token. Retain location information on OCB_TK.
14329         * lex.h (typedef struct java_lc): Added new field.
14330         * parse.h (GET_SKIP_TYPE): New macro.
14331         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
14332         * parse.y (build_new_array_init, patch_new_array_init,
14333         patch_array_constructor, maybe_build_array_element_wfl,
14334         array_constructor_check_entry): New function prototypes.
14335         (switch_block:): Tagged <node>.
14336         (OCB_TK): Tagged <operator>.
14337         (array_initializer:): Installed actions.
14338         (variable_initializer): Build location information on element if
14339         necessary.
14340         (switch_statement:): Fixed indentation typo.
14341         (switch_block:): Redefined default action.
14342         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
14343         (patch_assignment): Removed duplicate code.
14344         (maybe_build_array_element_wfl, build_new_array_init,
14345         patch_new_array_init, patch_array_constructor,
14346         array_constructor_check_entry): New functions.
14347
14348 1998-12-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14349
14350         * parse.y (array_initializer): Tagged <node>.
14351         (variable_initializer:): Use default rule.
14352         (array_initializer:): Defined actions.
14353         (variable_initializers:): Likewise.
14354         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
14355         non-static field accesses.
14356         (patch_invoke): Fixed indentation typo.
14357         (java_complete_tree): Likewise.
14358         (build_labeled_block): Changed leading comment. Generate an error
14359         in case of duplicate loop labels.
14360         (patch_conditional_expr): Patch results of string concatenation
14361         operations.
14362
14363 1998-12-06  Per Bothner  <bothner@cygnus.com>
14364
14365         * constants.c (find_methodref_index):  When the class is an interface,
14366         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
14367
14368         * decl.c (finit_identifier_node):  Use "$finit$", rather than
14369         "<finit>" (which Sun's verifier rejects).
14370         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
14371         (generate_field_initialization_code):  Removed.
14372         (fix_constructors)  Don't add call to $finit$ here (wrong order).
14373         (patch_method_invocation):  Add $finit$ call here.
14374
14375         * java-tree.h (CALL_USING_SUPER):  New macro.
14376         * parse.y (patch_invoke):  Remove im local variable.
14377         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
14378         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
14379         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
14380
14381         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
14382
14383         * parse.y (java_complete_tree):  Don't complain about unreachable
14384         statement if it is empty_stmt_node.
14385
14386         * jcf-write.c (find_constant_wide):  New function.
14387         (push_long_const):  Use find_constant_wide.
14388
14389         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
14390         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
14391         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
14392         Emit invokeinterface when calling an interface method.
14393         Emit invokespecial also when calling super or private methods.
14394
14395         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
14396
14397 1998-12-06  Per Bothner  <bothner@cygnus.com>
14398
14399         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
14400
14401 1998-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14402
14403         * java-tree.h (java_layout_seen_class_methods): New function
14404         prototype.
14405         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
14406         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
14407         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
14408         * parse.y (method_declarator:): Defined action.
14409         (issue_warning_error_from_context): input_filename saved, set to
14410         the appropriate value and restored after java_error is called.
14411         (build_unresolved_array_type): Fixed comment.
14412         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
14413         (method_header): Deal with return type the same way type are
14414         handled for fields and method's parameters and local variables
14415         types are handled.
14416         (check_method_redefinition): Removed extra CR.
14417         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
14418         (java_layout_seen_class_methods): New function.
14419         (java_layout_classes): Call java_layout_seen_class_methods.
14420
14421 1998-12-03  Per Bothner  <bothner@cygnus.com>
14422
14423         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
14424
14425 1998-12-03  Per Bothner  <bothner@cygnus.com>
14426
14427         * jcf-dump.c (main):  Fix error message.
14428         * jcf-path.c (add_entry):  Style fix.
14429
14430 1998-12-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14431
14432         * class.c (layout_class_method): Call build_java_argument_signature
14433         on constructors too.
14434         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
14435         (patch_method_invocation): Define a primary when resolving an
14436         expression name. Augmented comment on code checking illegal `this'
14437         usage. Loosened it test by accepting NEW_CLASS_EXPR.
14438
14439 1998-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14440
14441         * class.c (layout_class_method): Don't report error on non-static
14442         overriding static if the method is private.
14443         * java-tree.h (finish_class): Prototype added.
14444         * lex.c (java_get_line_col): Handle col argument -2 value.
14445         * parse.h: All static method declarations moved to parse.y.
14446         * parse.y: Now contains all static method declarations previously
14447         found in parse.h.
14448         (find_expr_with_wfl, missing_return_error,
14449         unreachable_stmt_error): New functions.
14450         (java_get_real_method_name): Identify constructors bearing class
14451         names in source code compiled classes only.
14452         (java_complete_expand_methods): Call missing_return_error.
14453         (invocation_mode): Private methods invoked as static methods.
14454         (java_complete_tree): Call unreachable_stmt_error.
14455
14456 1998-12-01  Tom Tromey  <tromey@cygnus.com>
14457
14458         * Makefile.in (+target): Removed.
14459         (+xmake_file): Likewise.
14460         (+tmake_file): Likewise.
14461         (.NOEXPORT): Removed duplicate.
14462
14463 1998-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14464
14465         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
14466
14467         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
14468
14469         * jvgenmain.c: Remove the xmalloc prototype, we get it from
14470         libiberty.h.  Provide an xmalloc definition.
14471
14472         * jvspec.c: Remove the xmalloc prototype.
14473
14474         * parse-scan.y: Include config.h and system.h.  Don't include
14475         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
14476         Provide an xstrdup definition.
14477
14478 1998-11-26  Alexandre Oliva  <oliva@dcc.unicamp.br>
14479
14480         * jcf-path.c (add_entry): Recognize ".jar" too.
14481         * lang-specs.h: Likewise.
14482
14483 1998-11-26  Per Bothner  <bothner@cygnus.com>
14484
14485         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
14486         soft_monitorenter_node, soft_monitorexit_node, throw_node.
14487
14488         * jcf-write.c (generate_bytecode_insns):
14489         Handle pre/post-increment/decrement of long.
14490
14491         * jcf-write.c (generate_bytecode_insns):
14492         Handle missing exception handler (finally for synchronized).
14493
14494 1998-11-25  Per Bothner  <bothner@cygnus.com>
14495
14496         * java-tree.h (end_params_node):  Declare global.
14497         * decl.c (end_params_node):  New global.
14498         (init_decl_processing, start_java_method):  Use end_params_node for
14499         end of list of parameter types.  Follows correct gcc conventions.
14500         * expr.c (pop_argument_types, pop_arguments):  Likewise.
14501         * lang.c (put_decl_node):  Likewise.
14502         * typeck.c (various places):  Likewise.
14503         * class.y (various places):  Likewise.
14504         * parse.y (various places):  Likewise.
14505
14506         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
14507         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
14508
14509         * class.c:  Add #include flags.h, remove no-longer needed declaration.
14510
14511         * class.c (layout_class_method):  Remove commented-out code, re-format.
14512         Don't add vtable entry (or index) for private methods.
14513         * expr.c (expand_invoke):  A private method is implicitly final.
14514         * class.c (make_class_data):  If inlining or optimizing,
14515         skip private methods.
14516
14517         * class.c (finish_class):  New function.  Calls existing methods,
14518         but alls emits deferred inline functions.
14519         * jcf-parse.c (parse_class_file):  Call finish_class.
14520         * parse.y (java_complete_expand_methods):  Likewise.
14521
14522         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
14523
14524         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
14525
14526 1998-11-25  Marc Espie <espie@quatramaran.ens.fr>
14527
14528         * jcf-write.c (generate_bytecode_conditional): Fix typo.
14529
14530 1998-11-24  Per Bothner  <bothner@cygnus.com>
14531
14532         * (generate_classfile): Always write class access flag with
14533         ACC_SUPER set.
14534
14535 1998-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14536
14537         * class.c (maybe_layout_super_class): New function.
14538         (layout_class): Reorganized. Loop on class methods dispatched into
14539         a new function. Call maybe_layout_super_class.
14540         (layout_class_methods, layout_class_method): New functions.
14541         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
14542         class.
14543         (expand_invoke): Likewise.
14544         * java-tree.h (all_class_list): New global variable declared.
14545         (layout_class_methods, layout_class_method): New function
14546         prototypes.
14547         (LAYOUT_SEEN_CLASS_METHODS): New macro.
14548         * jcf-parse.c (all_class_list): New global variable.
14549         (load_class): Extended what class_or_name can be. Use parser
14550         context mechanism to save globals before calling jcf_parse.
14551         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
14552         is set on the file name.
14553         (jcf_parse): Layout class methods when Object is loaded, otherwise
14554         record class in all_class_list for delayed method layout.
14555         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
14556         * lang.c (put_decl_node): Decode <init> into the decl context
14557         class name.
14558         * lex.c (java_allocate_new_line): Use xmalloc.
14559         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
14560         pointers, not TREE_LIST elements.
14561         (struct parser_ctxt): Fixed comment indentations, added comments
14562         and reordered some fields.
14563         (java_check_methods): Function prototype removed.
14564         * parse.y (java_push_parser_context): Use xmalloc.
14565         (java_parser_context_restore_global): Pop extra pushed ctxp only
14566         when there's nothing next.
14567         (maybe_create_class_interface_decl): Fixed comment, add new
14568         created class decl to all_class_list.
14569         (method_header): Use GET_REAL_TYPE on argument's types.
14570         (method_declarator): Use GET_REAL_TYPE, change type to the real
14571         type in TREE_LIST dependency node. Build argument list with the
14572         real type.
14573         (create_jdep_list): Use xmalloc. Removed allocation error message.
14574         (obtain_incomplete_type): Fixed leading comment. Broadened
14575         incoming argument meaning.
14576         (register_incomplete_type): Use xmalloc. Removed allocation error
14577         message.
14578         (safe_layout_class): Fixed leading comment.
14579         (jdep_resolve_class): Reversed if statement condition and switch
14580         if and else bodies.
14581         (resolve_and_layout): Fixed leading comment. Broadened incoming
14582         argument meaning.
14583         (complete_class_report_errors): New local variable name, for
14584         clarity. purify_type_name used for all error cases.
14585         (java_get_real_method_name): Stricter check on constructors.
14586         (java_check_regular_methods): Reverse methods list only if not
14587         already laid out. Layout artificial constructor.
14588         (java_check_methods): Deleted.
14589         (source_start_java_method): Obtain incomplete type for patchable
14590         method arguments.
14591         (java_layout_classes): Fixed leading comment. Use
14592         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
14593         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
14594         before returning. Fixed comments.
14595         (java_expand_classes): Check for errors up front.
14596         (patch_method_invocation): Class to search is resolved and laid
14597         out.
14598
14599 1998-11-24  Per Bothner  <bothner@cygnus.com>
14600
14601         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
14602
14603         * javaop.h (int8):  Removed - not used.
14604         (jbyte):  Redefine portably with correct signedness.
14605
14606         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
14607
14608         * jcf-write.c (generate_bytecode_insns):  Fix typo
14609         OPCODE_getstatic to OPCODE_getfield.
14610
14611         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
14612         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
14613         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
14614
14615 1998-11-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14616
14617         * jcf-parse.c (jcf_parse_source): Function returned type is
14618         void. Added prototype.
14619         (jcf_parse): Function returned type is void.
14620         (yyparse): Remove call to fclose on the last parsed file.
14621
14622         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
14623
14624 1998-11-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14625
14626         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
14627         (layout_class): Cope with methods featuring WFL in decl names.
14628         * decl.c (unqualified_object_id_node): New global variable,
14629         initialized.
14630         (build_decl_no_layout): Removed.
14631         * expr.c (build_primtype_type_ref): Handle Double.
14632         (java_lang_expand_expr): Fixed indentations.
14633         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
14634         (flag_wall, flag_redundant, flag_not_overriding,
14635         flag_static_local_jdk1_1, unqualified_object_id_node): Global
14636         variable declarations.
14637         (build_decl_no_layout): Removed prototype.
14638         (java_get_real_method_name): Added prototype.
14639         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
14640         (java_parse_abort_on_error): Macro now just returns.
14641         * jcf-parse.c (jcf_parse_source): Check fclose returned
14642         value. Call emit_register_classes if java_report_errors returns
14643         zero.
14644         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
14645         flag_static_local_jdk1_1): New integer flags.
14646         (lang_decode_option): New flags set here.
14647         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
14648         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
14649         the flag_redundant variable.
14650         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
14651         when parsing java.lang.Object class.
14652         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
14653         NULL_TREE to build.
14654         (resolve_qualified_expression_name): Fixed indentation.
14655         (patch_array_ref): Changed prototype.
14656         (not_initialized_as_it_should_p): Prototype removed.
14657         (java_report_errors): Added function prototype.
14658         * parse.y (formal_parameter:): Changed error message for not yet
14659         supported final parameters.
14660         (class_type_list:): Set both PURPOSE and VALUE of created
14661         TREE_LIST to be class_type.
14662         (primary_no_new_array:): Handle class literals on primitive types.
14663         (parse_warning_context): Reinstalled correct force_error and
14664         do_warning flags setups.
14665         (java_report_errors): Changed prototype. Return java_error_count
14666         value.
14667         (variable_redefinition_error): Consider treating variable type as
14668         a fake pointer.
14669         (create_interface): Warn about redundant abstract modifier if
14670         flag_redundant is set. Changed error message.
14671         (lookup_field_wrapper): Save/restore globals before/after looking
14672         up field.
14673         (duplicate_declaration_error_p): Consider treating declaration
14674         type as a fake pointer.
14675         (register_fields): Extract real type from dependency node. Check
14676         for duplicate field declaration after type adjustment. Use
14677         DECL_INITIAL to store static final initialized values.
14678         (method_header): Extract real function type from dependency node.
14679         (check_abstract_method_header): Use GET_METHOD_NAME.
14680         (obtain_incomplete_type): Layout fake pointer type.
14681         (safe_layout_class): Don't try to check for methods before layout.
14682         (java_complete_class): Don't check for correct throws clause
14683         elements inheritance here.
14684         (resolve_and_layout): Broadened name parameter meaning.
14685         (reset_method_name): Use GET_METHOD_NAME.
14686         (java_get_real_method_name): New function.
14687         (java_check_regular_methods): Don't check methods in
14688         java.lang.Object.  Verify lineage of throws clause elements. Use
14689         flag_no_overriding in warning report.
14690         (check_throws_clauses): Don't check if class was from
14691         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
14692         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
14693         (declare_local_variables): Use flag_static_local_jdk1_1 to report
14694         warning on unsupported final local variables. Use build_decl
14695         instead of build_decl_no_layout. Get real local variable type from
14696         dependency node.
14697         (source_start_java_method): Get real parameter type from
14698         dependency node. Call build_decl instead of build_decl_no_layout.
14699         (java_layout_classes): Reverse tree and layout type and class as
14700         required. Mark class as loaded when done.
14701         (resolve_field_access): Fixed indentation. Restricted condition
14702         leading to static field access code generation. Set field_type
14703         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
14704         (resolve_qualified_expression_name): Initialize type_found to
14705         null. Handle static field resolved during qualification. Fixed
14706         layout on non primitive field decl types.
14707         (not_accessible_p): Fixed typo in comment.
14708         (patch_method_invocation): Resolve and layout class to search from
14709         type.
14710         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
14711         layout non primitive type, if necessary. Make method node only to
14712         report errors.
14713         (find_applicable_accessible_methods_list): Consider WFL'ed method
14714         decl names. Fixed indentation.
14715         (argument_types_convertible): Resolve and layout target type if
14716         necessary.
14717         (java_complete_tree): Fixed indentation problems. Rewrote
14718         CALL_EXPR thrown exceptions check. Re-installed further processing
14719         of the assignment in certain cases.
14720         (patch_assignment): Call maybe_build_primttype_type_ref to perform
14721         inlining on class literals.
14722         (valid_builtin_assignconv_identity_widening_p): Cope with constant
14723         0 literal.
14724         (valid_method_invocation_conversion_p): Likewise.
14725         (patch_string): Temporary disable forbidden use of `this' in
14726         explicit constructor invocations when doing string concatenation
14727         within their scope.
14728         (patch_unaryop): Added comment. Reinstalled code to disable
14729         further check on assignment operation with cast expression RHS.
14730         (patch_switch_statement): Fixed indentation.
14731         (build_try_statement): Call build_decl instead of
14732         build_decl_no_layout.
14733         (patch_synchronized_statement): Likewise.
14734         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
14735         IS_UNCHECKED_EXPRESSION_P.
14736         (check_thrown_exceptions_do): Changed leading comment. Resolve and
14737         layout argument exception type.
14738         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
14739         of IS_UNCHECKED_EXPRESSION_P.
14740
14741 1998-11-18  Anthony Green  <green@cygnus.com>
14742
14743         * jcf-parse.c (yyparse): Open class file in binary mode.
14744
14745 1998-11-15  Per Bothner  <bothner@cygnus.com>
14746
14747         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
14748
14749         * jcf-write.c (perform_relocations):  Move check out one loop.
14750
14751 1998-11-15  Anthony Green  <green@hoser.cygnus.com>
14752
14753         * Make-lang.in: Fix reference to srcdir.
14754         * jv-scan.c: Add missing xmalloc prototype.
14755         * jvgenmain.c: Ditto.
14756
14757 1998-11-15  Per Bothner  <bothner@cygnus.com>
14758
14759         * decl.c (error_mark_node), java-tree.h:  New global.
14760         * parse.y:  Use empty_stmt_node instead of size_zero_node.
14761         (build_if_else_statement):  If missing else, use empty_stmt_node.
14762
14763         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
14764         (java_complete_expand_method):  Complain if return is missing.
14765         (java_check_regular_methods):  Comment out incorrect error check.
14766         (not_accessible_p):  Fix incorrect handling of protected methods.
14767         (patch_method_invocation):  Pass correct context to not_accessible_p.
14768         (find_applicable_accessible_methods_list):  Likewise.
14769         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
14770         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
14771         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
14772         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
14773
14774         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
14775         (push_int_const):  Remove reundant NOTE_PUSH.
14776         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
14777         (- case SWITCH_EXPR):  Fix code generation bug.
14778         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
14779         (generate_classfile):  More robust for abstract methods.
14780
14781 1998-11-15  Anthony Green  <green@cygnus.com>
14782
14783         * Makefile.in: jv-scan and jvgenmain all require libiberty.
14784         * Make-lang.in: Ditto.
14785
14786         * jv-scan.c: Remove xmalloc and xstrdup definitions.
14787         * jvgenmain: Ditto.
14788
14789 1998-11-15  Per Bothner  <bothner@cygnus.com>
14790
14791         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
14792
14793         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
14794
14795 1998-11-14  Per Bothner  <bothner@cygnus.com>
14796
14797         Allow uses of interface types to verify.  This is not really
14798         type-safe, but it matches what Sun does, and is OK as long as
14799         there are appropriate run-time checks.
14800         * verify.c (merge_types):  If merging two interface types,
14801         just set the result to java.lang.Object.
14802         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
14803
14804 1998-11-13  Tom Tromey  <tromey@cygnus.com>
14805
14806         * gjavah.c (main): Handle --output-class-directory argument.
14807         * jvspec.c (lang_specific_driver): Translate `-d' into
14808         -foutput-class-dir.
14809         * jcf.h (jcf_write_base_directory): Declare.
14810         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
14811         * lang-options.h: Mention -foutput-class-dir.
14812         * jcf-write.c (jcf_write_base_directory): New global.
14813         (make_class_file_name): Put generated .class file into `-d'
14814         directory, or into source directory if -d not given.  Function now
14815         static.
14816         (write_classfile): Free class file name.  Handle case where class
14817         file name is NULL.
14818         (DIR_SEPARATOR): New macro.
14819         Include <sys/stat.h>
14820
14821         * Makefile.in (prefix): New macro.
14822
14823 1998-11-12  Per Bothner  <bothner@cygnus.com>
14824
14825         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
14826         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
14827         here (done in patch_invoke instead).
14828         (case_identity):  Moved here from parse.y.
14829
14830         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
14831         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
14832         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
14833         so they can be efficiently scanned without recursion.
14834         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
14835         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
14836         in BLOCK iteratively, rather than recursively.
14837
14838         * parse.y (do_unary_numeric_promotion):  New function.
14839         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
14840
14841         * parse.y (patch_newarray):  Various fixes.
14842
14843         Re-do handling of switch statements (for proper block scoping).
14844         * parse.y:  Add just a single block for the enture switch block,
14845         but don't create any "case blocks".
14846         (group_of_labels):  Rmeoved unneeded non-terminal.
14847         CASE_EXPR and DEFAULT_EXPR are added to current block.
14848         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
14849         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
14850         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
14851         * parse.y (wfl_operator, print_int_node): Make non-static.
14852         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
14853         as part of recursive scan of block.
14854         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
14855         (patch_switch_statement):  Most tests move dinto java_complete_tree.
14856
14857         * parse.y:  Make various production be non-typed (void).
14858         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
14859         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
14860         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
14861
14862         * jcf-write.c (struct jcf_handler):  New type.
14863         (struct jcf_switch_state):  New type.
14864         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
14865         (alloc_handler, emit_unop, emit_reloc):  New functions.
14866         (adjust_typed_op):  Add extra parameter ("max type" offset).
14867         (emit_switch_reloc, emit_case-reloc):  New function.
14868         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
14869         (generate_bytecode_insns):  Support REAL_CST, switch statements,
14870         exception handling, method calls, object/array creation, and more.
14871
14872         * class.c:  Remove some unused variables.
14873         * constants.c (find_string_constant):  New function.
14874         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
14875         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
14876         if flag_emit_class_files.
14877
14878 1998-11-12  Tom Tromey  <tromey@cygnus.com>
14879
14880         * jcf-io.c (find_class): Added explanatory comment.
14881
14882         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
14883         trailing slash to `.zip' entries.
14884
14885         * jvspec.c (lang_specific_driver): Correctly handle case where
14886         GC_NAME not defined.
14887
14888 1998-11-11  Tom Tromey  <tromey@cygnus.com>
14889
14890         * jvspec.c (GC_NAME): New define.
14891         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
14892         if required.
14893         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
14894
14895 1998-11-11  Per Bothner  <bothner@cygnus.com>
14896
14897         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
14898
14899 1998-11-11  Tom Tromey  <tromey@cygnus.com>
14900
14901         * jcf-dump.c (main): Correctly recognize `--'-style long options.
14902
14903 1998-11-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14904
14905         * class.c (is_compiled_class): Call safe_layout_class for class
14906         compiled from source.
14907         * conver.h (convert_to_integer, convert_to_real,
14908         convert_to_pointer): Added prototypes.
14909         * decl.c (init_decl_processing): Non longer push the decls of
14910         `methodtable', `constants', `Class', `Field', `dispatchTable'
14911         `jexception' and `Method'.
14912         * expr.c (build_invokeinterface): New function.
14913         (expand_invoke): static variable CLASS_IDENT now in
14914         build_invokeinterface. Use build_invokeinterface.
14915         (expand_java_field_op): Moved code to inline
14916         java.lang.PRIMTYPE.TYPE into a function.
14917         (build_primtype_type_ref): New function.
14918         * java-tree.def (INSTANCEOF_EXPR): New tree code.
14919         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
14920         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
14921         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
14922         (DECL_LOCAL_STATIC_VALUE): New macro.
14923         (build_invokeinterface, build_primtype_type_ref): New function
14924         prototypes.
14925         (java_parse_abort_on_error): Macro rewritten.
14926         * jcf-parse.c (current_method): Add comment to declaration.
14927         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
14928         Function prototypes fixed.
14929         (jcf_parse_source): push/pop parser context. save/restore global.
14930         (parse_source_file): Fixed leading comment. Now take a
14931         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
14932         classes and pop the parser context anymore.
14933         (yyparse): Push parser context, save globals, parse the source
14934         file, restore globals and pop the parser context when processing a
14935         source file.
14936         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
14937         * lex.c (java_parse_doc_section): New function.
14938         (java_lex): Call java_parse_doc_section when appropriate. Build an
14939         operator around INSTANCEOF_TK.
14940         * lex.h (java_lineterminator, java_sprint_unicode,
14941         java_unicode_2_utf8, java_lex_error, java_store_unicode):
14942         Prototypes rewritten.
14943         (java_parse_escape_sequence, java_letter_or_digit_p,
14944         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
14945         java_read_unicode, java_store_unicode, java_read_char,
14946         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
14947         Added function prototypes.
14948         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
14949         define.
14950         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
14951         New macros
14952         (struct parser_ctxt): New fields: deprecated,
14953         current_parsed_class_un, gclass_list.
14954         (fix_method_argument_names, issue_warning_error_from_context,
14955         resolve_package, lookup_package_type): New function prototypes.
14956         (resolve_expression_name): Fixed function prototype.
14957         (find_applicable_accessible_methods_list): Fixed indentation, added
14958         extra argument in prototype.
14959         (check_final_assignment, build_null_of_type, check_deprecation,
14960         check_method_redefinition, reset_method_name,
14961         java_check_regular_methods, java_check_abstract_methods,
14962         maybe_build_primttype_type_ref): New function prototype.
14963         * parse.y (conver.h): Include.
14964         (INSTANCEOF_TK): Tagged <operator>.
14965         (single_type_import_declaration): Use REGISTER_IMPORT macro.
14966         (relational_expression:): Build binop for instanceof.
14967         (java_push_parser_context): Remember ctxp->gclass_list across
14968         contexts.
14969         (java_pop_parser_context): Simply return if no context
14970         exists. Remember gclass_list across contexts.
14971         (issue_warning_error_from_context): New function.
14972         (parse_error_context): Don't setup ctxp->elc here. Call
14973         issue_warning_error_from_context instead.
14974         (parse_warning_context): Likewise.
14975         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
14976         setup. Link new class/interface to ctxp->gclass_list.
14977         (add_superinterfaces): Register interface as incomplete if not
14978         loaded.
14979         (create_class): Remember class unqualified name in
14980         ctxp->current_parsed_class_un. Check class deprecation.
14981         (register_fields): Check field deprecation. Remember static final
14982         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
14983         processing INIT.
14984         (method_header): New local variable ORIG_ARG. Use unqualified
14985         current class name for check on constructor errors. Promote return
14986         type if of record type. Argument list fix moved in
14987         fix_method_argument_names, called here. Check method deprecation.
14988         (fix_method_argument_names): New function.
14989         (method_declarator): Promote record typed arguments.
14990         (safe_layout_class): Check class methods before layout.
14991         (java_complete_class): Compute field layout when patched.
14992         (do_resolve_class): Try to load class after having it renamed
14993         after the package name.
14994         (get_printable_method_name): Use DECL_CONTEXT.
14995         (reset_method_name): New function.
14996         (check_method_redefinition): Use reset_method_name.
14997         (java_check_regular_methods): New local variable
14998         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
14999         names for error report. Check for compile-time error when method
15000         found has default (package) access.
15001         (java_check_abstract_methods): Now takes an interface DECL node as
15002         an argument. Also reinstall real name on unchecked
15003         overriding/hiding methods for error report.
15004         (java_check_methods): Fixed leading comment. Get classes to verify
15005         from ctxp->gclass_list. Use CHECK_METHODS macro and set
15006         CLASS_METHOD_CHECKED_P on class verification.
15007         (lookup_java_method2): Get real method name if necessary.
15008         (find_in_imports): Don't check package class access here.
15009         (resolve_package, lookup_package_type): New functions.
15010         (java_layout_classes): Fixed leading comment. Take classes to be
15011         laid out from ctxp->gclass_list.
15012         (java_complete_expand_methods): Don't expand native and abstract
15013         methods.
15014         (java_expand_classes): New function.
15015         (resolve_expression_name): Use additional argument ORIG.  Retrieve
15016         values of static final field of primitive types.
15017         (resolve_field_access): Handles static final field of promotive
15018         type.
15019         (resolve_qualified_expression_name): Handle STRING_CST as
15020         primaries and package name resolution. Check deprecation on found
15021         decls. Set where_found and type_found on non static field resolved
15022         during qualification. Layout non primitive field decl types.
15023         (check_deprecation): New function.
15024         (maybe_access_field): Simplified.
15025         (patch_method_invocation_stmt): Local variable CLASS_TYPE
15026         removed. Reverse method's argument when primary is a type. Don't
15027         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
15028         instead. Include abstract class in the list of class searchable
15029         for constructors. Use DECL_CONTEXT of found method for access
15030         checks. Check method deprecation.
15031         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
15032         converting arguments. Handle INVOKE_INTERFACE.
15033         (lookup_method_invoke): Search constructor using existing
15034         infrastructure (don't rely on lookup_java_constructor anymore).
15035         (find_applicable_accessible_methods_list): Extra argument flag
15036         LC. Now include constructor in the search.
15037         (qualify_ambiguous_name): Conditional expression are primaries.
15038         (not_initialized_as_it_should_p): static final are always
15039         initialized.
15040         (java_complete_tree): Pass extra NULL argument to
15041         resolve_expression_name. Stricter test to carry on patching
15042         assignments. New case for INSTANCEOF_EXPR.
15043         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
15044         (check_final_assignment, maybe_build_primttype_type_ref): New
15045         functions.
15046         (patch_assignment): Detect resolved static finals and carry normal
15047         assignment error check on them. Inline PRIMTYPE.TYPE read access.
15048         (try_builtin_assignconv): Access constant 0 on all primitive
15049         types.
15050         (valid_builtin_assignconv_identity_widening_p): Accept identical
15051         types. Accept all promoted type on int type.
15052         (valid_ref_assignconv_cast_p): Accept a null pointer to be
15053         assigned to a reference.
15054         (valid_method_invocation_conversion_p): Accept to check null
15055         pointers.
15056         (build_binop): Merge declaration and initialization of local
15057         variable BINOP.
15058         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
15059         numeric types. Improved validity test for qualify operators on
15060         references.
15061         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
15062         and PREINCREMENT_EXPR. Also detect resolved static finals of a
15063         primitive type and issue the appropriate error message.
15064         (resolve_type_during_patch): Mark class loaded when resolved.
15065         (patch_cast): Allow null to be cased to reference types.
15066         (build_null_of_type): New function.
15067         (patch_array_ref): Handle array on references correctly.
15068         (patch_return): Removed unused local variable MODIFY. Force
15069         boolean to be returned as integers. Allows null to be returned by
15070         a function returning a reference.
15071         * typeck.c (convert_to_integer, convert_to_real,
15072         convert_to_pointer): Prototypes moved to convert.h
15073         (lookup_argument_method): Use method real name, if necessary.
15074
15075 1998-10-30  Tom Tromey  <tromey@cygnus.com>
15076
15077         * class.c (build_class_ref): Changed name of primitive classes to
15078         start with `_Jv_'.
15079
15080         * class.c (make_class_data): Renamed fields: nmethods to
15081         method_count, method_count to dtable_method_count.  Always set
15082         `state' field to 0.
15083         * decl.c (init_decl_processing): Likewise.
15084
15085 1998-10-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15086
15087         * class.c (layout_class): Don't mangle <finit>, produce
15088         __finit<class> instead. Don't verify artificial methods.
15089         * decl.c (finit_identifier_node): New declared global.
15090         (init_decl_processing): finit_identifier_node initialized.
15091         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
15092         * java-tree.h (finit_identifier_node): Declared as extern.
15093         (struct lang_decl): New field called_constructor.
15094         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
15095         (CLASS_HAS_FINIT_P): New macro.
15096         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
15097         explicit constructor invocation.
15098         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
15099         CALL_SUPER_CONSTRUCTOR_P): New macros.
15100         (write_classfile): Added prototype.
15101         * jcf-parse.c (jcf_parse_source): Parse and remember for
15102         generation if the file was seen on the command line.
15103         (parse_source_file): Don't write the class file here.
15104         (yyparse): Loop on files rewritten. Set current_jcf.
15105         (parse_zip_file_entries): Parse class file only if it was found.
15106         * lang.c (init_parse): Don't open command line provided filename
15107         here.
15108         (lang_parse): Don't set main_jcf anymore.
15109         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
15110         (JCONSTRUCTOR_CHECK): New macro.
15111         (JBSC_TYPE_P): New macro.
15112         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
15113         (COMPLETE_CHECK_OP_2): New macro.
15114         (struct parse_ctxt): New field explicit_constructor_p.
15115         (check_class_interface_creation): Fixed prototype indentation.
15116         (patch_method_invocation_stmt): Prototype reflects added argument.
15117         (patch_invoke): Likewise.
15118         (complete_method_declaration, build_super_invocation,
15119         verify_constructor_circularity,
15120         build_this_super_qualified_invocation, get_printable_method_name,
15121         patch_conditional_expr, maybe_generate_finit, fix_constructors,
15122         verify_constructor_super, create_artificial_method,
15123         start_artificial_method_body, end_artificial_method_body,
15124         generate_field_initialization_code): New function prototypes.
15125         * parse.y: Fixed leading comment
15126         (constructor_header:, constructor_body:, block_end:): Rules tagged
15127         <node>.
15128         (type_declaration:): Call maybe_generate_finit.
15129         (method_declaration:): Action for method_body: placed in new
15130         function complete_method_declaration, called here.
15131         (constructor_declaration:): Defined actions. Removed leading
15132         FIXME.
15133         (constructor_header:): New rule with action.
15134         (constructor_body:): Rule rewritten using block_begin: and
15135         block_end:. Defined actions.
15136         (constructor_declarator:, explicit_constructor_invocation:):
15137         Defined actions.
15138         (block:): Use new rules block_begin: block_end:.
15139         (block_begin:, block_end:): New rules and actions.
15140         (block_statements:): Fixed error message for explicit
15141         constructors.
15142         (method_invocation:): Call build_this_super_qualified_invocation
15143         if primary is `this' or `super' was seen.
15144         (conditional_expression:): Action defined.
15145         (extra_ctxp_pushed_p): New static global flag.
15146         (java_parser_context_save_global): Create parser context if
15147         necessary. Use extra_ctxp_pushed_p to remember it.
15148         (java_parser_context_restore_global): Pop extra parser context if
15149         one exists.
15150         (build_array_from_name): Array on primitive types are marked
15151         loaded.
15152         (register_fields): Restore new name in field initializer
15153         expression if type was altered. Non static fields initialized upon
15154         declaration marked initialized.
15155         (maybe_generate_finit): New function.
15156         (maybe_generate_clinit): Use create_artificial_method,
15157         start_artificial_method_body, end_artificial_method_body. Generate
15158         debug info for enclosed initialization statements.
15159         (method_header): Fixed leading comment. Check constructor
15160         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
15161         accordingly.
15162         (complete_method_declaration, constructor_circularity_msg,
15163         verify_constructor_circularity): New functions.
15164         (get_printable_method_name): New function.
15165         (check_method_redefinition): Don't rename <finit> methods. Fix
15166         declared constructor names. Error message for
15167         constructors modified.
15168         (java_check_regular_methods): Local variable seen_constructor
15169         renamed saw_constructor. Skip verification on constructors. Create
15170         default constructor with create_artificial_method.
15171         (java_check_methods): Removed unnecessary empty line.
15172         (create_artificial_method, start_artificial_method_body,
15173         end_artificial_method_body): New functions.
15174         (java_layout_classes): Changed leading comment. Reverse fields
15175         list if necessary. Always layout java.lang.Object if being
15176         defined.
15177         (java_complete_expand_methods): Verify constructor circularity.
15178         (java_complete_expand_method): Call fix_constructor on
15179         constructors.  Local variable no_ac_found removed. Restore
15180         bindings if method body expansion failed.
15181         (fix_constructors, verify_constructor_super,
15182         generate_field_initialization_code): New function.
15183         (java_expand_classes): Fixed leading comment. Write class file
15184         here.
15185         (resolve_expression_name): Check for illegal instance variable
15186         usage within the argument scope of an explicit constructor
15187         invocation.
15188         (resolve_qualified_expression_name): Pass extra from_super flag
15189         when invoking patch_method_invocation_stmt. New case for
15190         conditional expression when used as a primary. Check for error
15191         when acquiring super.
15192         (patch_method_invocation_stmt): Added extra argument super. New
15193         local variable is_static_flag. Set class_to_search according to
15194         the nature of the constructor invocation. Don't add `this'
15195         argument when expanding NEW_CLASS_EXPR. Check for illegal method
15196         invocation within the argument scope of explicit constructor
15197         invocation. Set is_static according to is_static_flag. Provide
15198         extra `super' argument to patch_invoke invocation.
15199         (patch_invoke): New argument from_super. Loop on arguments
15200         indentation fixed. Pass from_super to invocation_mode. New switch
15201         case INVOKE_SUPER. Fixed error message in switch default case.
15202         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
15203         value.
15204         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
15205         (lookup_method_invoke): Fixed prototypes in candidates list. Error
15206         message takes constructors into account.
15207         (find_applicable_accessible_methods_list): Fixed indentation.
15208         (qualify_ambiguous_name): Take explicit constructor invocation
15209         into account. Deal with a conditional expression as a primary to
15210         a method call.
15211         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
15212         case. Added extra argument to patch_method_invocation_stmt.
15213         Register calls made to explicit constructor `this'. Don't call
15214         save_expr in ARRAY_REF case when emitting class files. Check for
15215         illegal use of this when expanding explicit constructor invocation
15216         arguments.
15217         (complete_function_arguments): Set and reset parser context
15218         explicit_constructor_p field value when appropriate.
15219         (build_super_invocation, build_this_super_qualified_invocation):
15220         New functions.
15221         (patch_assignment): Fixed typo.
15222         (patch_unaryop): Check on final fields occurs only when a decl
15223         exits.
15224         (patch_return): Take constructors into account.
15225         (patch_conditional_expr): New function.
15226         * typeck.c (build_java_signature): Removed unnecessary empty line.
15227
15228 1998-10-28  Jeffrey A Law  (law@cygnus.com)
15229
15230         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
15231
15232 1998-10-28  Tom Tromey  <tromey@cygnus.com>
15233
15234         * decl.c (init_decl_processing): Renamed fields.
15235         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
15236         interface_len, msize fields.
15237
15238         * class.c (make_class_data): Removed subclass_head and
15239         subclass_next fields.
15240         * decl.c (init_decl_processing): Removed subclass_head and
15241         subclass_next fields.
15242
15243 1998-10-28  Jeffrey A Law  (law@cygnus.com)
15244
15245         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
15246         * mangle.c (emit_unicode_mangled_name): Similarly.
15247
15248 1998-10-26  Nick Clifton  <nickc@cygnus.com>
15249
15250         * jcf-parse.c (get_constant): Place braces around code to compute
15251         'd' when REAL_ARITHMETIC is not defined.
15252
15253 1998-10-25  H.J. Lu  (hjl@gnu.org)
15254
15255         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
15256         dependency.
15257
15258 1998-10-23  Tom Tromey  <tromey@cygnus.com>
15259
15260         * lang-specs.h: `.zip' files are input to jc1.
15261
15262 1998-10-22  Per Bothner  <bothner@cygnus.com>
15263
15264         * jvspecs.c:  Add (but don't enable) support for combining multiple
15265         .class and .java input filenames to a single jc1 invocation.
15266         Add support for -C flag (copile to .class files).
15267         Translate -classpath and -CLASSPATH arguments.
15268         * lang-specs.h:  Don't set %2 spec.
15269
15270 1998-10-22  Tom Tromey  <tromey@cygnus.com>
15271
15272         * jcf-path.c (add_entry): Don't add trailing separator if entry is
15273         a .zip file.
15274         (add_path): Don't add trailing separator to non-empty path
15275         elements.
15276
15277         * lang.c (lang_decode_option): Check for -fclasspath and
15278         -fCLASSPATH before examining other `-f' options.
15279
15280         * java-tree.h (finalize_identifier_node): Don't declare.
15281         * class.c (make_class_data): Don't push "final" field.
15282         * decl.c (init_decl_processing): Don't push "final" field.
15283         (finalize_identifier_node): Removed.
15284         (init_decl_processing): Don't set finalize_identifier_node.
15285
15286         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
15287
15288 1998-10-11  Anthony Green  <green@cygnus.com>
15289
15290         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
15291         (JV_SCAN_SOURCES): New macro.
15292         (JCF_DUMP_SOURCES): Likewise.
15293         (jcf-dump$(exeext)): New target.
15294         (jv-scan$(exeext)): New target.
15295
15296 1998-10-22  Tom Tromey  <tromey@cygnus.com>
15297
15298         * Makefile.in (LEX): Removed.
15299         (LEXFLAGS): Likewise.
15300         (SET_BISON): New macro.
15301         (BISON): Removed.
15302         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
15303         spurious diffs in parse.c.
15304         ($(PARSE_SCAN_C)): Likewise.
15305         (PARSE_DIR): New macro.
15306         (PARSE_C): Use it.
15307         (PARSE_SCAN_C): Likewise.
15308         (PARSE_RELDIR): New macro.
15309
15310         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
15311
15312         * jcf-io.c (find_class): Use saw_java_source to determine when to
15313         look for `.java' file.
15314         * jcf-parse.c (saw_java_source): New global.
15315         (yyparse): Set it if `.java' file seen.
15316
15317         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
15318         (GCJH_SOURCES): Likewise.
15319         * Makefile.in (datadir): New macro.
15320         (libjava_zip): Likewise.
15321         (JAVA_OBJS): Added jcf-path.o.
15322         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
15323         (../gcjh$(exeext)): Likewise.
15324         (jcf-path.o): New target.
15325         * java-tree.h (fix_classpath): Removed decl.
15326         * jcf-parse.c (fix_classpath): Removed.
15327         (load_class): Don't call fix_classpath.
15328         * parse.y (read_import_dir): Don't call fix_classpath.
15329         * lex.h: Don't mention classpath.
15330         * lex.c (java_init_lex): Don't initialize classpath.
15331         * jcf-io.c (classpath): Removed global.
15332         (find_class): Use jcf_path iteration functions.  Correctly search
15333         class path for .java file.
15334         (open_in_zip): New argument `is_system'.
15335         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
15336         classpath-related options.
15337         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
15338         and -I.
15339         (lang_init): Call jcf_path_init.
15340         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
15341         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
15342         Correctly put braces around second string in each entry.
15343         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
15344         classpath-related options.
15345         (help): Updated for new options.
15346         * jcf.h: Declare functions from jcf-path.c.  Don't mention
15347         `classpath' global.
15348         * jcf-path.c: New file.
15349
15350         * jcf-depend.c: Include jcf.h.
15351
15352         * jcf-write.c (localvar_alloc): Returns `void'.
15353         (localvar_free): Removed unused variable.
15354
15355         * lang.c (OBJECT_SUFFIX): Define if not already defined.
15356         (init_parse): Use OBJECT_SUFFIX, not ".o".
15357
15358 1998-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15359
15360         * class.c (emit_register_classes): Renamed from
15361         emit_register_class.
15362         * java-tree.h (emit_register_classes): Prototype renamed from
15363         emit_register_class.
15364         * jcf-parse.c (yyparse): Call emit_register_classes once before
15365         returning.
15366         * parse.y (java_expand_classes): No longer register classes.
15367
15368 1998-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15369
15370         * class.c (is_compiled_class): New local variable
15371         seen_in_zip. Identify classes found in currently compiled source
15372         file(s).
15373         * decl.c (complete_start_java_method): Fixed typo.
15374         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
15375         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
15376         (CLASS_P): Moved around.
15377         (java_parse_abort_on_error): Macro moved from jcf-parse.c
15378         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
15379         java-parse.h
15380         (jcf_parse_source): Changed leading comment. Removed unnecessary
15381         fclose and CLASS_FROM_SOURCE_P marking.
15382         (parse_source_file): New local variables remember_for_generation
15383         and filename. Mark parsed file name identifier node. Removed block
15384         executed when parse_only was null. Set remember_for_generation.
15385         Use it as an argument to java_pop_parser_context.
15386         (yyparse): New local variables several_files, list, next node and
15387         current_file_list. Split ampersand separated file names into
15388         current_file_list. Iterate through the list and parse accordingly.
15389         * parse.h (java_pop_parser_context): New function prototype.
15390         * parse.y (ctxp_for_generation): New static global variable.
15391         (java_pop_parser_context): New argument generate. Link popped ctxp
15392         to ctxp_for_generation list accordingly.
15393         (java_complete_expand_methods): Fixed indentation.
15394         (java_expand_classes): New function.
15395
15396 1998-10-17  Per Bothner  <bothner@cygnus.com>
15397
15398         * Makefile.in:  Link with libiberty.a instead of memmove.o.
15399
15400 1998-10-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15401
15402         * lex.c (setjmp.h): No longer included.
15403         * lex.h (setjmp.h): Included.
15404         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
15405         (duplicate_declaration_error_p): Renamed from
15406         duplicate_declaration_error.
15407         (build_array_from_name): New function prototype.
15408         * parse.y (setjmp.h): No longer included.
15409         (variable_declarator_id): Define action.
15410         (build_array_from_name): New function.
15411         (duplicate_declaration_error_p): Renamed from
15412         duplicate_declaration_error.  Fixed leading comment.
15413         (register_fields): Main `for' loop reorganized. Uses
15414         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
15415         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
15416         build_array_from_name.
15417         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
15418         types.
15419         (read_import_dir): Don't try to skip `.' and `..'.
15420         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
15421         build_array_from_name. Main `for' loop reorganized.
15422         (resolve_qualified_expression_name): When building access to a
15423         field, use the type where the field was found, not its own type.
15424         (maybe_access_field): Use field DECL_CONTEXT if the type where the
15425         field was found is null.
15426         (qualify_ambiguous_name): Sweep through all successive array
15427         dimensions.
15428
15429 1998-10-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15430
15431         * java-tree.h (pop_labeled_block, lang_printable_name,
15432         maybe_add_interface, set_super_info, get_access_flags_from_decl,
15433         interface_of_p, inherits_from_p, fix_classpath,
15434         complete_start_java_method, emit_handlers, init_outgoing_cpool,
15435         make_class_data, register_class, alloc_name_constant): New
15436         function prototypes.
15437         * lang.c (lang_decode_option): Set argc argument unused. Fixed
15438         indentation. Added cast to remove warning.
15439         (lang_printable_name): Set v argument unused.
15440         (lang_print_error): Added argument to lang_printable_name call.
15441         (java_dummy_print, print_lang_decl, print_lang_type,
15442         print_lang_identifier, lang_print_xnode): All argument marked
15443         unused.
15444         * lex.c (java_unget_unicode): Removed unnecessary argument.
15445         (java_allocate_new_line): Unused local variable is gone.
15446         (java_read_char): Added parenthesis in expressions to remove
15447         warnings.  Added final return statement.
15448         (java_read_unicode): Added parenthesis in expression to remove
15449         warning.
15450         (java_parse_end_comment): Fixed java_unget_unicode invocation.
15451         (java_parse_escape_sequence): Likewise.
15452         (java_lex): Unused local variables are gone. Fixed
15453         java_unget_unicode invocation.
15454         * lex.h (set_float_handler): Prototype added when JC1_LITE not
15455         defined.
15456         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
15457         lang_printable_name invocation in macro.
15458         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
15459         Likewise.
15460         (duplicate_declaration_error): Suppressed unused argument in
15461         prototype.
15462         (identical_subpath_p): Function declaration is gone.
15463         (patch_invoke): Suppressed unused argument in prototype.
15464         (patch_cast, build_labeled_block, check_thrown_exceptions):
15465         Likewise.
15466         * parse.y (setjmp.h): Included
15467         (toplev.h): Likewise.
15468         (field_declaration:): Suppressed unused local
15469         (label_decl:): Fixed build_labeled_block invocation.
15470         (java_pop_parser_context): Put extra parenthesis around assignment
15471         in if.
15472         (yyerror): Suppressed unused local variables.
15473         (variable_redefinition_error): Fixed lang_printable_name
15474         invocation.
15475         (create_interface): Suppressed unused local variables.
15476         (create_class): Likewise.
15477         (duplicate_declaration_error): Suppressed unused argument. Fixed
15478         lang_printable_name invocation.
15479         (register_fields): Suppressed unused local variable. Fixed
15480         duplicate_declaration_error invocation.
15481         (method_header): Suppressed unused local variable.
15482         (method_declarator, parser_check_super): Likewise.
15483         (java_complete_class): Suppressed unused local variable. Fixed
15484         fatal error message.
15485         (complete_class_report_errors): Added default: in switch.
15486         (java_check_regular_methods): Fixed lang_printable_name
15487         invocations.
15488         (check_throws_clauses): Likewise.
15489         (java_check_abstract_methods): Suppressed unused local
15490         variable. Fixed lang_printable_name invocation.
15491         (read_import_entry): Added supplemental return statement.
15492         (read_import_dir): Suppressed unused local variables.
15493         (check_pkg_class_access, declare_local_variables): Likewise.
15494         (source_start_java_method): Suppressed unused extern variable
15495         declarations
15496         (expand_start_java_method): Suppressed unused extern and local
15497         variable declarations.
15498         (java_complete_expand_methods): Likewise.
15499         (java_complete_expand_method): Suppressed unused local variables.
15500         (make_qualified_name): Likewise.
15501         (resolve_qualified_expression_name): Added default: in
15502         switch. Fixed lang_printable_name invocation.
15503         (class_instance_creation_expression): Added parenthesis around
15504         expressions.
15505         (patch_method_invocation_stmt): Fixed lang_printable_name and
15506         patch_invoke invocations.
15507         (check_for_static_method_reference): Fixed lang_printable_name
15508         invocation.
15509         (patch_invoke): Suppressed unused arguments and local variables.
15510         (lookup_method_invoke): Suppressed unused local variables.
15511         (qualify_ambiguous_name): Added default: in switch.
15512         (identical_subpath_p): Function removed.
15513         (patch_assignment): Suppressed unused local variables. Suppressed
15514         unnecessary if statement. Fixed lang_printable_name invocations.
15515         (try_builtin_assignconv): Fixed lang_printable_name invocations.
15516         (valid_ref_assignconv_cast_p): Parenthesis around
15517         expression. Suppressed unused local variables.
15518         (build_binop): Suppressed unused local variables. fixed
15519         lang_printable_name invocations.
15520         (string_constant_concatenation): Suppressed unused local
15521         variables.
15522         (patch_unaryop): Fixed lang_printable_name invocation.
15523         (patch_cast): Suppressed unnecessary argument. Fixed
15524         lang_printable_name invocation.
15525         (patch_array_ref): Fixed lang_printable_name invocation.
15526         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
15527         (build_labeled_block): Suppressed unused argument.
15528         (generate_labeled_block): Fixed build_labeled_block invocation.
15529         (build_loop_body): Suppressed unused local variables.
15530         (patch_loop_statement): Likewise.
15531         (patch_exit): Fixed lang_printable_name invocation.
15532         (patch_switch_statement): Likewise.
15533         (case_identity): First argument marked unused.
15534         (patch_try_statement): Fixed lang_printable_name invocations.
15535         (patch_synchronized_statement, patch_throw_statement): Likewise.
15536         (check_thrown_exceptions): Fixed check_thrown_exceptions and
15537         lang_printable_name invocations.
15538         (check_thrown_exceptions_do): Suppressed unused argument.
15539
15540 1998-10-14  Tom Tromey  <tromey@cygnus.com>
15541
15542         * jcf-write.c (write_classfile): Add output class file as target.
15543         * lang-options.h: Added -MD, -MMD, -M, and -MM.
15544         * jcf.h: Added declarations for dependency-tracking functions.
15545         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
15546         * lang.c (lang_decode_option): Recognize -MD and -MMD.
15547         (finish_parse): Call jcf_dependency_write.
15548         (dependency_tracking): New global.
15549         (DEPEND_SET_FILE): New define.
15550         (DEPEND_ENABLE): New define.
15551         (init_parse): Enable dependency tracking if required.
15552         Include "flags.h".
15553         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
15554         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
15555         (../gcjh$(exeext)): Likewise.
15556         (jcf-depend.o): New target.
15557         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
15558         (GCJH_SOURCES): Likewise.
15559         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
15560         dep_name argument.
15561         (find_classfile): Added dep_name argument.
15562         (find_class): Compute name of dependency.
15563         (open_in_zip): Call jcf_dependency_add_file.
15564         * gjavah.c (output_file): No longer global.
15565         (usage): Don't mention "gjavah".
15566         (help): Likewise.
15567         (java_no_argument): Likewise.
15568         (version): Likewise.
15569         (main): Recognize and handle -M family of options.
15570         (print_mangled_classname): Return is void.
15571         (process_file): Handle case where output is suppressed.
15572         (HANDLE_END_FIELD): Likewise.
15573         (HANDLE_METHOD): Likewise.
15574         * jcf-depend.c: New file.
15575
15576 1998-10-13  Jeffrey A Law  (law@cygnus.com)
15577
15578         * java-tree.def: Add missing newline at EOF.
15579
15580 1998-10-13  Tom Tromey  <tromey@cygnus.com>
15581
15582         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
15583         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
15584         function.
15585         Include <config.h> and "system.h".
15586         (disassemble_method): Undefine RET to avoid clash with
15587         config/i386/i386.h.
15588
15589 1998-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15590
15591         * decl.c (runtime_exception_type_node, error_exception_type_node):
15592         New global variables.
15593         (init_decl_processing): Initialized.
15594         * expr.c (java_lang_expand_expr): Set caught exception type to
15595         null if catch handler argument doesn't exit.
15596         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
15597         tree codes.
15598         * java-tree.h (runtime_exception_type_node,
15599         error_exception_type_node): Global variables declared.
15600         (DECL_FUNCTION_THROWS): New macro.
15601         (DECL_FUNCTION_BODY): Modified comment.
15602         (DECL_SPECIFIC_COUNT): Likewise.
15603         (struct lang_decl): New field throws_list.
15604         (IS_UNCHECKED_EXPRESSION_P): New macro.
15605         * lex.c (java_lex): Generate location information for THROW_TK.
15606         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
15607         EXCEPTIONS_P): New macros.
15608         (enum jdep_code): New value JDEP_EXCEPTION.
15609         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
15610         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
15611         PATCH_METHOD_RETURN_ERROR): New macros.
15612         (patch_method_invocation_stmt): Added new argument to prototype.
15613         (patch_synchronized_statement, patch_throw_statement,
15614         check_thrown_exceptions, check_thrown_exceptions_do,
15615         purge_unchecked_exceptions, check_throws_clauses): New function
15616         prototypes.
15617         * parse.y Fixed typo in keyword section.
15618         (throw:): Rule tagged <node>.
15619         (THROW_TK): Keyword tagged <operator>.
15620         (method_header:): Last argument to call to method_header passed
15621         from throws: rule.
15622         (throws:, class_type_list:, throw_statement:,
15623         synchronized_statement:, synchronized:): Defined actions.
15624         (method_header): New local variable current. Register exceptions
15625         from throws clause.
15626         (java_complete_tree): Complete and verify exceptions from throws
15627         clause.
15628         (complete_class_report_errors): Error message on exceptions not
15629         found
15630         (java_check_regular_methods): Fixed typo. Shortcut on private
15631         overriding methods. Changed error message on method
15632         redefinition. Check for throws clause compatibility.
15633         (check_throws_clauses): New function.
15634         (java_check_abstract_methods): Use DECL_NAME for wfl or current
15635         method. Changed error message on method redefinition.
15636         (currently_caught_type_list): New static variable.
15637         (java_complete_expand_methods): Purge unchecked exceptions from
15638         throws clause list. Call PUSH_EXCEPTIONS before walk and
15639         POP_EXCEPTIONS after.
15640         (resolve_qualified_expression_name): Pass new argument as NULL to
15641         patch_method_invocation_stmt.
15642         (patch_method_invocation_stmt): New argument ref_decl. Invoke
15643         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
15644         argument list when appropriate. Use new argument if non null to
15645         store selected method decl.
15646         (patch_invoke): Convert if necessary args of builtin types before
15647         forming CALL_EXPR. Argument list no longer reversed here.
15648         (invocation_mode): Treat final methods as static methods.
15649         (java_complete_tree): New cases for THROW_EXPR: and
15650         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
15651         function call.
15652         (complete_function_arguments): No more RECORD_TYPE
15653         conversion. Function parameter nodes no longer saved.
15654         (valid_ref_assignconv_cast_p): Avoid handling null type.
15655         (patch_binop): Fixed null constant reference handling.
15656         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
15657         BUILD_THROW macros.
15658         (patch_try_statement): Fixed comments. Record caught types in
15659         list, push the list, expand try block and pop the list.
15660         (patch_synchronized_statement, patch_throw_statement,
15661         check_thrown_exceptions, check_thrown_exceptions_do,
15662         purge_unchecked_exceptions): New functions.
15663         * typeck.c (lookup_argument_method): Allow WFL in place of method
15664         DECL_NAME during method definition check
15665
15666 1998-10-09  Tom Tromey  <tromey@cygnus.com>
15667
15668         * gjavah.c (decode_signature_piece): New function.
15669         (print_c_decl): Use it.  Added `name_override' argument.
15670         (print_method_info): Use name_override argument to print_c_decl.
15671         (seen_fields): Removed.
15672         (print_field_info): Don't update seen_fields.
15673         (struct method_name): New structure.
15674         (method_name_list): New global.
15675         (print_method_info): Add new method to list of methods.
15676         (name_is_method_p): New function.
15677         (print_field_info): If field name has same name as method, then
15678         change field name.
15679         (process_file): Parse methods before fields.
15680         (field_pass): New global.
15681         (HANDLE_END_FIELD): Take field_pass into account.
15682
15683 1998-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15684
15685         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
15686         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
15687
15688 1998-10-03  Anthony Green  <green@cygnus.com>
15689
15690         * jvspec.c: Fix bug in jvgenmain_spec patch.
15691
15692 1998-10-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15693
15694         * Makefile.in (lang.o:): Install dependency on java-tree.def.
15695         * decl.c (soft_exceptioninfo_call_node): New global variable.
15696         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
15697         takes extra integer argument. soft_exceptioninfo_call_node
15698         initialized.
15699         * except.c (java_set_exception_lang_code): New function
15700         (method_init_exceptions): Called here.
15701         (prepare_eh_table_type): New function.
15702         (expand_end_java_handler): Called here.
15703         * expr.c (build_java_throw_out_of_bounds_exception): Now features
15704         one argument. Modified generation of call to
15705         soft_badarrayindex_node to use new argument.
15706         (build_java_arrayaccess): Pass faulty index value to
15707         build_java_throw_out_of_bounds_exception.
15708         (generate_name): New function.
15709         (java_lang_expand_expr): New local variables node, current,
15710         has_finally_p. Expand TRY_EXPR node.
15711         (process_jvm_instruction): Replace top of the stack with thrown
15712         object reference when entering exception handler.
15713         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
15714         specific tree codes.
15715         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
15716         global.
15717         (DECL_SPECIFIC_COUNT): New macro.
15718         (prepare_eh_table_type, java_set_exception_lang_code,
15719         generate_name): New function declarations.
15720         (match_java_method): Declaration deleted.
15721         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
15722         macros.
15723         * lex.c (TRY_TK, CATCH_TK): Generate location information.
15724         * parse.h (redefinition_error, refine_accessible_methods_list,
15725         can_cast_to_p): Function declaration removed.
15726         (classitf_redefinition_error, variable_redefinition_error,
15727         parse_jdk1_1_error, find_applicable_accessible_methods_list,
15728         find_most_specific_methods_list, argument_types_convertible,
15729         enter_a_block, valid_builtin_assignconv_identity_widening_p,
15730         valid_cast_to_p, valid_method_invocation_conversion_p,
15731         try_reference_assignconv, add_stmt_to_compound,
15732         build_jump_to_finally, build_tree_list, patch_try_statement,
15733         java_get_catch_block): New function declarations.
15734         * parse.y (string_buffer_type): Global variable deleted.
15735         (group_of_labels, catches, catch_clause, catch_clause_parameter,
15736         finally): Rules tagged <node>.
15737         (TRY_TK, CATCH_TK): Token tagged <operator>.
15738         (class_body_declaration:, class_member_declaration:,
15739         formal_parameter:, explicit_constructor_invocation:,
15740         interface_member_declaration:, constant_declaration:,
15741         primary_no_new_array:, class_instance_creation_expression:,
15742         array_creation_expression:): Issue error on unsuported JDK1.1
15743         features.
15744         (try_statement:, catches:, finally:): Define actions.
15745         (catch_clause_parameter): New rule.
15746         (catch_clause:): Use new rule catch_clause_parameter.
15747         (parse_jdk1_1_error): New function.
15748         (redefinition_error): Renamed classitf_redefinition_error.
15749         (variable_redefinition_error): New function.
15750         (check_class_interface_creation): Call
15751         classitf_redefinition_error.
15752         (java_complete_tree): Added error message on JDEP_TYPE: case.
15753         (complete_class_report_errors): Fixed indentation.
15754         (declare_local_variables): Call variable_redefinition_error.
15755         (source_end_java_method): Call java_set_exception_lang_code and
15756         emit_handlers where appropriate.
15757         (java_method_add_stmt): Call add_stmt_to_block.
15758         (add_stmt_to_block): New function.
15759         (lookup_method_invoke): Fixed outside comment. new local variable
15760         candicates.  Call find_applicable_accessible_methods_list and
15761         find_most_specific_methods_list when searching for a
15762         method. Modified error report to list possible candidates when
15763         applicable.
15764         (find_applicable_accessible_methods_list,
15765         find_most_specific_methods_list, argument_types_convertible): New
15766         function.
15767         (refine_accessible_methods_list): Function deleted.
15768         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
15769         expr (if applicable) before calling patch_array_ref.
15770         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
15771         (enter_block): Fixed comment.
15772         (enter_a_block): New function.
15773         (patch_assignment): Reorganized. Call try_reference_assignconv for
15774         references. Call valid_cast_to_p instead of can_cast_to_p.
15775         (try_reference_assignconv,
15776         valid_builtin_assignconv_identity_widening_p): New functions.
15777         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
15778         (valid_cast_to_p, valid_method_invocation_conversion_p): New
15779         functions.
15780         (build_string_concatenation): Don't resolve StringBuffer.
15781         (patch_cast): Fixed inverted arguments.
15782         (patch_array_ref): Code to save array expr deleted. Call
15783         valid_cast_to_p instead of can_cast_to_p.
15784         (generate_labeled_block): Call generate_name.
15785         (build_jump_to_finally, build_try_statement, java_get_catch_block,
15786         patch_try_statement): New functions.
15787         * typeck.c (match_java_method): Function deleted.
15788
15789 1998-10-02  Anthony Green  <green@cygnus.com>
15790
15791         * jvspec.c: jvgenmain_spec uses different temporary file names.
15792
15793 1998-10-02  Anthony Green  <green@cygnus.com>
15794
15795         * jvspec.c (lang_specific_driver): Fail if user specifies
15796         --main= when not linking.
15797
15798 1998-09-28  Tom Tromey  <tromey@cygnus.com>
15799
15800         * class.c (make_class_data): Push value for `thread' field.
15801         * decl.c (init_decl_processing): Added `thread' field to class.
15802
15803         * class.c (add_field): Always make static fields externally
15804         visible.
15805
15806 1998-09-26  Anthony Green  <green@cygnus.com>
15807
15808         * expr.c (build_java_athrow,
15809         build_java_throw_out_of_bounds_exception, expand_invoke,
15810         build_newarray, expand_java_multianewarray, build_java_monitor):
15811         Update comments to reflect _Jv_* function names.
15812
15813 1998-09-25  Per Bothner  <bothner@cygnus.com>
15814
15815         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
15816         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
15817         * parse.y (expand_start_java_method):  Likewise.
15818
15819 1998-09-24  Per Bothner  <bothner@cygnus.com>
15820
15821         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
15822
15823         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
15824         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
15825         * expr.c:  Remove no-longer-needed calls to promote_type.
15826         * decl.c (give_name_to_locals):  Liekwise.
15827         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
15828         * parse.y:  Add/remove promote_type calls as appropriate.
15829         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
15830         (parse_signature_string):  Likewise.
15831         (build_java_array_type):  Fix for now signature convenions.
15832
15833         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
15834
15835 1998-09-23  Tom Tromey  <tromey@cygnus.com>
15836
15837         * class.c (init_class_processing): libjava function renamed to
15838         _Jv_RegisterClass.
15839
15840 1998-09-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15841
15842         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
15843         * java-tree.def: Fixed DEFTREECODE third argument.
15844         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
15845         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
15846         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
15847         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
15848         JAVA_THIS_EXPR): Now replaced by tree code definitions.
15849         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
15850         * lang.c (java_tree_code_type, java_tree_code_length,
15851         java_tree_code_name): New arrays.
15852         (lang_init): Append Java tree node definitions to Gcc ones.
15853         * lex.c (expression_obstack): Declared as extern when JC1_LITE
15854         defined.
15855         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
15856         wfl_to_string.
15857         (java_lex): Allow declaration of empty string constants. Retain
15858         location information on CASE_TK and DEFAULT_TK.
15859         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
15860         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
15861         Modified to be more robust.
15862         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
15863         (build_new_invocation, try_builtin_assignconv,
15864         patch_switch_statement, string_constant_concatenation,
15865         build_string_concatenation, patch_string_cst, patch_string,
15866         java_expand_switch): New function declarations.
15867         * parse.y: Rules related to switch and EH tagged <node>.
15868         (label_id): Set to NULL_TREE
15869         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
15870         tree nodes.
15871         (this_or_super:): Fixed indentation.
15872         (statement:, statement_nsi:, statement_without_trailing_substatement:,
15873         statement_expression:): Removed call to RULE on all sub-rules.
15874         (switch_expression:, switch_labels:): New rules.
15875         (switch_statement:, switch_block:, switch_block_statement_groups:,
15876         switch_block_statement_group:, switch_labels:, switch_label:):
15877         Defined actions.
15878         (throw_statement:, synchronized_statement:, try_statement:):
15879         Defined temporary actions.
15880         (class_instance_creation_expression:): Call
15881         build_new_invocation. Fixed indentation.
15882         (field_access): Fixed indentation.
15883         (method_invocation): Likewise.
15884         (make_qualified_primary): Use THIS_EXPR.
15885         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
15886         resolving from SUPER, set *type_found.
15887         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
15888         (java_complete_tree): Removed unused local variable `location'. Case
15889         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
15890         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
15891         on MODIFY_EXPR: and all binary operator tree code cases. Removed
15892         STRING_CST: case. default: checks for patchable strings.
15893         (complete_function_arguments): Transform string constant or
15894         crafted StringBuffer if necessary.
15895         (build_method_invocation): Fixed comments.
15896         (build_new_invocation): New function.
15897         (patch_assignment): Call try_builtin_assignconv to figure a valid
15898         assignment conversion between builtin types.
15899         (try_builtin_assignconv): New function.
15900         (build_binop): Use URSHIFT_EXPR directly to call build.
15901         (operator_string): Use UNARY_PLUS_EXPR.
15902         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
15903         operator.
15904         (do_merge_string_cste, merge_string_cste,
15905         string_constant_concatenation, build_string_concatenation,
15906         patch_string, patch_string_cst): New function.
15907         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
15908         (patch_unaryop): Likewise. New test of valid ++/-- operands.
15909         (build_newarray_node): Use NEW_ARRAY_EXPR.
15910         (build_this): Use THIS_EXPR.
15911         (build_return): Enable debug information on return statement.
15912         (build_if_else_statement): Likewise.
15913         (complete_labeled_statement): Fixed related comment.
15914         (build_loop_body): Fixed comment.
15915         (build_bc_statement): Enable debug information on break/continue
15916         statements.
15917         (patch_bc_statement): Fixed typos. Handle SWITCH statement
15918         context.
15919         (patch_switch_statement, case_identity, java_expand_switch): New
15920         functions.
15921
15922 1998-09-21  Per Bothner  <bothner@cygnus.com>
15923
15924         * buffer.h (BUFFER_INIT):  New macro.
15925         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
15926         Pass (struct jcf_partial *state) to most functions.
15927         (jcf_block, jcf_relocation):  New types.
15928         Support labels, branches, conditionals, loops.
15929
15930 1998-09-21  Tom Tromey  <tromey@cygnus.com>
15931
15932         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
15933
15934 1998-09-21  Per Bothner  <bothner@cygnus.com>
15935
15936         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
15937         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
15938         not integer_type_node (INT_TYPE_SIZ bits).
15939
15940         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
15941
15942         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
15943         * jcf-dump.c (print_exception_table):  New function.
15944         (disassemble_method):  Better handling of wide instructions.
15945         Make more robust for bad input.
15946
15947 1998-09-30  Jeffrey A Law  (law@cygnus.com)
15948
15949         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
15950         FreeBSD.
15951
15952 1998-09-17  Jeffrey A Law  (law@cygnus.com)
15953
15954         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
15955
15956 1998-09-17  Tom Tromey  <tromey@cygnus.com>
15957
15958         * Makefile.in ($(PARSE_H)): Removed target.
15959
15960 1998-09-17  Jeffrey A Law  (law@cygnus.com)
15961
15962         * Makefile.in (JAVA_OBJS): Add memmove.o
15963         (memmove.o): New target & rules.
15964
15965 1998-09-15  Tom Tromey  <tromey@cygnus.com>
15966
15967         * expr.c (expand_invoke): Don't generate a call to the class init
15968         code.
15969
15970 1998-09-14  Jeffrey A Law  (law@cygnus.com)
15971
15972         * Makefile.in: Add many missing dependencies.
15973         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
15974         as appropriate.
15975         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
15976         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
15977
15978 1998-09-11  Per Bothner  <bothner@cygnus.com>
15979
15980         * decl.c (complete_start_java_method):  If method is static (and
15981         not private) call _Jv_InitClass.
15982         * expr.c (expand_invoke):  Don't call build_class_init.
15983
15984         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
15985
15986 1998-09-10  Jeffrey A Law  (law@cygnus.com)
15987
15988         * Make-lang.in (GCJ): Define before using.
15989
15990 1998-09-09  Jeffrey A Law  (law@cygnus.com)
15991
15992         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
15993         losing due to namespace pollution in GNU getopt.h
15994
15995 1998-09-09  Tom Tromey  <tromey@cygnus.com>
15996
15997         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
15998         (java.all.cross): Likewise.
15999         (java.rest.encap): Likewise.
16000
16001 1998-09-08  Jeffrey A Law  (law@cygnus.com)
16002
16003         * gjavah.c (print_class_decls): Fix thinko in arglist
16004         * jcv-io.c (find_classfile): Similarly.
16005
16006 1998-09-07  Jeffrey A Law  (law@cygnus.com)
16007
16008         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
16009
16010 1998-09-05  Tom Tromey  <tromey@cygnus.com>
16011
16012         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
16013         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
16014         * Makefile.in (PARSE_C): New macro.
16015         (PARSE_H): Likewise.
16016         (PARSE_SCAN_C): Likewise.
16017         ($(PARSE_C)): Target renamed from parse.c.
16018         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
16019         (clean): Remove parse-scan.c as well.
16020         (parse.o): Depend on $(PARSE_C).
16021
16022 1998-09-05  Anthony Green  <green@cygnus.com>
16023
16024         * README, license.terms: Removed.
16025
16026         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
16027         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
16028         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
16029         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
16030         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
16031         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
16032         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
16033         and Java trademark attribution.
16034
16035 1998-09-04  Tom Tromey  <tromey@cygnus.com>
16036
16037         * Makefile.in: Use gcjh, not gjavah.
16038         * config-lang.in (stagestuff): Use gcjh, not gjavah.
16039         * Make-lang.in: Changed gjavah to gcjh everywhere.
16040
16041 1998-09-03  Per Bothner  <bothner@cygnus.com>
16042
16043         * gjavah.c:  Support new -prepend -add -append flags.
16044         (print_method_info):  Method is not virtual if class is final.
16045
16046 1998-09-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16047
16048         * jv-scan.c: Fixed copyright assignment.
16049         * keyword.gperf: Likewise.
16050         * keyword.h: Likewise.
16051         * lex.c: Fixed copyright assignment.
16052         (java_lex): Push unicode back when parsing '<'.
16053         * lex.h: Fixed copyright assignment.
16054         * parse-scan.y: Likewise.
16055         * parse.h: Fixed copyright assignment.
16056         (build_debugable_stmt, complete_for_loop): New function prototypes.
16057         * parse.y: Fixed copyright assignment.
16058         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
16059         size_zero_node when completing a loop with no exit condition.
16060         (for_statement_nsi:): Define action.
16061         (for_init:, for_update:): Return size_zero_node when empty.
16062         (declare_local_variables): Call build_debugable_stmt.
16063         (build_debugable_stmt): New function.
16064         (build_loop_body): Build debugable statement around loop
16065         condition part.
16066         (complete_loop_body): Take into account the debugable statement
16067         around the EXIT_EXPR.
16068         (complete_loop_body): New function.
16069         (patch_exit_expr): Fixed condition inversion.
16070
16071 1998-09-02  Tom Tromey  <tromey@cygnus.com>
16072
16073         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
16074         name of thread define.
16075         * jvspec.c (THREAD_NAME): New macro.
16076         (GCLIB): Likewise.
16077         (THREADLIB): Likewise.
16078         (lang_specific_driver): Recognize attempt to link with thread
16079         library or gc library.  Recognize -ljava on command line so it
16080         isn't linked against more than once.
16081
16082 1998-09-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16083
16084         * parse-scan.y (report_main_declaration): Name of the class
16085         containing `main' can be a qualified name.
16086
16087 1998-08-31  Tom Tromey  <tromey@cygnus.com>
16088
16089         * config-lang.in: Changed gjavac to gjc everywhere.
16090         * Make-lang.in: Changed gjavac to gjc everywhere.
16091
16092 1998-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16093
16094         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
16095         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
16096         and install the files.
16097         * Makefile.in (JAVA_OBJS_LITE): New variable.
16098         (compiler:): Now include jv-scan as a dependency.
16099         (../jv-scan$(exeext), parse-scan.c): New targets.
16100         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
16101         * config-lang.in (compilers): Removed gcj, gjavah from the list.
16102         * jcf-parse.c (parse_source_file): Call java_layout_classes and
16103         check for errors even if parse_only.
16104         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
16105         defined.
16106         (yylex): New function. Uses java_lex body.
16107         (java_lex): Removed commented out statement. Remove local variable
16108         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
16109         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
16110         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
16111         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
16112         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
16113         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
16114         where appropriate.
16115         (java_lex_error): Empty if JC1_LITE is defined.
16116         (java_get_line_col): Return 0 if JC1_LITE is defined.
16117         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
16118         SET_MODIFIER_CTX): Moved into the section containing the macros
16119         conditionally defined by JC1_LITE.
16120         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
16121         argument if JC1_LITE is defined.
16122         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
16123         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
16124         is defined.
16125         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
16126         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
16127         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
16128         to different values according to JC1_LITE.
16129         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
16130         declared if JC1_LITE set.
16131         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
16132         defined if JC1_LITE not set.
16133         (struct parser_ctx): Reorganized and skip the jc1 front end part
16134         if JC1_LITE set.
16135         (java_layout_classes): New function definition.
16136         (java_push_parser_context, java_init_lex, yyparse, yylex,
16137         yyerror): Prototype always declared. All other static function
16138         prototypes declared only if JC1_LITE is not set.
16139         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
16140         declared in parse.h.
16141         (java_layout_classes): New function.
16142         (java_complete_expand_methods): No longer layout the class here.
16143         * parse-scan.y: New file.
16144         * jv-scan.c: New file.
16145
16146 1998-08-25  Tom Tromey  <tromey@cygnus.com>
16147
16148         * gjavah.c (main): Handle -friend option.
16149         (friend_specs): New global.
16150         (generate_access): Handle friend_specs.
16151         (process_file): Likewise.
16152         (MAX_FRIENDS): New macro.
16153         (friend_count): New global.
16154         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
16155         Changed all callers.
16156
16157 1998-08-24  Per Bothner  <bothner@cygnus.com>
16158
16159         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
16160         (main):  Handle processing all the entries of a named .zip archive.
16161         * jcf-io.c (jcf_trim_old_input):  New function.
16162         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
16163
16164 1998-08-24  Per Bothner  <bothner@cygnus.com>
16165
16166         * lang.c (flag_assume_compiled):  Make default be on.
16167
16168 1998-08-21  Per Bothner  <bothner@cygnus.com>
16169
16170         * jcf-dump.c:  Add bunches of flags to control output more.
16171         (process_class):  New function;  support printing more than one class.
16172         (main): Support new --print-main and --javap flags.
16173         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
16174         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
16175
16176 1998-08-20  Per Bothner  <bothner@cygnus.com>
16177
16178         Change mangling of dispatch table to match C++ vtable (w/thunks).
16179         * class.c (build_dtable_decl), java-tree.h:  New function.
16180         (make_class_data):  Call it.
16181         * decl.c (init_decl_processing):  Likewise.
16182
16183 1998-08-19  Warren Levy  <warrenl@cygnus.com>
16184
16185         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
16186         soft_anewarray; adjust args passed.
16187         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
16188         match _Jv_NewObjectArray.
16189
16190 1998-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16191
16192         * decl.c (push_labeled_block, pop_labeled_block): New functions.
16193         * expr.c (loopup_label): Call create_label_decl.
16194         (create_label_decl): New function.
16195         (java_lang_expand_expr): Call expand_start_bindings with argument
16196         set to zero.
16197         * java-tree.h Added space after PROTO in function declarations
16198         when necessary.
16199         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
16200         (create_label_decl, push_labeled_block): New function
16201         declarations.
16202         * lex.c (label_id): Initialize.
16203         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
16204         switch.
16205         * parse.h Added space after PROTO in function declarations when
16206         necessary.
16207         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
16208         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
16209         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
16210         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
16211         macros.
16212         (struct parser_ctxt): New fields current_loop,
16213         current_labeled_block.
16214         (build_if_else_statement, patch_if_else_statement,
16215         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
16216         generate_labeled_block, complete_labeled_statement,
16217         build_bc_statement, patch_bc_statement, patch_loop_statement,
16218         build_new_loop, build_loop_body, complete_loop_body): New function
16219         declarations.
16220         * parse.y (java_warning_count): New global variable.
16221         (label_id): New static variable.
16222         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
16223         (block:): Return size_zero_node when block is empty.
16224         (empty_statement:): Return size_zero_node.
16225         (statement:): Implement supplemental action when for_statement: is
16226         reduced.
16227         (label_decl:): New rule.
16228         (labeled_statement:): Rewritten using label_decl. Actions
16229         implemented.
16230         (labeled_statement_nsi:): Likewise.
16231         (if_then_statement): Actions implemented.
16232         (while_expression): New rule.
16233         (while_statement:): Rewritten using while_expression. Actions
16234         implemented.
16235         (while_statement_nsi:): Likewise.
16236         (do_statement_begin:): New rule.
16237         (do_statement:): Rewritten using do_statement_begin. Actions
16238         implemented.
16239         (for_statement:): Rewritten using for_begin. Actions implemented.
16240         (for_statement_nsi:): Likewise.
16241         (for_header:, for_begin:): New rules.
16242         (for_init:): Actions implemented.
16243         (statement_expression_list:, break_statement:,
16244         continue_statement:): Likewise.
16245         (yyerror): Count number of issued warning(s).
16246         (java_report_errors): Report error(s) and/or warning(s).
16247         (java_complete_class): Use build_java_argument_signature to
16248         recompute completed method signature.
16249         (java_check_regular_methods): New locals method_wfl and aflags.
16250         Use method_wfl instead of lookup_cl during error reports. Fixed
16251         indentation and modified some error messages. Use
16252         lang_printable_name in method instead of the DECL_NAME. New code
16253         to issue warnings on methods not overriding corresponding methods
16254         private to a different package.
16255         (java_method_add_stmt): Call add_stmt_to_compound.
16256         (add_stmt_to_compound): New function.
16257         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
16258         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
16259         (build_if_else_statement, patch_if_else_statement,
16260         build_labeled_block, generate_labeled_block,
16261         complete_labeled_statement, build_new_loop, build_loop_body,
16262         complete_loop_body, patch_loop_statement, build_bc_statement,
16263         patch_bc_statement, patch_exit_expr): New functions.
16264         * typeck.c (build_java_signature): Build argument signature before
16265         enclosing it in between parenthesis.
16266
16267 1998-08-17  Warren Levy  <warrenl@cygnus.com>
16268
16269         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
16270         (JAVA_OBJS): Added reminder comment
16271
16272 1998-08-13  Nick Clifton  <nickc@cygnus.com>
16273
16274         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
16275         be interpreted as a long long.
16276
16277 1998-08-13  Warren Levy  <warrenl@cygnus.com>
16278
16279         * decl.c (init_decl_processing): Use _Jv_InitClass, not
16280         soft_initialise_class.  Use _Jv_NewMultiArray, not
16281         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
16282         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
16283         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
16284         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
16285
16286 1998-08-12  Per Bothner  <bothner@cygnus.com>
16287
16288         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
16289         length_identifier_node):  New global tree node constants.
16290         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
16291         Replace uses by super_identifier_node etc.
16292         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
16293
16294         * parse.y (resolve_field_access):  Don't special-case ".length" if
16295         flag_emit_class_files.
16296         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
16297         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
16298         and ARRAY.length.
16299
16300 1998-08-11  Per Bothner  <bothner@cygnus.com>
16301
16302         * decl.c (init_decl_processing): Remove unused method_type_node fields.
16303         * class.c (make_method_value):  Remove init for removed fields.
16304
16305         * class.c (layout_class):  Use build_java_argument_signature.
16306         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
16307
16308         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
16309         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
16310         (build_java_signature):  Don't use push_java_argument_signature.
16311
16312         * typeck.c (lookup_argument_method):  New function.
16313         * parse.y (java_check_regular_methods):  Use lookup_argument_method
16314         instead of lookup_java_method2 followed by lookup_java_method.
16315
16316         * parse.y (check_method_redefinition):  Minor optimization.
16317
16318         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
16319         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
16320
16321 1998-08-10  Tom Tromey  <tromey@cygnus.com>
16322
16323         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
16324         c-pragma.o.
16325
16326         * gjavah.c (java_float_finite): Use K&R-style definition.
16327         (java_double_finite): Likewise.
16328         (generate_access): Now returns void.  Changed all callers.
16329         (last_access_generated): Removed.
16330         (process_file): Only make a single pass over the .class file.
16331
16332 1998-07-29  Per Bothner  <bothner@cygnus.com>
16333
16334         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
16335         for compatibility for G++ (with -fvtable-thunks).
16336         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
16337
16338         * gjavah.c (process_file):  Use public inheritance for super-class.
16339
16340 1998-07-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16341
16342         * lex.c (java_init_lex): Initialize ctxp->package.
16343         * parse.h (struct parser_ctxt): package and package_len replaced
16344         by tree package, an identifier node. Field method_decl_list is
16345         gone. Fixed comments.
16346         (lookup_field_wrapper, merge_qualified_name, not_accessible,
16347         class_in_current_package): New function prototypes.
16348         * parse.y (array_type:): Set class loaded flag on primitive type
16349         arrays.
16350         (package_declaration:): Assign ctxp->package to the
16351         identifier node.
16352         (method_invocation:): Handle invocation of method qualified by
16353         `super'.
16354         (single_type_import_declaration:): Removed ambiguity check.
16355         (java_pop_parser_context): New local variable `next'. Reset and
16356         set IMPORT_CLASSFILE_NAME flags on current and previous import
16357         list.
16358         (java_accstring_lookup): Use new local macro COPY_RETURN.
16359         (lookup_field_wrapper): New function.
16360         (parser_qualified_classname): Use merge_qualified_name.
16361         (parser_check_super_interface): Broaden error message.
16362         (do_resolve_class): Check for qualified class name in the current
16363         compilation unit if appropriate.
16364         (process_imports): Check for already defined classes.
16365         (check_pkg_class_access): Got rid of call to
16366         get_access_flags_from_decl.
16367         (java_complete_expand_methods): Call safe_layout_class based on
16368         the current class size.
16369         (make_qualified_primary): Build a WFL qualification on primary if
16370         none exists.
16371         (merge_qualified_name): New function.
16372         (make_qualified_name): Use merge_qualified_name.
16373         (resolve_expression_name): Use safe_lookup_field.
16374         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
16375         (resolve_qualified_expression_name): Likewise. Check on resolved
16376         element accessibility.
16377         (not_accessible_p, class_in_current_package): New functions.
16378         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
16379         (patch_method_invocation_stmt): Merged common pieces. Check
16380         accessibility of invoked method.
16381         (check_for_static_method_reference): Add returned type in error
16382         message.
16383         (invocation_mode): Get rid of bogus check on PRIVATE methods.
16384         (refine_accessible_methods_list): Merged two conditions in test.
16385         (java_complete_class): Sanity check on stabilize_ref gone.
16386         * zextract.c (read_zip_archive): Cast lseek second argument to long.
16387
16388 1998-07-28  Per Bothner  <bothner@cygnus.com>
16389
16390         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
16391
16392 1998-07-24  Tom Tromey  <tromey@cygnus.com>
16393
16394         * gjavah.c (F_NAN): Removed.
16395         (F_NAN_MASK): New macro.
16396         (F_POSITIVE_INFINITY): Removed.
16397         (F_NEGATIVE_INFINITY): Likewise.
16398         (java_float_finite): Rewrote.
16399         (D_NAN_MASK): Renamed.
16400         (java_double_finite): Rewrote.
16401         (D_POSITIVE_INFINITY): Removed.
16402         (D_NEGATIVE_INFINITY): Likewise.
16403
16404         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
16405         If verbose, print underlying representation of value in hex.
16406
16407 1998-07-24  Per Bothner  <bothner@cygnus.com>
16408
16409         * buffer.h, buffer.c:  New files.
16410         * Makefile.in (JAVA_OBJS):  Add buffer.o.
16411
16412         Support locals variables and writing their debug entries to .class.
16413         * jcf-write.c:  Simplify some by user new buffer type.
16414         (vode_buffer_grow):  Removed.
16415         (struct localvar_info):  New type.
16416         (localsvars, localvartable):  New buffers.
16417         (localvar_alloc, localvar_free):  New functions.
16418         (generate_bytecode_insns):  Handle local variables.
16419         (generate_classfile):  Write LocalVariableTable attribute.
16420
16421 1998-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16422
16423         * jcf-io.c (open_in_zip): Check the zipfile magic number.
16424         * zipfile.h (ZIPMAGIC): New macro.
16425
16426 1998-07-24  Tom Tromey  <tromey@cygnus.com>
16427
16428         * Makefile.in (gjavah.o): Updated dependencies.
16429         (jcf-dump.o): Likewise.
16430         (all.indirect): Use ../gjavah.
16431         (../gjavah$(exeext)): Likewise.
16432         (clean): Don't remove gjavah.
16433         (clean): Remove parse.c, not java/parse.c.
16434         * Make-lang.in (java): Added gjavah.
16435         (gjavah$(exeext)): New target.
16436         (GJAVAH_SOURCES): New macro.
16437         (java.all.build): Added gjavah.
16438         (java.all.cross): Likewise.
16439         (java.rest.encap): Likewise.
16440         * config-lang.in (compilers, stagestuff): Added gjavah.
16441
16442 1998-07-23  Tom Tromey  <tromey@cygnus.com>
16443
16444         * gjavah.c (java_float_finite): New function.
16445         (java_double_finite): Likewise.
16446         (F_POSITIVE_INFINITY): New macro.
16447         (F_NEGATIVE_INFINITY): Likewise.
16448         (F_NAN): Likewise.
16449         (D_POSITIVE_INFINITY): Likewise.
16450         (D_NEGATIVE_INFINITY): Likewise.
16451         (D_NAN): Likewise.
16452         (print_field_info): Use java_float_finite and java_double_finite.
16453
16454 1998-07-23  Per Bothner  <bothner@cygnus.com>
16455
16456         * parse.y (method_header):  Name "this" implicit argument.
16457
16458 1998-07-22  Per Bothner  <bothner@cygnus.com>
16459
16460         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
16461         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
16462         (put_linenumber):  New function.
16463         (generate_bytecode_insns, generate_classfile):  Write line numbers.
16464
16465 1998-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16466
16467         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
16468         (lookup_name, build_known_method_ref, build_class_init,
16469         build_invokevirtual, invoke_build_dtable, match_java_method,
16470         build_field_ref, pushdecl_force_head, build_java_binop,
16471         binary_numeric_promotion, build_decl_no_layout,
16472         build_java_arrayaccess, build_newarray, build_anewarray,
16473         build_java_array_length_access, build_java_arraynull_check): New
16474         extern function prototypes.
16475         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
16476         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
16477         java-tree.h.
16478         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
16479         to NULL
16480         * jcf.h (jcf_out_of_synch): New extern function prototype.
16481         * parse.h: Static/global function implemented in parse.y
16482         prototyped and declarations moved at the end of the file.
16483         (DECL_P): Check that the argument isn't null.
16484         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
16485         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
16486         (QUAL_DECL_TYPE): New macro.
16487         (PARAMS): Macro definition removed.
16488         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
16489         (return_statement:): Call build_return.
16490         (field_access:): Call make_qualified_primary in sub rule.
16491         (method_invocation:): Build method invocation and call
16492         make_qualified_primary when processing primaries.
16493         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
16494         get_type_from_signature.
16495         (java_check_regular_method): Extra integer 0 argument when calling
16496         lookup_java_method2.
16497         (lookup_java_interface_method2): Extra method DECL argument when
16498         calling lookup_java_interface_method2.
16499         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
16500         COMPOUND_EXPR node.
16501         (java_complete_expand_method): Layout current class iff not
16502         already done. Don't process interface's methods.
16503         (java_complete_expand_method): Use super class only if it
16504         exists. Use current class otherwise.
16505         (make_qualified_primary): New function.
16506         (resolve_expression_name): Process qualified expression or
16507         expression from primary the same way.
16508         (resolve_expression_name): Two last arguments to
16509         resolve_field_access are now NULL_TREEs.
16510         (resolve_field_access): New variable is_static. Local field must
16511         be DECLs. is_static computed on field DECLs only. Append code in
16512         where_found to the field access if necessary. Use QUAL_DECL_TYPE
16513         to initialize field_type.
16514         (resolve_qualified_expression_name): New local variable,
16515         previous_call_static and is_static. Handle primaries with function
16516         calls, casts, array references and `this'. `super' now handled as
16517         `(super_class)this'. Use is_static to clarify boolean expressions.
16518         Added code to handle case where a proper handle is required to
16519         access a field. Use QUAL_DECL_TYPE where applicable.
16520         (maybe_access_field): New function.
16521         (patch_method_invocation_stmt): New arguments primary, where,
16522         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
16523         deleted. Use `where' as a type to search from if specified. Check
16524         for static method reference where forbidden. Append primary or
16525         current_this to the argument list if not calling constructor nor
16526         static methods.
16527         (check_for_static_method_reference): New function.
16528         (patch_invoke): Layout the class on which new is done if
16529         necessary.
16530         (lookup_method_invoke): Changed format to report errors on
16531         methods.
16532         (qualify_ambiguous_name): New local variable this_found. Now
16533         handle things from primaries. Method call are considered
16534         expression names.
16535         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
16536         changed into NULLs.
16537         (not_initialized_as_it_should_p): Comply with the new DECL_P.
16538         (java_complete_tree): New case fo RETURN_EXPR. Process function
16539         call arguments in separate function.
16540         (complete_function_arguments): New function.
16541         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
16542         anymore.
16543         (patch_assignment): Take the return function slot into account as
16544         a RHS. Distinguish assignment from a return.
16545         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
16546         when checking methods in interfaces.
16547         (resolve_type_during_patch): NULL argument to unresolve_type_p
16548         instead of NULL_TREE.
16549         (patch_newarray): Fixed typo in comment.
16550         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
16551         (build_return, patch_return): New functions.
16552         * typeck.c (lookup_java_constructor): Fixed typo in comment.
16553
16554 1998-07-21  Per Bothner  <bothner@cygnus.com>
16555
16556         * constants.c (find_name_and_type_constant, find_fieldref_index,
16557         find_methodref_index):  New methods.
16558         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
16559         just return given method.  Also, rename to build_known_method_ref.
16560         (expand_invoke):  Rename call to build_invoke_non_interface.
16561         * java-tree.h, parse.h:  Update prototype.
16562         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
16563         (such as expand_expr_stmt) if flag_emit_class_files.
16564         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
16565         STACK_TARGET, IGNORE_TARGET):  New macros.
16566         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
16567         (generate_bytecode_insn):  New function to generate method's bytecode.
16568         (generate_classfile):  Node generate Code attribute for a method.
16569         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
16570         push_long_const, field_op, adjust_typed_op, maybe_wide):
16571         New functions used by generate_bytecode_insn.
16572
16573         * typeck.c (signature_include_return):  Remove variable.
16574         (push_java_argument_signature, build_java_argument_signature):  New.
16575         (build_java_signature):  Use push_java_argument_signature.
16576         * parse.y:  Use build_java_argument_signature instead of fiddling
16577         with signature_include_return.
16578
16579 1998-07-17  Tom Tromey  <tromey@cygnus.com>
16580
16581         * gjavah.c (print_c_decl): Always generate JArray<>* for array
16582         types.
16583
16584         * Makefile.in (all.indirect): Added gjavah$(exeext).
16585         (gjavah$(exeext)): Added $(exeext).
16586         (clean): Likewise.
16587
16588 1998-07-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16589
16590         * class.c (layout_class): Call to java_layout_parsed_class replace
16591         by safe_layout_class.
16592         * expr.c (build_java_array_length_access): Removed static storage
16593         class in the function definition.
16594         (build_java_arraynull_check): Likewise.
16595         Also fixed typos in two comments.
16596         * lex.c (java_init_lex): Initialize static global kw_length.
16597         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
16598         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
16599         java_lex_error.
16600         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
16601         * parse.h (resolve_no_layout): New static function declaration.
16602         (get_identifier_in_static): Declaration removed.
16603         (java_layout_parsed_class): Function name declaration changed to
16604         safe_layout_class.
16605         (build_newarray_node, patch_newarray, resolve_type_during_patch,
16606         not_initialized_as_it_should_p, build_this): New static function
16607         declarations.
16608         (pushdecl_force_head, build_java_binop, int_fits_type_p,
16609         binary_numeric_promotion, stabilize_reference,
16610         build_decl_no_layout, build_java_arrayaccess): Extern function
16611         declarations moved into their own section.
16612         (build_newarray, build_anewarray, build_java_array_length_access,
16613         build_java_arraynull_check): New extern function declarations.
16614         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
16615         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
16616         fake tree codes.
16617         (CALL_CONSTRUCTOR_P): New macro.
16618         * parse.y (kw_length): New static global tree node.
16619         (return_statement): Tagged <node>.
16620         (RETURN_TK): Tagged <operator>.
16621         (variable_declarator_id:): Build variable declaration with an
16622         empty initialization value if a syntax error was found in the
16623         initialization part of the variable declaration.
16624         (statement_without_trailing_substatement:): return_statement: now
16625         uses the default rule.
16626         (return_statement:): Temporarily fixed to return NULL_TREE.
16627         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
16628         (class_instance_creation_expression:): Class creation rules now
16629         call build_method_invocation upon reduction.
16630         (array_creation_expression:): Rules call build_newarray_node upon
16631         reduction.
16632         (dim_exprs:): Build a list of dimension expressions.
16633         (dim_expr:): Store location of the OSB_TK in the dimension
16634         expression node.
16635         (method_invocation:): Added a new error rule.
16636         (build_unresolved_array_type): WFL argument may also be an array
16637         on a primitive type. Name of the argument changed to reflect this.
16638         (method_declarator): Insert argument type at the beginning of the
16639         argument type list and later reverse the list.
16640         (unresolved_type_p): Argument 'returned' may be optionally
16641         NULL_TREE.
16642         (java_layout_class_from_source): Function renamed
16643         safe_layout_class.
16644         (resolve_and_layout): Now call resolve_no_layout and
16645         safe_layout_class.
16646         (resolve_no_layout): New function.
16647         (purify_type_name): New function.
16648         (complete_class_report_errors): Call purify_type_name during error
16649         report on a type not found.
16650         (process_imports): error_found local variable doesn't need to be
16651         initialized to zero.
16652         (declare_local_variables): New local type_wfl. Fixed typo in error
16653         message. type_wfl assigned to unresolved type and used to register
16654         incomplete type. Build a WFL around the variable initialization
16655         statement so that debug info can be generated on it.
16656         (source_start_java_method): Reverse argument list after they've
16657         been processed.
16658         (current_this): New static global variable.
16659         (java_complete_expand_methods): Set current_this when appropriate.
16660         (resolve_expression_name): Build correct static and non static
16661         field access bearing a simple name.
16662         (resolve_field_access): Resolve the length field of arrays. Handle
16663         f.m() cases.
16664         (patch_method_invocation_stmt): Set the type of the method
16665         invocation to error_mark_node. This value is later overridden by a
16666         valid type, if any. Don't handle qualified constructor invocation
16667         as qualified method invocation. Call lookup_method_invoke with its
16668         new flag. It's no longer necessary to access the selected method
16669         as the value of a tree list. Handle constructor invocation.
16670         (patch_invoke): Reverse argument list when invoking non interface
16671         methods. Insert call to new as the first argument of the
16672         constructor.
16673         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
16674         defined within a final class. Return INVOKE_STATIC if the invoked
16675         method is a constructor.
16676         (lookup_method_invoke): New lc argument is a flag to indicate a
16677         constructor lookup. Now handle constructor lookup. Choose the most
16678         specific method in case several were matching the invocation
16679         requirements. Return a method decl instead of a tree list featuring
16680         one single method decl element.
16681         (refine_accessible_methods_list): New lc flag argument to
16682         indicate that a constructor is being looked up.
16683         (not_initialized_as_it_should_p): New function.
16684         (java_complete_tree): Now process fake tree codes
16685         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
16686         save_expr on resolved function call arguments. Case on
16687         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
16688         (patch_assignment): LHS can be a field access expression. When
16689         dealing with reference, lhs_type is the promoted type of the
16690         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
16691         applicable.
16692         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
16693         (patch_binop): Use not_initialized_as_it_should_p where
16694         applicable.
16695         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
16696         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
16697         where applicable.
16698         (resolve_type_during_patch): New function.
16699         (patch_cast): Call resolve_type_during_patch to resolve type and
16700         report error accordingly.
16701         (patch_array_ref): Use not_initialized_as_it_should_p where
16702         applicable. Array base expression is saved before being
16703         used. Promote the type of an array elements if it contains non
16704         builtin types.
16705         (build_newarray_node, patch_newarray, build_this): New functions.
16706
16707 1998-07-16  Tom Tromey  <tromey@cygnus.com>
16708
16709         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
16710         increment it in `for' statement.
16711         (print_field_info): If number is inf or nan, don't print it.
16712         (print_method_info): If method name is `delete', just ignore it.
16713         (print_c_decl): Special-case jstringArray.
16714
16715         * gjavah.c (help): New function.
16716         (no_argument): New function.
16717         (usage): Changed text.
16718         (main): Rewrote argument handling.  Now handles -v, --help,
16719         --version.
16720         (version): New function.
16721         (found_error): New global.
16722         (main): Return found_error.
16723         (generate_access): Set found_error.
16724         (print_c_decl): Likewise.
16725
16726 1998-07-15  Tom Tromey  <tromey@cygnus.com>
16727
16728         * gjavah.c (print_c_decl): Don't print "," when examining field.
16729         Skip type name when looking at "[L" types.
16730         (process_file): Now static.
16731         (generate_access): Now returns int.
16732         (last_access_generated): New global.
16733         (process_file): Clear last_access_generated; make multiple passes
16734         over the class.
16735         (print_field_info): Just return if generate_access returns true.
16736         (print_method_info): Likewise.  Also, allow <init> functions to
16737         pass through.
16738         (print_c_decl): Added is_init argument.  Print constructors
16739         properly.
16740         (print_cxx_classname): Use UTF8_GET to extract characters from
16741         string.
16742         (print_base_classname): New function.
16743         (print_class_decls): New function.
16744         (process_file): Use it.
16745         (utf8_cmp): New function.
16746
16747 1998-07-13  Nick Clifton  <nickc@cygnus.com>
16748
16749         * lang-options.h: Format changed to match changes in gcc/toplev.c
16750         to implement a --help option.
16751
16752 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
16753
16754         * decl.c (init_decl_processing): Revert change to dtable_type.
16755
16756 1998-07-09  Per Bothner  <bothner@cygnus.com>
16757
16758         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
16759
16760 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
16761
16762         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
16763
16764         * lang.c (lang_init): Default flag_exceptions to 1, without
16765         checking to see if it's 2 first.
16766
16767 1998-07-08  Jeffrey A Law  (law@cygnus.com)
16768
16769         * constants.c: Include "system.h".
16770         * decl.c: Likewise.
16771         * lang.c (flag_new_exceptions): Get via extern now.
16772         (lang_init_options): New functions.  Turn on flag_new_exceptions.
16773
16774 1998-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16775
16776         * lex.c (java_lex): Return 0 when we see an invalid character in
16777         the input.
16778
16779         * lex.c (java_read_char): Specify extra argument when calling
16780         java_lex_error.
16781         (java_read_unicode, java_parse_end_comment,
16782         java_parse_escape_sequence): Likewise,
16783         (java_lex): Specify extra argument when calling
16784         java_lex_error. Test that IDs are beginning with a legal character
16785         for IDs. Handle invalid characters with an error message and a
16786         call to java_lex_error.
16787         (java_lex_error): Adjust column position by new argument
16788         `forward'. Issue an error even if in the middle of reporting an
16789         other error.
16790
16791 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
16792
16793         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
16794         we don't explicitly put a null pointer when we're copying it.
16795
16796 1998-07-07  Tom Tromey  <tromey@cygnus.com>
16797
16798         * gjavah.c (print_cxx_classname): New function.
16799         (super_class_name): Likewise.
16800         (print_super_fields): Removed.
16801         (in_super): Removed.
16802         (print_field_info): Never generate #defines.
16803         (print_c_decl): Changed generated types to match JNI.  No longer
16804         print class name before method name.
16805         (print_method_info): Print "static" before static methods.
16806         Print "virtual" before non-final methods.
16807         (usage): Use exit(1), not exit(-1).
16808         (main): Likewise.
16809         (print_field_info): Use %.17g to print a double.
16810         (last_access): New globals.
16811         (process_file): Initialize last_access.
16812         (usage): Now static.
16813         (ACC_VISIBILITY): New define.
16814         (generate_access): New function.
16815         (print_field_info): Call it.
16816         (print_method_info): Likewise.  Also, generate information for all
16817         methods, not just native methods.  Return void.
16818         (print_c_decl): Return void.
16819         (print_field_info): Return void.
16820
16821 1998-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16822
16823         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
16824         processing the jc1 grammar file. Prefix bison functions and
16825         variables with java_.
16826         (parse.c): Dependencies on parse.h and lex.h
16827         * expr.c (build_java_arrayaccess): Function now global.
16828         * java-tree.h: Comment reorganized to carry on previous
16829         classification effort.
16830         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
16831         RESOLVE_TYPE_NAME_P): New flags on WFLs.
16832         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
16833         java_parse (new prefix java_ generated by bison).
16834         (java_layout_parsed_class, java_register_parsed_class): Function
16835         call removed.
16836         (yyparse): Removed unnecessary call to init_outgoing_cpool.
16837         * lex.c (static tree wfl_op): Variable deleted.
16838         (java_init_lex): Initialize kw_super and kw_this. Initialize more
16839         ctxp fields to NULL_TREE.
16840         (java_lex): No longer create WFL for operators. Filename caching
16841         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
16842         created as STRING_CST and later expanded. Removed extra argument
16843         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
16844         and SUPER.
16845         (build_wfl_node): Removed code in comments.
16846         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
16847         store token and location data in the current bison token.
16848         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
16849         static/extern function declaration at the beginning of the file.
16850         (struct qualification): Data structure definition deleted.
16851         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
16852         (qualify_ambiguous_name): Function declaration modified. Function
16853         now returns nothing.
16854         (build_array_ref, patch_array_ref, make_qualified_name,
16855         resolve_qualified_expression_name, maybe_generate_clinit,
16856         resolve_field_access): New static function declarations.
16857         (build_java_arrayaccess): New extern function declaration.
16858         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
16859         (CALL_EXPR_PRIMARY): Macro deleted.
16860         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
16861         (struct parser_ctxt): Field initialized_final
16862         removed. non_static_initialized, static_initialized: New fields.
16863         * parse.y (static tree kw_super, static tree kw_this): New global
16864         static.
16865         (%union): tree wfl field of operator member replaced by int
16866         location. WFLs are non longer created for operators.
16867         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
16868         (qualified_name:): Now calls make_qualified_name to build the
16869         identifier.
16870         (type_declaration:): Consider generating <clinit> when class
16871         parsing completed.
16872         (variable_declarator:): Directly build an assignment node when the
16873         variable is initialized when declared.
16874         (this_or_super:): Build a WFL and set current location when THIS
16875         or SUPER are parsed.
16876         (expression_statement:): Wrap statement around a WFL.
16877         (primary_no_new_array:): Fixed typo. Changed value returned by
16878         THIS_TK because of its new type (temporary).
16879         (dim_exprs:): Temporary fix because of OSB_TK's new type.
16880         (field_access:): Build qualified name with SUPER.
16881         (method_invocation:): Fixed returned value because of SUPER's new
16882         type.
16883         (array_access:): Use OSB_TK location information.
16884         (post_increment_expression:, post_decrement_expression:,
16885         unary_expression:, pre_increment_expression:,
16886         pre_decrement_expression:, unary_expression_not_plus_minus:,
16887         cast_expression:, multiplicative_expression:,
16888         additive_expression:, shift_expression:, relational_expression:,
16889         equality_expression:, and_expression:, exclusive_or_expression:,
16890         inclusive_or_expression:, conditional_and_expression:,
16891         conditional_or_expression:, assignment:): Use new location/token
16892         information available on operators.
16893         (create_class): Set super_decl_type to NULL_TREE when processing
16894         java.lang.Object.
16895         (register_fields): Field initialization is now a MODIFY_EXPR
16896         node. Chain initialization code to the matching lists (according
16897         to the field declaration modifiers).
16898         (maybe_generate_clinit): New function.
16899         (method_header): Don't set method's DECL_NAME to a WFL when adding
16900         methods to java.lang.Object.
16901         (resolve_and_layout): Now can return NULL_TREE if the type
16902         resolution fails. Otherwise, return the class DECL instead of its
16903         TYPE.
16904         (check_method_redefinition): Don't patch method DECL_NAME if it
16905         belongs to java.lang.Object.
16906         (process_imports): Simply assign error_found to the value returned
16907         by check_pkg_class_access.
16908         (declare_local_variables): Don't use their init statements (if
16909         any) when parsing error were previously found. Reuse MODIFY_EXPR
16910         build during parsing as an init statement.
16911         (java_method_add_stmt): Now return the current method body.
16912         (java_layout_parsed_class, java_register_parsed_class): Functions
16913         removed.
16914         (java_complete_expand_methods): Initialize the constant pool on a
16915         per class basis. Layout the classes before expanding their method
16916         bodies. Don't try expand artificial constructor code if error were
16917         found. Make the classes data and register them if no error were
16918         found.
16919         (java_complete_expand_method): Retrieve an artificial constructor
16920         argument list before entering its body. Assign the top block to
16921         the artificial constructor function body and set types of declared
16922         blocks and compound statements to void. Walk method body if not an
16923         artificial constructor.
16924         (make_qualified_name, cut_identifier_in_qualified): New functions.
16925         (resolve_expression_name): Fixed comments. Save/restore the
16926         current class CLASS_LOADED_P flag value. Build non qualified
16927         static field access and handle qualified expression names.
16928         (resolve_field_access, resolve_qualified_expression_name): New
16929         functions.
16930         (patch_method_invocation_stmt): Use the new expression resolution
16931         scheme, calling resolve_field_access when the function call is
16932         resolved as an expression.
16933         (qualify_ambiguous_name): Function rewritten to work on qualified
16934         expression produced by make_qualified_name.
16935         (java_complete_tree): Promote type when function's argument are
16936         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
16937         the assignment to discover further errors if RHS is a expression
16938         name that fails to evaluate. Declare LHS initialized even though
16939         the assignment failed. Don't use the location variable and removed
16940         extra argument in patch function calls. Now handle the ARRAY_REF
16941         case and build internal string representation when STRING_CSTs are
16942         walked.
16943         (build_method_invocation): Don't wrap function call around a WFL.
16944         (build_assignment): Likewise. Use the operator location
16945         information.
16946         (patch_assignment): Handle array access LHSs. Handle error
16947         provenance, resulting in a better error report.
16948         (build_binop): Use op_location from operator as binop location
16949         information.
16950         (build_unaryop, build_incdec, build_cast): Likewise.
16951         (patch_binop): Extract location information from the node. Fixed
16952         typo in error message.
16953         (patch_unary_op): Extract location information from the node.
16954         (build_array_ref, patch_array_ref): New functions.
16955
16956 1998-07-01  Tom Tromey  <tromey@cygnus.com>
16957
16958         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
16959         match _Jv_IsInstanceOf.
16960         * decl.c (init_decl_processing): Use _Jv_NewArray, not
16961         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
16962
16963 1998-06-30  Tom Tromey  <tromey@cygnus.com>
16964
16965         * decl.c (init_decl_processing): Functions are now named
16966         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
16967
16968 1998-06-29  Per Bothner  <bothner@cygnus.com>
16969
16970         * java-tree.h (load_class):  Add prototype.
16971         * class.c (is_compiled_class):  Add missing arg to load_class.
16972         * expr.c (expand_java_NEW):  Call load_class.
16973         * parse.y (process_import):  Removed bogus use of void return value.
16974
16975 1998-06-25  Per Bothner  <bothner@cygnus.com>
16976
16977         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
16978         Function name is "_Jv_Throw" instead of "soft_athrow".
16979         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
16980         Function name is "_Jv_AllocObject" instead of "soft_new".
16981         Takes an extra parameter (object size).
16982         * expr.c:  Update calls.
16983
16984 1998-06-24  Per Bothner  <bothner@cygnus.com>
16985
16986         * lex.c (java_get_line_col):  Handle end-of-file.
16987         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
16988
16989 1998-06-24  Andrew MacLeod  <amacleod@cygnus.com>
16990
16991         * lang.c (lang_init): Make -fexceptions the default.
16992         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
16993         exception handling is not turned on.
16994
16995 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
16996
16997         * lang.c (flag_new_exceptions): Make this this default.
16998         * decl.c (end_java_method): Call emit_handlers.
16999         * except.c (method_init_exceptions): Set language code and version.
17000         (expand_start_java_handler): Enable exception, and call
17001         expand_eh_region_start.
17002         (expand_end_java_handler): Enable exception, and set up catch blocks.
17003         (emit_handlers): New routine to generate the saved handlers.
17004         * java-except.h (emit_handlers): Add prototype.
17005
17006 1998-06-12  Per Bothner  <bothner@cygnus.com>
17007
17008         We used to have three different representations of the constant pool:
17009         the CPool structure, the tree_constant_pool, and the constructures
17010         used to build the Class object (which may need class and string
17011         constants) in compiled code.  None were appropriate for compiling
17012         to .class files, so I did a major overhaul.
17013
17014         First, the tree_constant_pool array was removed.  Things were
17015         modified to the CPool structure in the JCF could be used.
17016         Second, a "capacity" field was added to the CPool, and functions
17017         written to search for a matching constant, adding one if not found.
17018         The code that generated the Class object was changed to use a CPool.
17019         The actual TREE_LISTs used to build the CONSTRUCTORs used for
17020         the static Class object are now only in build_constants_constructor.
17021         Finally, I wrote code which can generate a .class file (including its
17022         constant pool) from the RECORD_TYPE of a class.  This is a big step
17023         on the way to compiling Java source into .class files.
17024
17025         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
17026         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
17027
17028         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
17029         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
17030         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
17031         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
17032         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
17033         (lang_type):  Removed constant_pool field.
17034         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
17035         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
17036         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
17037         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
17038
17039         * constants.c (current_constant_pool_tags, current_constant_pool_data,
17040         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
17041         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
17042         (set_constant_entry, find_constant1, find_constant2,
17043         find_class_constant, count_constant_pool_bytes, write_constant_pool,
17044         find_utf8_constant, find_class_or_string_constant):  New functions.
17045
17046         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
17047         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
17048         (give_name_to_class, get_class_constant):  Likewise.
17049         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
17050         (get_name_and_type_constant, get_ref_constant):  Removed.
17051         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
17052         * parse.y:  Don't save/restore tree_constant_pool.
17053         * verify.c (verify_jvm_instructions):  Update for new approach.
17054         * expr.c (expand_invoke, expand_java_field_op): Likewise.
17055
17056         * lang-options.h:  Added -femit-class-file, -femit-class-files.
17057         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
17058         (lang_f_options):  Added "emit-class-file(s)".
17059
17060         * expr.c (build_java_arrayaccess):  Generate more efficient array
17061         bounds checking, by using unsigned compare.
17062
17063         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
17064
17065 1998-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17066
17067         * parse.h: New comment on the handling of unresolved type
17068         identifiers. JDEPs are now part of the jdep_code enum.
17069         (typedef struct jdep): Now use enum jdep_code or int, depending on
17070         availability. Both are narrowed down to an 8 bits bitfield.
17071         (CALL_EXPR_PRIMARY): Fixed comment.
17072
17073 1998-06-10  Tom Tromey  <tromey@cygnus.com>
17074
17075         * Make-lang.in (java): Added gjavac and jvgenmain.
17076         (java.start.encap): Depend on gjavac.
17077         (java.rest.encap): Depend on jvgenmain.
17078
17079         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
17080         (JAVA_CROSS_NAME): Likewise.
17081         (java.all.build): Depend on jvgenmain and gjavac.
17082         (java.all.cross): Depend on jvgenmain and gjavac-cross.
17083         (jvgenmain$(exeext)): New target.
17084         (java.install-common): Wrote.
17085         * config-lang.in (compilers, stagestuff): Added gjavac and
17086         jvgenmain.
17087
17088 1998-06-10  Dave Brolley  <brolley@cygnus.com>
17089
17090         * lang.c (lang_decode_option): New argc/argv interface.
17091
17092 1998-06-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17093
17094         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
17095         * decl.c (build_decl_no_layout): New function.
17096         * expr.c (java_lang_expand_expr): Layout declarations found in
17097         blocks before they're pushed.
17098         * jcf-parse.c (load_class): Save current line when parsing class
17099         file.
17100         (parse_source_file): Register class before expanding their
17101         methods.
17102         * lang.c (put_decl_node): Produce `null' when `void *' is
17103         processed.
17104         * lex.c (static tree wfl_op): New static global, for error report
17105         on casts.
17106         (java_init_lex): wfl_operator and wfl_op initialized
17107         here. Filename caching added for wfl_op. Return wfl_op when `(' is
17108         parsed.
17109         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
17110         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
17111         build_unresolved_array_type): New static function definitions.
17112         (build_decl_no_layout): New extern function declared.
17113         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
17114         faulty modifier exists.
17115         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
17116         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
17117         (UNARY_PLUS_EXPR): New fake operator.
17118         (struct parser_ctxt): New field osb_number.
17119         * parse.y (static tree wfl_operator): New static WFL for operator
17120         bound error messages.
17121         (DECR_TK, INCR_TK): Moved.
17122         (OP_TK): Tagged <operator>.
17123         (array_type:): Now call build_unresolved_array_type.
17124         (dim_expr:): Count the number of '[' seen.
17125         (post_increment_expression, post_decrement_expression,
17126         pre_increment_expression, pre_decrement_expression,
17127         unary_expression_not_plus_minus, unary_expression:): Actions are
17128         now building the corresponding unary expressions.
17129         (cast_expression:): Actions are now building cast expressions.
17130         (build_unresolved_array_type): New function.
17131         (create_interface): Reset the number of declared interfaces.
17132         (create_class): Likewise.
17133         (method_header): Methods declared within the scope of an interface
17134         are now implicitly set public and abstract.
17135         (java_complete_class): Variable's and parameter's type are patched
17136         with a promoted type.
17137         (declare_local_variables): Resolved non builtin types are promoted
17138         before being used to build a variable decl. Removed type patch
17139         posted on variable initialization statement.
17140         (source_start_java_method): Use build_decl_no_layout to build the
17141         decl of a parameter of incomplete type.
17142         (java_register_parsed_class): Process interfaces too. Call
17143         rest_of_decl_compilation on each processed class declarations.
17144         (java_complete_expand_methods): Don't attempt to expand things in
17145         interfaces.
17146         (java_complete_tree): Process CONVERT_EXPR, even though it always
17147         has a type. Propagate error_mark_node to node's type too. Promote
17148         method's call argument type and return error_mark_node if
17149         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
17150         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
17151         handle unary operator nodes.
17152         (build_assignment): Added comment.
17153         (print_int_node): New function.
17154         (patch_assignment): New second argument. New error handling. Use
17155         print_int_node. Handle references. Use can_cast_to_p to issue
17156         different error message according to the context and check upon
17157         the initialization of the RHS.
17158         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
17159         (operator_string): Handle more operators.
17160         (patch_binop): No longer use a function static
17161         wfl_operator. Improved error message on shift distance.
17162         (build_unaryop, build_incdec, build_cast, patch_unaryop,
17163         patch_cast): New functions.
17164
17165 1998-06-05  Per Bothner  <bothner@cygnus.com>
17166
17167         * jvspec.c:  New file.
17168         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
17169
17170         * java-tree.h (identifier_subst):  Add declaration.
17171
17172 1998-06-04  Tom Tromey  <tromey@cygnus.com>
17173
17174         * jvgenmain.c (main): Generate call to JvRunMain.
17175
17176         * class.c (make_class_data): Push value for "sync_info" field.
17177         * decl.c (init_decl_processing): Push "sync_info" field.
17178
17179 1998-06-03  Per Bothner  <bothner@cygnus.com>
17180
17181         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
17182         Java (source) name, not signature.
17183         Set TYPE_ALIGN to (at least) that of element_type.
17184
17185 1998-06-02  Per Bothner  <bothner@cygnus.com>
17186
17187         * class.c:  Moved classname-mangling-rekated code to ...
17188         * mangle.c:  ... this new file.
17189         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
17190         * Makefile.in:  Update for above changes.
17191
17192 1998-06-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17193
17194         * expr.c (truthvalue_conversion): Convert integer and floating
17195         point value to their truth value.
17196         * lex.c (java_lex): Handle the `null' literal.
17197         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
17198         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
17199         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
17200         New macros.
17201
17202         * parse.y: Reorganization/documentation on token declaration.
17203         (binop_lookup[]): New added new tree codes.
17204         (relational_expression): Build corresponding binary operators.
17205         (equality_expression, conditional_and_expression,
17206         conditional_or_expression): Likewise.
17207         (java_complete_class): Fix crash in debug message.
17208         (java_complete_tree): Check initialization of method call
17209         arguments. Further bogus node evaluation to detect more error
17210         during assignments. Handles more binary operators.
17211         (patch_assignment): Use DECL_P.
17212         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
17213         code.
17214         (operator_string): Handle more case. Compacted source.
17215         (patch_binop): Changed function comment. Checking for
17216         uninitialized first operand takes the compound assignment into
17217         account and uses DECL_P. Checking for uninitialized second operand
17218         delayed to routine's end. Use macros to issue type bound error
17219         messages and issue messages on both operands if their types are
17220         different. Force fixed type into node. Handle all binary
17221         operators.
17222
17223 1998-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17224
17225         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
17226         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
17227         build operator node and return tokens.
17228         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
17229         * parse.h (java_complete_tree): Changed returned type in prototype.
17230         (build_method_invocation, build_assignment, patch_assignment,
17231         patch_binop): New static function declarations.
17232         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
17233         BUILD_EXPR_WFL): New macros.
17234         * parse.y (enum tree_code binop_lookup[]): New static for token to
17235         TREE_CODE lookup.
17236         (%union): Parser union has new sub-structure `operator'.
17237         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
17238         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
17239         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
17240         ASSIGN_ANY_TK): Tokens tagged `operator'.
17241         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
17242         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
17243         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
17244         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
17245         (assignment_operator:): Rule tagged `operator'.
17246         (expression_statement:): Re-installed default rule.
17247         (method_invocation:): Sub rules call build_method_invocation.
17248         (postfix_expression:): Don't attempt to resolve name here. Just
17249         return an ID.
17250         (multiplicative_expression:): Sub-rules build corresponding binop
17251         expression node.
17252         (additive_expression:, shift_expression:, and_expression:,
17253         exclusive_or_expression:, inclusive_or_expression:): Likewise.
17254         (assignment:): Sub rule invoke build_assignment.
17255         (assignment_operator:): Default rules on sub rules.
17256         (force_error): Added documentation on this variable.
17257         (declare_local_variables): Build initialization calling
17258         build_assignment.
17259         (expand_start_java_method): Removed unused rtx declaration. Mark
17260         arguments as already initialized.
17261         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
17262         (java_complete_expand_methods): Don't process next method if
17263         completion of the previous one triggered errors.
17264         (java_complete_expand_method): Call source_end_java_method if no
17265         error were found during completion.
17266         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
17267         locals declaratilon. Handle names found within a class. Return
17268         error_mark_node when things aren't found.
17269         (patch_method_invocation_stmt): Return error_mark_node on failures.
17270         (patch_invoke): Removed unused local. Return the correct node.
17271         (java_complete_tree): Now returns a value. The BLOCK section binds
17272         local identifiers and the type of a BLOCK is now void. Assign the
17273         result of operand completion on COMPOUND_EXPR. Assign the
17274         encapsulated node of a WFL to the result of its completion, except
17275         when the node is an identifier. Now handle MODIFY_EXPR and several
17276         binary operators. Return error_mark_node on errors.
17277         (build_method_invocation, build_assignment, patch_assignment,
17278         build_binop, operator_string, patch_binop): New functions.
17279         * typeck.c (binary_numeric_promotion): New function.
17280
17281 1998-05-21  Per Bothner  <bothner@cygnus.com>
17282
17283         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
17284         Replace most uses of ident_subst by identifier_subst.
17285
17286         * class.c (push_class_static_dummy_field):  Removed function.
17287         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
17288         instead of looking got "class" static field.  Create that decl here.
17289         (class_identifier_node):  Removed;  no longer needed.
17290         (init_class_processing):  Don't init class_identifier_node.
17291         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
17292         Do nreverse 0 times (instead of twice) for Object and Class.
17293         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
17294
17295 1998-05-20  Per Bothner  <bothner@cygnus.com>
17296
17297         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
17298         while initializing linenumber_count and linenumber_table.
17299         Do it before init_function_start (which calls emit_line_note).
17300         * expr.c (expand_byte_code):  Don't need to clear lineno here.
17301
17302 1998-05-18  Tom Tromey  <tromey@cygnus.com>
17303
17304         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
17305         then mangle number as _N_.
17306
17307         * class.c (mangle_class_field): New function.
17308         (build_class_ref): Set assembler name of class reference using
17309         mangle_class_field.
17310         (push_class_static_dummy_field): Likewise.
17311
17312 1998-05-17  Michael Tiemann <tiemann@cygnus.com>
17313
17314         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
17315         of assigning to TREE_CODE.  The latter method exploits a feature
17316         of GCC that is not ANSI compliant.
17317
17318 1998-05-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17319
17320         * decl.c (pushdecl_force_head): New function.
17321         (pushlevel): Removed conditional printf.
17322         (complete_start_java_method): Don't enter local variable scope if
17323         function is compiled from source code.
17324         * expr.c: parse.h now included
17325         (java_lang_expand_expr): New function.
17326         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
17327         printf. Terminate buffer when doing directories.
17328         * jcf-parse.c (parse_source_file): Call lang_init_source before
17329         parsing and before code generation.
17330         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
17331         use printf if the macro is defined.
17332         * lang.c (lang_init): Install lang_expand_expr hook on
17333         java_lang_expand_expr.
17334         (java_dummy_print): New function.
17335         (lang_init_source): New function.
17336         * lex.c (java_lex): Remember location of an opening brace at the
17337         second nesting level.
17338         (java_is_eol): Unget character seen after a CR if it is EOF.
17339         * parse.h: Now includes lex.h
17340         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
17341         printf if the macro is defined.
17342         (expand_start_java_method, build_expr_block, enter_block,
17343         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
17344         New static function declarations.
17345         (pushdecl_force_head): New extern function declaration.
17346         (INCOMPLETE_TYPE_P): New macro.
17347         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
17348         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
17349         BLOCK_EXPR_ORIGIN): New macros.
17350         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
17351         DECL_SOURCE_LINE_LAST): New macros.
17352         (struct parser_ctxt): Removed field current_method_decl, redundant
17353         with the field current_function_decl. Added fields
17354         first_ccb_indent1 and pending_block.
17355         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
17356         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
17357         tagged <node>
17358         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
17359         (compilation_unit:): Cosmetic on sub rule.
17360         (type_declaration:): Cosmetic on sub rules. Added an error rule.
17361         (variable_initializer:): Installed default rule on expression:.
17362         (method_declaration:): method_header: starts a new
17363         method. method_body: installs the function body, absorbs blocks
17364         emitted for temporary variable scopings, pops function's body block
17365         and merges function's last statement lineno in DECL_SOURCE_LINE.
17366         (method_body:): Installed default rules.
17367         (block:): Call enter_block when an opening brace is seen.  Absorb
17368         scoping blocks and call exit_block when a closing brace is seen.
17369         (block_statement:): Cosmetic changes.
17370         (method_invocation:): Create WFL around CALL_EXPR node.
17371         (patch_stage): Added comment around definition.
17372         (method_header): Try to use first_ccb_indent1 as the first line of
17373         the method, so BP debug info are emitted at the first opening
17374         brace of the function. If the function has no body, use the
17375         location of the function's name. Override currently defined method
17376         name with the matching WFL so we can point redefinition errors
17377         using the location where the function's name was declared.
17378         (check_abstract_method_header): Interprets DECL_NAME as an
17379         identifier or as a WFL, accordingly.
17380         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
17381         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
17382         location and name information out of it and reinstall DECL_NAME to
17383         its original identifier node value.
17384         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
17385         function's source code).
17386         (read_import_dir): Test the value returned by find_class and issue
17387         a fatal accordingly.
17388         (declare_local_variables): Push a new block for the scope of the
17389         new variable(s) if code has been already generated at that nesting
17390         level. Pinpoint redefinition errors using the variable id
17391         WFLs. Generate initialization code if necessary. If the variable
17392         type is incomplete, register a patch on its decl.
17393         (source_start_java_method): Rewritten. Define a new block for the
17394         function's parameters. Build parameter decl out of function's
17395         arguments and register them for a patch if their types are
17396         incomplete.
17397         (expand_start_java_method): Includes the part of
17398         source_start_java_method that was pushing the parameter decls and
17399         completing the method start code.
17400         (source_end_java_method): Removed call the expand_end_bindings and
17401         poplevel (already taken care of). Reinstall function's arguments
17402         and get function's last line of code before calling
17403         expand_function_end.
17404         (java_method_add_stmt): New comment before the function's
17405         code. Complement the second operand of the current COMPOUND_EXPR
17406         if necessary.
17407         (java_complete_expand_methods): Don't generate debug info on line
17408         zero when expanding a generated constructor.
17409         (java_complete_expand_method): Set start and end line numbers for
17410         a artificially generated constructor to one and manually call
17411         enter_block and exit_block when defining it. For all methods:
17412         expand function's start calling the new expand_start_java_method
17413         and invoke java_complete_tree on the effective method's body, if
17414         any.
17415         (resolve_expression_name): Now use lookup_name_in_blocks to search
17416         local variable decls and print out an error when variables are
17417         undefined.
17418         (patch_method_invocation_stmt): Inserted comment before the
17419         function's code.
17420         (lookup_method_invoke): Chain method's arguments using chainon
17421         with the current arg list as a second argument. Inserted missing
17422         IDENTIFIER_POINTER when reporting an error on methods not found.
17423         (refine_accessible_methods_list): Don't retain constructors.
17424         (patch_arguments): Function removed.
17425         (java_complete_tree): Inserted comment before the function's
17426         code. New case for BLOCKs. Moved the WFL case a bit
17427         further. Complete function's arguments.
17428         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
17429         maybe_absorb_scoping_blocks): New functions.
17430
17431 1998-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17432
17433         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
17434         previously set.
17435         * jcf-parse.c (parse_source_file, java_error_count): New forward
17436         and extern declarations.
17437         (java_parse_abort_on_error): Macro moved.
17438         (jcf_parse_source): fatal called if fopen fails. Now calls
17439         parse_source_file.
17440         (parse_source_file): New parse_only parameter. Reflects the
17441         elimination of the second pass.
17442         (yyparse): parse_source_file called with argument set to 0.
17443         * jcf.h (JCF_ZERO): Sets java_source to zero.
17444         * lex.c (java_init_lex): pass argument is gone. Function modified
17445         to be called once during the analysis of a file.
17446         (java_unget_unicode): Fixed typo in fatal message.
17447         (java_get_line_col): Likewise.
17448         (java_lval): Likewise. String literals no longer built during
17449         second pass.
17450         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
17451         account.
17452         * parse.h (MODIFIER_WFL): New macro.
17453         (parse_check_super, parser_check_super_interface): Now return int.
17454         (parser_chain_incomplete_item, not_builtin_p,
17455         complete_method_decl): Declarations removed.
17456         (build_method_invocation_stmt, build_invoke): Renamed using the
17457         `patch' instead of `build'
17458         (register-incomplete_type, obtain_incomplete_type,
17459         java_complete_tree, java_complete_expand_method,
17460         unresolved_type_p, create_jdep_list): New function declarations.
17461         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
17462         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
17463         (jdep): New typedef on new struct _jdep.
17464         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
17465         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
17466         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
17467         JDEP_RESOLVED_P): New macros.
17468         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
17469         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
17470         JDEP_VARIABLE): New enum values and jdep kinds.
17471         (jdeplist): New typedef on struct _jdeplist.
17472         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
17473         macros.
17474         (CALL_EXPR_PRIMARY): New macro.
17475         (struct parser_ctxt): Fields java_pass, current_method_decl,
17476         method_decl_list deleted. New field jdeplist.
17477         (INCOMPLETE_P): Macro deleted.
17478         * parse.y (single_type_import_declaration:): Removed pass switch.
17479         (type_import_on_demand_declaration): Likewise.
17480         (field_declaration:): Removed pass switch on all sub rules.
17481         (class_declaration:): Call the complete_class_decl removed on
17482         class_body rules.
17483         (method_declaration:): Removed second pass switch. No longer chain
17484         methods decl when method_header reduced.
17485         (method_header:): Sub rules no longer depend on pass switch.
17486         (method_declarator:): Likewise.
17487         (method_body:): Likewise.
17488         (abstract_method_declaration:): Likewise.
17489         (block_statement:): Likewise.
17490         (local_variable_declaration:): Likewise.
17491         (argument_list:): Likewise.
17492         (method_invocation:): Likewise. Call to build_method_invocation_stmt
17493         removed. Partial CLASS_EXPR tree node built instead.
17494         (postfix_expression:): Removed pass switch on all sub rules.
17495         (java_pop_parser_context): Free classd_list content.
17496         (yyerror): Call obstrack_grow0 to finalize error message.
17497         (check_class_interface_creation): Comment modified to reflect new
17498         returned value meaning. Removed second pass switch. Return 1 if an
17499         error was found, 0 otherwise. Adjust pointer on filename if a
17500         leading path separator was found.
17501         (maybe_create_class_interface_decl): Removed first pass switch
17502         when linking the class decl to the class_list. Install a new
17503         jdep_list for the class.
17504         (add_superinterfaces): List of unresolved interfaces is
17505         gone. Unresolved interfaces are directly added to the current
17506         dependencies list.
17507         (create_interface): Second pass shortcut removed.
17508         ctpx->modifier_ctx access through MODIFIER_WFL.
17509         (create_class): Second pass shortcut removed. Call to
17510         register_incomplete_type replaces the call to
17511         parser_chain_incomplete_item.
17512         (complete_class_decl): Function removed.
17513         (duplicate_declaration_error): New way of retrieving redeclared
17514         item type.
17515         (register_fields): Call to lookup_modifier_cl replaced by
17516         MODIFIER_WFL. New way of handling unresolved type, using
17517         unresolved_type_p and obtain_incomplete_type.
17518         register_incomplete_type replaces call to parser_chain_incomplete_item.
17519         (patch_stage): New static global variable.
17520         (method_header): New way of handling unresolved type, using
17521         unresolved_type_p and obtain_incomplete_type. patch_stage used to
17522         indicates that the method decl needs to be patched.
17523         (check_abstract_method_header): Call to lookup_modifier_cl
17524         replaced by MODIFIER_WFL.
17525         (method_declarator): Incomplete argument type are registered
17526         calling register_incomplete_type. Patch on the declared method is
17527         issued in that case.
17528         (unresolved_type_p): New function.
17529         (parser_check_super_interface): New comment to reflect function's
17530         modified returned type (int). Function and has a new argument
17531         this_wfl. Call to parse_error_context uses this_wfl instead of
17532         relying on lookup_cl.
17533         (parser_check_super): Comment reflects function's new returned
17534         type (int). Function returns nonzero value on error.
17535         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
17536         register_incomplete_type, jdep_resolve_class): New functions to
17537         handle incomplete types in declarations.
17538         (java_complete_class): Rewritten to work with the new incomplete
17539         type handling scheme.
17540         (complete_class_report_errors): Likewise.
17541         (complete_method_decl): Removed: it jobs is now handled by
17542         java_complete_class.
17543         (do_resolve_class): Class loaded in not already loaded and not
17544         found in Java source code.
17545         (java_check_regular_methods, java_check_abstract_methods): Don't
17546         call complete_method_decl anymore.
17547         (lookup_modifier_cl, not_builtin_p): Functions deleted.
17548         (read_import_dir): Got rid of the pass number dependency.
17549         (declare_local_variables): New handling of unresolved types (patch
17550         issued).
17551         (source_start_java_method): New parameter level. Function called
17552         with level set to 1 when argument types are potentially
17553         unresolved.  Called to complete the job with level set to 2 once
17554         types are complete.
17555         (source_end_java_method): Call to permanent_allocation
17556         removed. Waiting to be replaced by a more suitable obstack
17557         management.
17558         (java_complete_expand_methods, java_complete_expand_method,
17559         java_expand_finals): New functions.
17560         (build_method_invocation_stmt): Renamed
17561         patch_method_invocation_stmt. Extracts function call expression
17562         (wfl) and arguments (args) from CALL_EXPR tree operands.
17563         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
17564         call. Patch the function and argument operand of the CALL_EXPR
17565         tree argument.
17566         (patch_argument, java_complete_tree): New functions.
17567
17568 1998-04-20  Per Bothner  <bothner@cygnus.com>
17569
17570         Recover from missing fields and methods (i.e. error instead of fatal).
17571         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
17572         * expr.c (expand_invoke):  Recover from missing method.
17573         (expand_java_field_op):  Recover from missing field.
17574         Inline references to java.lang.{Integer,Char,...}.TYPE.
17575         * typeck.c (get_type_from_signature), java-tree.h:  New function.
17576         * class.c (add_method):  Use get_type_from_signature.
17577         (build_class_ref):  Handle a class that was not found.
17578         * typeck.c (convert):  Handle conversion to pointers (for convenience).
17579         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
17580         instead of lookup_field to handle missing fields.
17581
17582         * jcf-parse.c (process_zip_dir):  Set java_source.
17583
17584 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
17585
17586         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
17587
17588 1998-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17589
17590         * jcf-parse.c (load_class): Don't change input_filename before
17591         calling jcf_parse_source (but still do it before calling
17592         jcf_parse).
17593         (jcf_parse_source): Assign input_filename after having saved the
17594         parser context.
17595         * lex.c (java_init_lex): Chain a WFL node to the import on demand
17596         list. ctxp->modifier_ctx zeroed according to its new
17597         definition. ctxp->filename initialized. Removed
17598         JAVA_MODIFIER_CTX_UNMARK.
17599         (java_unget_unicode): Update the character based column position.
17600         (java_allocate_new_line): ref_count not used anymore. Always free
17601         ctxp->p_line. Initialize c_line->char_col to 0.
17602         (java_get_unicode): Update the character based column position.
17603         (java_lex): Use ctxp->elc to store current position in source
17604         file, at the beginning of the parsed token. Set modifier_ctx entry
17605         corresponding to the parse modifier to a WFL node. Return a WFL
17606         node when an identifier is parsed.
17607         (java_lex_error): Now uses ctxp->elc to store current position in
17608         source.
17609         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
17610         * lex.h (build_wfl_node): New function definitions.
17611         (struct java_line): ref_count and next fields are gone. New field
17612         char_col.
17613         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
17614         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
17615         (JAVA_COLUMN_DELTA): New macro.
17616         (java_lc): New typedef on new struct _java_lc.
17617         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
17618         (parse_error_context, parse_warning_context): Changed prototypes.
17619         (java_get_line_col): Added as an available global function.
17620         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
17621         (IC_DECL): Replaced by macro IC_TYPE
17622         (DEPEND_WFL): New macro.
17623         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
17624         wrong modifier.
17625         (exit_java_complete_class): Removed a commented out statement.
17626         (struct parser_ctxt): Added comments on fields. modifier_ctx is
17627         now an array of tree nodes. Deleted fields line_list and
17628         e_line. New field elc, to replace e_line.
17629         * parse.y (array_type:): Build WFL node.
17630         (qualified_name:): Build a single WFL node out of two. Retain
17631         the location information of the first node in the resulting node.
17632         (package_declaration:): Use package name as a WFL node
17633         (single_type_import_declaration:): Use imported name as a WFL node.
17634         (type_import_on_demand_declaration:): Use root of the imported
17635         packages as a WFL node.
17636         (field_declaration:): Removed unused local variable cl.
17637         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
17638         (yyerror): New static elc. Removed static error_line, error_pos.
17639         New local code_from_source. Save ctxp->elc into elc at the first
17640         pass. Call java_get_line_col to get a string of the line where
17641         the error occurred.
17642         (debug_line): Removed static function.
17643         (parse_error_context, parse_warning_context): Parameter cl is now
17644         a WFL node. Use its value to initialize ctxp->elc.
17645         (redefinition_error): Parameter cl is now a WFL node.
17646         (parse_add_interface): New parameter wfl. No longer call
17647         lookup_cl, use wfl instead.
17648         (check_class_interface_creation): Parameter cl is now a WFL node.
17649         (maybe_create_class_interface_decl): Likewise.
17650         (add_superinterfaces): New function.
17651         (create_interface): Removed local cl, node, super_decl,
17652         super_decl_type.  Function now uses id as a WFL node. Better
17653         warning/error report on obsolete or forbidden mix of
17654         modifiers. Now calls add_superinterfaces to register interfaces.
17655         (create_class): Removed local cl, node. Local variable id is used
17656         as a WFL node. Better error report on forbidden modifier
17657         mix. Uses add_superinterfaces to register interfaces.
17658         (find_field): Argument cl is now a WFL node. Now store the WFL
17659         node of a fields that needs to be checked for their
17660         initialization.
17661         (method_header): Local variable node non longer used. Local
17662         variable id replaces cl.
17663         (check_modifiers_consistency): Local variable cl is now a WFL
17664         node.
17665         (method_declarator): Local variable cl replaced by parameter id.
17666         (parser_qualified_name): Now uses parameter name as a WFL node.
17667         (parser_check_super_interface): New parameter wfl, for achieve
17668         greater accuracy during error reports.
17669         (parser_chain_incomplete_item): New parameter named location. Used,
17670         along the decl, to construct the incomplete item node.
17671         (java_complete_class): resolve_class now uses WFL node extracted
17672         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
17673         where appropriate.
17674         (complete_method_decl): Unresolved function's argument types are WFL.
17675         (resolve_class): Parameter cl is now a WFL node.
17676         (resolve_and_layout): Likewise.
17677         (do_resolve_class): Likewise. Try first to use cl and then do the
17678         lookup on the decl when calling check_pkg_class_access.
17679         (complete_class_report_errors): Use IC_TYPE in place of
17680         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
17681         instead of doing a lookup over the decl.
17682         (java_check_final): Use WFL info from field tree list.
17683         (lookup_cl): Rewritten and returns a statically defined WFL node.
17684         (lookup_modifier_cl): Now uses information from WFL nodes.
17685         (process_imports): Likewise.
17686         (read_import_dir): name and cl arguments replaced by a single WFL
17687         node. Function modified accordingly.
17688         (find_in_imports_on_demand): Now uses WFL node.
17689         (check_pkg_class_access): cl argument is now a WFL node.
17690         (declare_local_variables): Fixed to use WFL nodes.
17691         (resolve_expression_name): Likewise.
17692         (build_method_invocation_stmt): name_combo argument renamed
17693         wfl. Function modified to use WFL nodes.
17694         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
17695         (lookup_method_invoke): cl is now a WFL node. Added missing
17696         IDENTIFIER_POINTER to class type decl name.
17697
17698 1998-04-14  Dave Brolley  <brolley@cygnus.com>
17699
17700         * lang.c (init_parse): Now returns char* containing the filename.
17701
17702 1998-04-10  Per Bothner  <bothner@cygnus.com>
17703
17704         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
17705
17706         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
17707         * class.c (make_class_data):  If flag_assume_compiled, initial class
17708         state is CSTATE_PREPARED; make superclass and interfaces direct
17709         references, rather than constant pool indexes.
17710
17711 1998-04-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17712
17713         * parser.y: Include flags.h. Removed debug variable pl.
17714         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
17715         (block:): Likewise.
17716         (labeled_statement_nsi:): Generate debug info when reducing
17717         expression_statement:.
17718         (check_pkg_class_access): get_access_flags_from_decl invocation
17719         fixed for new CLASS_* flags location.
17720         (source_end_java_method): Save/restore parser context when
17721         entering/leaving this routine. Restore lineno to its right value
17722         before calling expand_end_bindings.
17723         (build_method_invocation_stmt): build_invoke called with the
17724         current line information.
17725         (build_invoke): New argument cl. Wrap the function call around a
17726         wfl node.
17727         (refine_accessible_methods_list): Changed comment, removed
17728         unnecessary code.
17729         * parse.h: Fixed typo in comments.
17730         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
17731         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
17732         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
17733         parser_ccb_indent.
17734         * lex.c (java_lex): Record the last closing curly bracket of a
17735         function.
17736         * jcf-parse.c (jcf_parse_source): Now calls
17737         java_check_methods. Clarified comment, fixed typo.
17738
17739 1998-04-09  Dave Brolley  <brolley@cygnus.com>
17740
17741         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
17742         (finish_parse): Expose for non USE_CPPLIB builds.
17743
17744 1998-04-08  Jeffrey A Law  (law@cygnus.com)
17745
17746         * lang.c (lang_print_xnode): New function.
17747
17748 1998-04-03  Per Bothner  <bothner@cygnus.com>
17749
17750         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
17751         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
17752         used to build a class's dispatch table.
17753         (make_class_data):  Generate dispatch table if flag_assume_compiled.
17754         Set dtable of class object to address of class_dtable_decl.
17755
17756         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
17757         be volatile and have side effects - generates better code.
17758
17759         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
17760         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
17761
17762         * expr.c (expand_invoke):  If class is final, method is
17763         effectively final, so can call it directly.
17764
17765         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
17766
17767         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
17768
17769 1998-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17770
17771         * parse.y (build_method_invocation_stmt): Removed extra argument
17772         to build_invoke.
17773
17774 1998-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17775
17776         * expr.c (dtable_indent): Now static global.
17777         (expand_invoke): Now call invoke_build_dtable and
17778         build_invokevirtual.
17779         (invoke_build_dtable, build_invokevirtual): New functions.
17780         * jcf-io.c (find_class): Defer issuing a warning by setting
17781         jcf->outofsynch to 1.
17782         * jcf-parse.c (jcf_out_of_synch): New function.
17783         (load_class): Test this_jcf.outofsynch flag and call
17784         jcf_out_of_synch accordingly.
17785         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
17786         comment indentation.
17787         * lex.c (java_get_unicode): Fixed code indentation.
17788         (java_lex): Create string literal. Fixed typo. Removed several
17789         premature obstack_free.
17790         * parse.h: New enums for name resolution and invocation mode.
17791         (struct qualification): New data structure.
17792         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
17793         (do_resolve_class, build_method_invocation_stmt,
17794         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
17795         debug_line, identical_subpath_p, invocation_mode,
17796         refine_accessible_methods_list, build_invoke,
17797         lookup_method_invoke): New functions declared.
17798         (build_invokevirtual, invoke_build_dtable, match_java_method,
17799         build_field_ref, jcf_out_of_synch): New references to external
17800         functions.
17801         (struct parse_ctxt): Removed artificial_constructor field.
17802         * parse.y: (array_type:): Type defined for this rule.
17803         (class_type:): Installed default rule for interface_type:.
17804         (array_type:): Now build Java array type.
17805         (qualified_name:): Now use obstack_grow0.
17806         (method_declaration:): Skip the artificial constructor added to
17807         the list, if any.
17808         (abstract_method_declaration:): Execute the code only during pass 1.
17809         (block:): Installed default rule in block_statements:.
17810         (block_statement:): Add the statement to the method during pass 2.
17811         (statement_expression): Installed default rule for
17812         method_invocation:.
17813         (argument_list:): Added code to build the argument list.
17814         (method_invocation:): Added call to create the method invocation
17815         node.
17816         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
17817         (debug_line): New function for debug.
17818         (complete_class_decl): No longer do something during pass 1.
17819         (method_header): Use BUILD_PTR_FROM_NAME.
17820         (parser_qualified_classname): Use obstack_grow0. Removed bogus
17821         obstack_free.
17822         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
17823         function's main comment.
17824         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
17825         classes.
17826         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
17827         (resolve_class): Now works with arrays.
17828         (do_resolve_class, resolve_and_layout): New functions.
17829         (java_check_regular_methods): Reverse method list before and after
17830         having processed it. No longer set ctxp->artificial_constructor.
17831         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
17832         accordingly. Fixed typo in issued error message. Now use
17833         obstack_grow0.
17834         (find_in_imports_on_demand): Now use obstack_grow0.
17835         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
17836         (source_end_java_method): Call expand_expr_stmt instead of
17837         expand_expr. Calls it before calling expand_function_end.
17838         (java_method_add_stmt): Do nothing if errors were found during
17839         parsing.
17840         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
17841         (build_method_invocation_stmt, build_invoke, invocation_mode,
17842         lookup_method_invoke, refine_accessible_methods_list,
17843         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
17844         New functions.
17845         * typeck.c (build_java_signature): Properly end method signature
17846         if return type skipped.
17847         (match_java_method): New function.
17848
17849 1998-03-16  Per Bothner  <bothner@cygnus.com>
17850
17851         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
17852
17853 1998-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17854
17855         * expr.c (build_invoke_non_interface): New function.
17856         (methods_ident, ncode_ident): Now static globals.
17857         (expand_invoke): Use build_invoke_non_interface.
17858         * java-tree.h (struct lang_decl): New field function_decl_body.
17859         (DECL_FUNCTION_BODY): New macro.
17860         * jcf-parse.c (jcf_parse_source): Deeper check before setting
17861         CLASS_FROM_SOURCE_P.
17862         (parse_source_file): Fixed typos. Call java_layout_parsed_class
17863         before starting pass 2. Call to java_generate_parsed_class replaced
17864         by java_register_parsed_class.
17865         * lex.c: Fixed typo in header. Some line width related formating.
17866         * lex.h: Some line width related formating.
17867         * parse.h (source_end_java_method, resolve_expression_name,
17868         complete_class_decl, maybe_create_class_interface_decl,
17869         check_class_interface_creation): New static function declarations.
17870         (java_layout_parsed_class, java_method_add_stmt): New function
17871         declarations.
17872         (struct parser_ctxt): Field mark_class_generate removed. New
17873         fields class_list and artificial_constructor.
17874         * parse.y: Fixed typo in header.
17875         (class_declaration:): Call complete_class_decl when class body
17876         parsed.
17877         (method_declaration:): Call source_end_java_method in pass 2 when
17878         the method body is defined.
17879         (postfix_expression:): Do expression name resolution on sub-rule
17880         name during pass 2.
17881         (create_class, create_interface): Merged common pieces.
17882         (check_class_interface_creation, maybe_create_class_interface_decl):
17883         New functions.
17884         (complete_class_decl): New function.
17885         (register_fields): Fixed line width related typo.
17886         (method_header): Correctly skip first argument when fixing
17887         argument line. Changed the loop.
17888         (java_check_circular_reference): Now use ctxp->class_list.
17889         (java_complete_class): Removed start/stop marking.
17890         (java_check_regular_methods): Now takes a class decl as an
17891         argument.  Add default constructor if none were encountered.
17892         (java_check_methods): Now use ctxp->class_list. Changed call to
17893         java_check_regular_methods.
17894         (source_start_java_method): Set DECL_ARG_TYPE for each function
17895         arguments.
17896         (source_end_java_method, java_method_add_stmt): New functions.
17897         (java_generate_parsed_class): No longer exists.
17898         (java_layout_parsed_class, java_register_parsed_class): New functions.
17899         (resolve_expression_name): New function.
17900
17901 1998-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17902
17903         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
17904         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
17905         until pass initializations are done. Call read_import_dir with
17906         pass set to 0.
17907         * parse.h: (lookup_modifier_cl): New function declared.
17908         (INTERFACE_FIELD_MODIFIERS): New macro.
17909         (OBSOLETE_MODIFIER_WARNING): New macro.
17910         * parse.y: (register_fields): Class type and current field name in
17911         local variables. Check modifier(s) if adding field(s) to an interface.
17912         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
17913         and report errors using the faulty modifier line context.
17914         (lookup_modifier_cl): New function.
17915         (read_import_dir): Detect and report default import processing
17916         failure.
17917
17918 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
17919
17920         Add a pair of -fassume-compiled/-fno-assume-compiled options.
17921         * class.c (is_compiled_class): Return 1 after making sure it
17922         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
17923         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
17924         * java-tree.h (flag_assume_compiled): Add decl.
17925         * lang.c (lang_f_options): Add the flag.
17926         (flag_assume_compiled): Add decl, default to 0.
17927
17928 1998-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17929
17930         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
17931         (is_compiled_class): Likewise.
17932         (layout_class): Likewise.
17933         (layout_class): Detect and lay out classes defined in source code.
17934         (interface_of_p, add_interface_do, may_add_interface): New
17935         function.
17936         (add_interface): Now use add_interface_do.
17937         (add_method_1): New function.
17938         (add_method): Now use add_method_1.
17939         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
17940         (complete_start_java_method): New function.
17941         (start_java_mehod): Now call complete_start_java_method.
17942         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
17943         (expand_invoke): Likewise and fixed typo.
17944         *gjava.c: (print_super_field): Use new argument to find_class
17945         DO_CLASS_FILE.
17946         (main): Likewise.
17947         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
17948         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
17949         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
17950         IDENTIFIER_NODE.
17951         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
17952         (add_method_1, push_class): New prototypes.
17953         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
17954         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
17955         directory where the class was found.
17956         (find_class): New argument DO_CLASS_FILE. Function find_class
17957         modified accordingly.
17958         *jcf-parse.c: (fix_class_path): New function.
17959         (load_class): Use new VERBOSE argument. load_class now finds and
17960         loads/parses .class/.java files. Save read_state of current_jcf
17961         if necessary.
17962         (java_parser_abort_on_error): New macro.
17963         (jcf_parse_source, parse_source_file): New function.
17964         (jcf_parse): Fixed typo.
17965         (yyparse): Call parse_source_file () only.
17966         (process_zip_dir): Fixed typo, fix zdir->filename_length when
17967         writing the real class name back in the zip directory entry.
17968         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
17969         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
17970         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
17971         (find_class): Prototype fixed.
17972         *lex.c: Added 1998 time stamp.
17973         Removed all static global variables, moved into the parser
17974         context data structure.. Now include unistd.h if SEEK_SET not
17975         defined.
17976         (java_init_lex): Rewritten.
17977         (java_sneak_unicode): Modified current unicode access in current line.
17978         (java_unget_unicode): Likewise.
17979         (java_allocate_new_line): New allocation management.
17980         (java_read_char): Modified access and storage of unget_utf8_value.
17981         New way of processing current unicode.
17982         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
17983         (java_get_unicode): Now use the parser context.
17984         (java_lineterminator): Likewise.
17985         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
17986         of the reentrant parser implementation. Function now use the
17987         parser context data structure and java_lval. Fixed production of
17988         the float and double constant "out of range" error message. Fixed
17989         obstack use. Return integer value when hitting a modifier. Now
17990         return type for TRUE, FALSE and other predefined types. Return
17991         identifier as a TREE_LIST list containing the current line context
17992         as the TREE_VALUE sub-node.
17993         (java_unicode_2_utf8): Fixed typo in declaration.
17994         (java_lex_error): Now use the parser context data structure.
17995         *lex.h: Added 1998 time stamp.
17996         (struct java_line): New fields ref_count and next.
17997         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
17998         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
17999         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
18000         *parse.h: Added 1998 time stamp.
18001         (java_parse_source_file): Renamed from parse_source_file.
18002         (YYERROR_NOW, YYNOT_TWICE): Fixed.
18003         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
18004         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
18005         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
18006         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
18007         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
18008         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
18009         (struct parser_ctxt): New data structure to keep the parser context.
18010         *parse.y: Added 1998 time stamp, got rid of static global variables.
18011         (java_error_count, ctxp): New global variables.
18012         (%union): New value field.
18013         (numeric_type, integral_type): Rules removed.
18014         (primitive_type): Rule defined to handle integral, float, double and
18015         boolean types.
18016         (qualified_name, package_declaration,
18017         single_type_import_declaration, type_import_on_demand_declaration,
18018         modifiers, class_declaration, super, interfaces,
18019         interface_type_list, class_body, field_declaration,
18020         field_declaration, variable_declarators, variable_declarator,
18021         variable_declarator_id, method_declaration, method_header,
18022         formal_parameter_list, formal_parameter, method_body, block,
18023         static, interface_declaration, extends_interfaces,
18024         abstract_method_declaration, local_variable_declarators): Rules now
18025         define actions.
18026         (force_error, do_warning): New global statics.
18027         (push_parser_context, parser_context_save_global,
18028         parser_context_restore_global, pop_parser_context): New functions.
18029         (yyerror): Now uses the global parser context. Fixed use of obstack.
18030         (parse_error, parse_error_context, parse_warning_context,
18031         java_accstring_lookup, redefinition_error, check_modifiers,
18032         parser_add_interface, create_interface, create_class, find_field,
18033         duplicate_declaration_error, register_fields, method_header,
18034         check_modifiers_consistency, check_abstract_method_header,
18035         method_declarator, parser_qualified_classname,
18036         parser_check_super_interface, parser_check_super,
18037         parser_chain_incomplete_item, java_check_circular_reference,
18038         layout_class_from_source, java_complete_class,
18039         complete_method_decl, resolve_class, complete_class_report_errors,
18040         java_check_final, check_method_redefinition,
18041         java_check_regular_methods, java_check_abstract_methods,
18042         java_check_methods, lookup_java_interface_method2,
18043         lookup_java_method2, lookup_cl, find_name_in_single_imports,
18044         process_imports, find_in_imports, read_import_entry,
18045         read_import_dir, find_in_imports_on_demand,
18046         check_pkg_class_access, not_builtin_p, declare_local_variables,
18047         source_start_java_method, java_generate_parsed_class): New
18048         functions.
18049         *typeck.c: (signature_include_return): New global variable.
18050         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
18051         to add the function returned type in the signature.
18052
18053 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
18054
18055         * jcf-io.c (open_in_zip): Use strncmp and LEN.
18056
18057 1998-01-29  Dave Brolley  <brolley@cygnus.com>
18058
18059         * Make-lang.in (java.info): Added.
18060         (java.install-info): Added
18061
18062 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
18063
18064         * Makefile.in (clean): Also remove java/parse.c.
18065
18066 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
18067
18068         Add a pair of -fbounds-check/-fno-bounds-check options.
18069         * lang.c (lang_decode_option): Add code to grok arguments.
18070         (flag_bounds_check): Add decl.
18071         (lang_f_options): New array w/ the option in it.
18072         * java-tree.h (flag_bounds_check): Add decl.
18073         * lang-options.h: New file.
18074         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
18075         of a static macro value.
18076         (JAVA_ARRAY_EXCEPTION): Delete macro.
18077
18078 1998-01-23  Per Bothner  <bothner@cygnus.com>
18079
18080         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
18081         * expr.c (build_anewarray):  Add missing promote_type.
18082
18083 1998-01-22  Per Bothner  <bothner@cygnus.com>
18084
18085         Add array types with known length to optimize bounds checking.
18086         * typeck.c (build_java_array_type):  Take length parameter.
18087         (java_array_type_length, build_prim_array_type):  New functions.
18088         * java-tree.h:  Update for new functions.
18089         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
18090         * class.c:  Use build_prim_array_type.
18091         * expr.c (can_widen_reference_to):  Handle known-length array types.
18092         (verify_jvm_instructions):  Keep track of integer push instructions
18093         followed by newarray/anewarray, so we can build known-length arrays.
18094         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
18095         (java_array_data_offset):  New function.
18096         (build_java_array_length_access):  New function.  Optimize if constant.
18097         (build_java_arrayaccess):  Constant fold bounds check.
18098         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
18099         (build_newarray, build_anewarray):  New functions.
18100         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
18101         * verify.c (merge_types):  Handle known-lengh array types.
18102
18103 1998-01-19  Per Bothner  <bothner@cygnus.com>
18104
18105         * expr.c (expand_byte_code):  Fix performace bug, which caused
18106         searching linenumber_table to be linear rather than constant.
18107
18108 1997-12-12  Per Bothner  <bothner@cygnus.com>
18109
18110         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
18111
18112         * decl.c, java-tree.h (soft_fmod_node):  New global.
18113         * decl.c (init_decl_processing):  Define __builtin_fmod.
18114         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
18115         using __builtin_fmod.
18116
18117 1997-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18118
18119         * keyword.h: New file, output of keyword.gperf as processed by
18120         gperf.
18121         * lex.c (java_lex_init): Initialize java_error_flag.
18122         * parse.c (YYERROR_NOW): Uses java_error_flag.
18123         * parse.y: New static java_error_flag. Useless definition of
18124         buffer_error gone.
18125         * parse.y (java_error): Portable error recovery using
18126         java_error_flag (not yet completely tuned).
18127
18128 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
18129
18130         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
18131
18132 1997-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18133
18134         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
18135         (parse.c, lex.c, keyword.h): New rules for Java source code
18136         front-end.
18137         * parse.c: Renamed into jcf-parse.c.
18138         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
18139         * keyword.gperf: New file, Java keywords.
18140         * parse.y: New file, Java language grammar.
18141         * parse.h: New file, Java language grammar definitions.
18142         * lex.c: New file, Java language lexer.
18143         * lex.h: New file, Java language lexer definitions.
18144
18145 1997-12-03  Per Bothner  <bothner@cygnus.com>
18146
18147         * decl.c (clinit_identifier_node), java-tree.h:  New global.
18148         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
18149         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
18150         * expr.c (expand_java_field_op):  Check for invalid assignment
18151         to final field.
18152
18153         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
18154
18155 1997-10-27  Per Bothner  <bothner@cygnus.com>
18156
18157         * verify.c (verify_jvm_instructions):  When processing a handler,
18158         attempt to set the current_subr to the right value.
18159         (More complicated code combines Sep 17 and Oct 22 versions.)
18160
18161 1997-10-24  Per Bothner  <bothner@cygnus.com>
18162
18163         * class.c (push_class):  Figure out (guess) name of source file.
18164         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
18165         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
18166         (parse_class_file):  Change return type from int to void.
18167         Call debug_start_source_file/debug_end_source_file.
18168
18169         * expr.c (build_java_binop):  Fix masking 2nd operand.
18170         * decl.c (init_decl_processing):  Set sizetype first.
18171
18172 1997-10-22  Per Bothner  <bothner@cygnus.com>
18173
18174         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
18175         (Revert Sep 17 change.)
18176
18177 1997-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18178
18179         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
18180         .class extension in their name and fix thing so we don't process
18181         them parse_zip_file_entries().
18182         (parse_zip_file_entries): Cleaned unused local variables.
18183
18184 1997-10-20  Per Bothner  <bothner@cygnus.com>
18185
18186         * expr.c (can_widen_reference_to):  Allows equal array element types.
18187         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
18188         * jcf-dump.c (RET):  Get (and print) index.
18189
18190         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
18191         Promote element type to POINTER_TYPE.
18192
18193 1997-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18194
18195         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
18196         find_in_current_zip, jcf_figure_file_type): Moved from
18197         jcf-reader.c to parse.c.
18198         * zextract.c: (read_zip_archive): takes file_comment_length possible
18199         field into account.
18200
18201 1997-10-20  Per Bothner  <bothner@cygnus.com>
18202
18203         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
18204
18205         * verify.c (merge_types):  Handle array types even better ...
18206
18207 1997-10-17  Per Bothner  <bothner@cygnus.com>
18208
18209         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
18210
18211         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
18212         * class.c (make_class_data):  Don't build fields_decl if no fields.
18213         When building fields_decl, skip if DECL_ARTIFICIAL.
18214
18215         * expr.c (java_stack_swap):  Update stack_type_map.
18216         * verify.c (merge_types):  Handle array types better.
18217
18218 1997-10-15  Per Bothner  <bothner@cygnus.com>
18219
18220         * class.c (add_field):  Don't promote short integral fields to
18221         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
18222         * expr.c (push_value):  Promote and convert short integral values.
18223
18224         * decl.c, java-tree.h (integer_two_node):  New constant node.
18225         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
18226
18227 1997-10-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18228
18229         * class.c (append_gpp_mangled_type): Use function argument
18230         unpromoted type to generate mangled name.
18231
18232 1997-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18233
18234         * constants.c (build_constant_data_ref): Now uses current_class
18235         instead of main_class.
18236         (build_constants_constructor): Now uses current_class instead of
18237         main_class.
18238         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
18239         of the global variable SeepZipFiles done here.
18240         * zextract.c (read_zip_archive): extra_field optional field taken
18241         into account while computing the position of the class file in the
18242         archive.
18243         * verify.c (verify_jvm_instructions): Use current_jcf to search
18244         the constant pool.
18245         * parse.c (load_class): First search for the class to load in the
18246         current zip file. Saves current_jcf (restored before returning
18247         from that function). Don't call JCF_FINISH in the class was found
18248         in the current ZIP file.
18249         (jcf_parse): If the class was found in the current ZIP file, save
18250         its tree_constant_pool (for later reuse).
18251         (parse_class_file): New function. Process each method defined in
18252         the current class and record the class as to be later registered.
18253         (yyparse): Rewritten. Figure the type of the current file and switch
18254         accordingly.
18255         * lang.c: New global variable current_jcf.
18256         (lang_init): Removed compiling_from_source test (done later, in
18257         yyparse). Removed call the jcf_parse ().
18258         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
18259         (typedef struct JCF): New fields seen_in_zip (to mark a class found
18260         in the current ZIP file) and zip_offset (offset to the class data in
18261         the current zip file).
18262         * jcf-reader.c: zipfile.h included.
18263         localToFile: New ZipFileCache static global variable
18264         (parse_zip_file_entries): New function. Browse the current ZIP
18265         file directory and process each class found.
18266         (process_zip_dir): New function. Register each class found in the
18267         ZIP file directory. The class aren't parsed but a valid JCF is
18268         link to each of them.
18269         (find_in_current_zip): New function. Search for a class in the
18270         current ZIP file directory. If found, prepare the class so that it
18271         can be loaded.
18272         (jcf_figure_file_type): New function. Examine the file structure
18273         to figure a class file, a ZIP file. If none of these categories are
18274         matched, a source file is assumed.
18275         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
18276         SeenZipFile: New global variable.
18277         (open_in_zip): Use zipmember's length to accelerate the search for
18278         a member. If zipmember was NULL and zip file successfully read,
18279         return 0.
18280         * java-tree.h: New global variable current_jcf declared.  Added
18281         declaration for current_constant_pool_tags, current_constant_pool_data,
18282         current_constant_pool_length, current_constant_pool_data_ref.
18283         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
18284         store the JCF of classes seen in a zip file) and tree *constant_pool
18285         (to save a loaded class constant pool). current_class declared here.
18286         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
18287         retrieve method_ref_constant.
18288         (PUSHC): java_push_constant_from_pool now uses current_jcf.
18289         (OBJECT): get_class_constant now uses current_jcf.
18290         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
18291         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
18292         (expand_invoke): Now uses current_class instead of main_class
18293         (build_class_init): Now uses current_class instead of main_class
18294         * class.c: New static global variable registered_class.
18295         (register_class): New function.
18296         (emit_register_class): Modified to use registered_class instead of
18297         main_class
18298         (is_compiled_class): Now take into account class seen in the archive.
18299
18300 1997-10-06  Per Bothner  <bothner@cygnus.com>
18301
18302         * except.h:  Renamed to: java-except.h.
18303         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
18304         * except.c:  Add semi-working (commented out) implementation.
18305
18306         * expr.c (expand_iinc):  Add needed flush_quick_stack.
18307         * parse.c (set_source_filename):  New function.
18308         (give_name_to_class):  Set input_filename from package.classname.java.
18309
18310         * jcf-io.c (find_class):  Don't look first in ".".
18311
18312 1997-10-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18313
18314         * zextract.c (read_zip_archive): Now takes into account the
18315         extra_field field.
18316         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
18317
18318 1997-09-20  Per Bothner  <bothner@cygnus.com>
18319
18320         * constants.c, java-tree.h (build_internal_class_name):  New function.
18321         (alloc_class_constant):  Re-implement using build_internal_class_name.
18322         * class.c (make_class_data):  Likewise.
18323         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
18324
18325 1997-09-17  Per Bothner  <bothner@cygnus.com>
18326
18327         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
18328         to NULL before pushing an exception handler target.
18329
18330         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
18331         (java_stack_swap, java_stack_dup):  Re-write to be safe from
18332         clobbering registers.
18333         (build_class_init):  New function.
18334
18335 1997-09-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18336
18337         * typeck.c (build_java_array_type): Temporary use
18338         permanent_obstack to create the array 'length' field.
18339         * expr.c (lookup_label): Temporay use permanent_obstack to create
18340         label if not found.
18341         * class.c (push_super_field): Tempory use permanent_obstack.
18342
18343 1997-09-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18344
18345         * typeck.c (type_for_mode): Now handles double_type_node and
18346         float_type_node.
18347         * verify.c (verify_jvm_instructions): The instruction following
18348         the wide bytecode is checked. OPCODE_ret added to the list of
18349         wide.
18350
18351 1997-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18352
18353         * class.c (make_class): Temporary use permanent_obstack. Set the
18354         class CLASS_P field to 1.
18355         (push_class): Temporary use permanent_obstack.
18356         (set_super_info): Temporary use permanent_obstack.
18357         (add_method): Temporary use permanent_obstack, set
18358         METHOD_TRANSIENT().
18359         (add_field): Temporary use permanent_obstack. Sets
18360         FIELD_VOLATILE() and FIELD_TRANSIENT().
18361         (build_class_ref): Temporary use permanent_obstack if the class
18362         isn't compiled.
18363         (build_static_field_ref): Temporary use permanent_obstack when
18364         creating field's rtl.
18365         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
18366         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
18367         and fields. Function finalized, as far as flag handling.
18368         (push_class_static_dummy_field): Temporary use permanent_obstack.
18369         (emit_register_class): Force generation of class registration at
18370         -O3 or deeper.
18371         * decl.c (end_java_method): Call permanent_allocation() before
18372         returning.
18373         * expr.c (can_widen_reference_to): Added comment to interface
18374         handling, fixed typo.
18375         (lookup_field): Now uses CLASS_P() to correct FIXME
18376         (expand_invoke): Verification on public && !static &&
18377         !abstract moved into soft_lookupinterfacemethod (kaffe).
18378         Use Object class dtable if objectref is an array when expanding
18379         invokeinterface.
18380         (java_push_constant_from_pool): Temporary use permanent_obstack
18381         for CONSTANT_string
18382         * parse.c (get_ref_constant): Temporary use permanent_obstack to
18383         create constant references.
18384         (get_constant): Temporary use permanent_obstack to create constant.
18385         (load_class): Temporary use permanent_obstack to load class.
18386         (jcf_parse): Temporary use permanent_obstack to perform class
18387         layout.
18388         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
18389         (build_java_signature): Temporary use permanent_obstack.
18390         * verify.c: (verify_jvm_instruction): removed unnecessary verification
18391         on ACC_SUPER flag.
18392         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
18393         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
18394         (CLASS_P): Defined
18395
18396 1997-09-11  Per Bothner  <bothner@cygnus.com>
18397
18398         * class.c (append_gpp_mangled_type):  Fix typo.
18399         (emit_register_class):  Use main_class to get class object, rather
18400         than looking for no-longer-existing static decl starting with _CL.
18401         * typeck.c (parse_signature_type):  Promote array element type
18402         if it is a RECORD_TYPE.
18403
18404 1997-09-10  Per Bothner  <bothner@cygnus.com>
18405
18406         * class.c (push_class_static_dummy_field):  New function.
18407         (mangle_static_field):  New. Do G++-style mangling of static fields.
18408         (layout_class):  Mandle static fields here, not in add_field.
18409         (build_class_ref):  The class object is now a dummy static field.
18410         * decl.c (find_local_variable):  Look for best, instead of first match.
18411         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
18412         (build_java_athrow):  Don't check here if exception is Throwable.
18413         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
18414         (TYPE_USED):  Removed.  No longer used ...
18415         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
18416         * verify.c (push_pending_label):  New function.
18417         (push_pending_block):  Renamed to check_pending_block.
18418         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
18419         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
18420         re-checking possible handlers) after a store (less wasted work).
18421         Check for null handler (finally) before calling add_handler.
18422         Various changes to (finally?) correctly handle try/finally.
18423
18424 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
18425
18426         * class.c: Include stdio.h.
18427
18428 1997-09-04  Per Bothner  <bothner@cygnus.com>
18429
18430         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
18431         to make sure class is initialized before static/special invoke.
18432
18433         * verify.c (verify_jvm_instructions):  On a store instruction,
18434         call find_local_variable to force pre-allocation of decl and rtx.
18435         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
18436
18437 1997-09-03  Per Bothner  <bothner@cygnus.com>
18438
18439         * class.c (build_class_ref):   Strip off "promoted_" if need be.
18440         (make_field_value): Call build_java_signature when needed.
18441         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
18442         * expr.c (build_java_athrow):  Don't push_value of exception.
18443         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
18444         match specification of [fd]cmp[lg] for NaNs.
18445         (expand_byte_code):  Add support for exception handler ranges.
18446         * except.c:  Add skeleton for EH code-generation.
18447         * verify.c (merge_types):  Treat all promoted integral types as equal.
18448         * constants.c (build_constants_constructor):  To force creation of
18449         current_constant_pool_data_ref, call build_constant_data_ref.
18450
18451         * javaop.def (lload):  Fix typo.
18452         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
18453
18454 1997-09-02  Brendan Kehoe  <brendan@lisa.cygnus.com>
18455
18456         * parse.c: Don't include function.h.
18457
18458 1997-08-27  Per Bothner  <bothner@cygnus.com>
18459
18460         * except.[ch]:  New files.
18461         * Makefile.in (JAVA_OBJS):  Add except.o
18462         * expr.c:  Temporary warning about unimplemented exceptions.
18463         * verify.c:  Verify exception handlers.
18464
18465         * jcf-dump.c (disassemble_method):  Print exception table.
18466
18467 1997-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18468
18469         * expr.c (verify_jvm_instructions): Started a thorough
18470         verification of invoke* bytecodes.
18471         (expand_byte_code): flush quick stack if PC is the target of a
18472         branch.  and undef RET (conflicting with config/i386/i386.h).
18473         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
18474         used.
18475         (expand_invoke): Now handles invokeinterface and do more
18476         verification according to the bytecode.
18477         (lookup_field): Don't try to load the class if processing
18478         dtable_type.
18479         (can_widen_reference_to): Now handles interfaces.
18480         * decl.c (init_decl_processing): New global variable
18481         soft_lookupinterfacemethod_node, declared in java-tree.h.
18482         Call set_super_info on string_type_node.
18483         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
18484         defined.
18485         * class.c (set_super_info): Fills the CLASS_* flags according to
18486         access_flags.
18487         (get_access_flags_from_decl): Handles all class flags.
18488
18489 1997-08-26  Per Bothner  <bothner@cygnus.com>
18490
18491         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
18492         * parse.c (yyparse):  Check for abstract method, and missing code.
18493         * expr.c (expand_byte_code):  Change interface.
18494         * lang.c (put_decl_node):  Print promoted types prettier.
18495         * verify.c (verify_jvm_instruction):  Change interface.
18496         Partial support for scanning exception table.
18497         For load instructions, handle promoted integral types.
18498
18499 1997-08-21  Per Bothner  <bothner@cygnus.com>
18500
18501         * verify.c:  New file, with contents moved from expr.c.
18502         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
18503         * typeck.c (is_array_type_p):  Moved here from expr.c.
18504         * java-tree.h:  Add some now-needed function declarations.
18505         * Makefile.in (JAVA_OBJS): Added verify.o.
18506
18507 1997-08-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18508
18509         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
18510         METHOD_ABSTRACT flag.
18511
18512         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
18513         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
18514         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
18515
18516         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
18517         variables.
18518         (start_java_method): Hook for SYNCHRONIZED methods.
18519
18520         * expr.c (build_java_jsr, build_java_ret): New functions
18521         (JSR,PRE): New macros
18522         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
18523         (verify_jvm_instructions): tableswitch, lookupswitch,
18524         monitorenter, monitorexit, goto_w: verified.
18525         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
18526         (build_java_monitor): New function.
18527         (MONITOR_OPERATION): Modified to call build_java_monitor()
18528         (verify_jvm_instructions): Started a thorough verification of
18529         invoke* bytecodes.
18530
18531 1997-08-19  Per Bothner  <bothner@cygnus.com>
18532
18533         Support verification of jsr/ret subroutines (used for try/finally).
18534         * decl.c (return_address_type_node):  New type node.
18535         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
18536         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
18537         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
18538         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
18539         TYPE_USED):  New macros for special types in type_map.
18540
18541         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
18542         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
18543         BCODE_JUMP_TARGET.
18544         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
18545
18546         * expr.c (can_widen_reference_to):  New function.
18547         (pop_type):  Use it.
18548         (merge_type_state):  Support handling start of subroutine.
18549         (push_pending_block):  Return char* error message, instead of calling
18550         fatal on an error.  Also handle subroutines.
18551         (verify_jvm_instructions):  Handle errors from push_poending_block.
18552         Support jsr and ret instructions.
18553
18554 1997-08-19  Per Bothner  <bothner@cygnus.com>
18555
18556         * jcf-io.c (find_classfile):  Fix thinko.
18557         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
18558
18559 1997-08-12  Jason Merrill  <jason@yorick.cygnus.com>
18560
18561         * Makefile.in (BISON): Remove.
18562
18563 1997-08-07  Per Bothner  <bothner@cygnus.com>
18564
18565         * Makefile.in:  Convert to autoconf.
18566         * config-lang.in (outputs):  Added java/Makefile.
18567
18568         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
18569         Rename cc1java to jc1.
18570
18571         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
18572         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
18573
18574         * class.c (class_depth):  Do load_class if needed.
18575
18576         Mostly better verification.
18577         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
18578         (init_decl_processing):  Change return type of soft_checkcast.
18579         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
18580         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
18581         lang_print_error):  New functions.
18582         (lang_init):  Set global hook print_error_function to lang_print_error.
18583         * expr.c:  In the type_map ptr_type_node is only used for null now.
18584         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
18585         (merge_types):  Dererence pointer to record types before comparing.
18586         (decode_newarray_type, merge_types):  On error just return NULL.
18587         (build_java_binop):  Add preliminary implementation (with warning)
18588         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
18589         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
18590         (expand_compare, expand_java_goto, expand_java_call):  Don't
18591         push_pending_block, since that only makes sense when verifying.
18592         (merge_type_state):  Different return codes.
18593         (push_pending_block):  A block may need to be verified more than once.
18594         (expand_byte_code):  Warn about unused code at code generation time.
18595         (verify_jvm_instruction):  Changed logic, since code may need to be
18596         re-verified if type-state has changed.  Also, better error handling.
18597         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
18598         Improve newarray, anewarray, ?aload, athrow,
18599         * java-tree.h (LABEL_CHANGED):  New macro.
18600
18601 1997-08-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18602
18603         * decl.c (soft_athrow_node): New global variable initialized.
18604         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
18605         * typeck.c (convert): Added support for REAL_TYPE.
18606         (convert_to_char): New function.
18607         (convert): Handle CHAR_TYPE.
18608         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
18609         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
18610         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
18611         promoted type.
18612         (verify_jvm_instructions): Added break a the end of bogus unop: label.
18613         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
18614         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
18615         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
18616         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
18617         to Use The Right Things.
18618         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
18619         compatible with INT. BOOLEAN is made equivalent to BYTE.
18620         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
18621         OPCODE_ifnonnull): Now supported.
18622         (build_java_athrow): New function.
18623
18624 1997-08-04  Per Bothner  <bothner@cygnus.com>
18625
18626         Rename method name <init> to match G++ (and fix mangling).
18627         * class.c (layout_class):  Replace method name of <init> by class name.
18628         (make_method_value):  Do inverse renaming of constructor from <init>.
18629         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
18630         * typeck.c (lookup_java_constructor):  New function.
18631         * expr.c (expand_invoke):  If method_name is <init>, call
18632         lookup_java_constructor to find constructor.
18633
18634         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
18635
18636 1997-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18637
18638         * parse.c (get_class_constant): Modified to handle array "classes"
18639         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
18640         wide type.
18641         (convert): Modified to handle real type.
18642         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
18643         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
18644         variables declared.
18645         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
18646         soft_multianewarray, soft_newarray_node, soft_throw_node): New
18647         global variables initialized.
18648         (find_local_variable): Handles the case of a pointer
18649         (end_java_method): Restore the use of one more scope
18650         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
18651         build_java_array_length_access, expand_java_arrayload,
18652         expand_java_arraystore, expand_java_array_length,
18653         expand_java_multianewarray, expand_java_anewarray,
18654         build_java_check_indexed_type, is_array_type_p,
18655         build_java_throw_out_of_bound_exception): New functions.
18656         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
18657         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
18658         OPCODE_<t>aload): Implemented code for verification.
18659         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
18660         ARRAY_NEW_MULTI): Macro defined.
18661         (CONVERT): Modified to invoke convert().
18662         (case OPCODE_aload2): Fixed index typo from 2 to 1.
18663
18664 1997-07-31  Per Bothner  <bothner@cygnus.com>
18665
18666         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
18667         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
18668         (make_class_data):  Field name needs '/' as package prefix.
18669         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
18670
18671 1997-07-25  Per Bothner  <bothner@cygnus.com>
18672
18673         Implement debug information for local variables.
18674         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
18675         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
18676         DECL_LOCAL_SLOT_CHAIN):  New macros.
18677         (struct lang_decl_var):  New type.
18678         * parse.c (give_name_to_locals):  Move to decl.c.
18679         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
18680         (start_java_method):  Re-write parameter handling.
18681         (pending_local_decls):  New global variable.
18682         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
18683         (find_local_variable):  Accept pc so we can skips decls not in range.
18684         (struct binding_level):  Add end_pc field.
18685         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
18686         (various):  Change so current pc gets passed to find_local_variable.
18687
18688         * decl.c (init_decl_processing):  Re-arrange fields in
18689         class_type_node and and method_type_node to match kaffe 0.9.1.
18690         * class.c (make_method_value, make_class_data):  Update
18691         initializations to match.
18692
18693 1997-07-16  Per Bothner  <bothner@cygnus.com>
18694
18695         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
18696         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
18697         (push_super_field):  New function.
18698         (make_class_data):  Handle inheritance of class static initializer.
18699         (layout_class):  New name mangling.
18700         * constants.c (build_constant_data_ref):  Init type of data array
18701         to a one-element array.
18702         (build_constants_constructor):  Set DECL_SIZE from complete array type.
18703         * decl.c:  Rename class_type, object_type etc to class_type_node,
18704         object_type_node etc.  Make former inherit from latter.
18705         * expr.c (expand_invoke):  Add cast of function address.
18706         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
18707         * parse.c (yyparse):  Don't call layout_class here.
18708         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
18709
18710 1997-06-14  Per Bothner  <bothner@cygnus.com>
18711
18712         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
18713         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
18714         (alloc_class_constant):  New.
18715         * expr.c (expand_invoke):  Make sure method's class is initialized.
18716         * class.c (interits_from_p, emit_register_class):  New functions.
18717         * parse.c (yyparse):  Call emit_register_class.
18718
18719 1997-06-09  Per Bothner  <bothner@cygnus.com>
18720
18721         * constants.c:  New file, to handle constant pool.
18722         * Makefile.in (JAVA_OBJS):  Add constants.o.
18723         * decl.c (init_decl_processing):  Update, fix, finish various structs.
18724         (pushdecl_top_level):  New.
18725         * parse.c (layout_class):  Moved to class.c.
18726         * expr.c (java_push_constant_from_pool):  New function.
18727         * class.c (build_class_ref):  Make work fully
18728         (make_class_data):  Emit super-class, constant pool, interface vector.
18729
18730 1997-06-03  Per Bothner  <bothner@cygnus.com>
18731
18732         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
18733         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
18734         * class.c (class_depth):  New function.
18735         (lookup_named_class):  Replaced by new function lookup_class.
18736         * decl.c (object_type_node, string_type_node):  New.
18737         Remove various types that we no longer need.
18738         * expr.c (verify_jvm_instructions):  New separate verifier pass.
18739         (push_type, pop_type):  New functions for verifier.
18740         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
18741         (expand_byte_code):  Simplify, since we assume already verified.
18742         (expand_invoke):  Now mostly works.
18743         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
18744         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
18745         * parse.c:  Wait to allocate class object until we know its name.
18746         (layout_class):  Calculate DECL_VINDEX for each virtual method.
18747         * typeck.c (get_array_type):  Rename to ...
18748         (build_java_array_type):  ... and provide working implementation.
18749         (build_java_signature):  New function - build Java signature of type.
18750         (set_java_signature):  New function - cache signature with type.
18751         (lookup_java_method):  New function.
18752
18753 1997-05-06  Per Bothner  <bothner@deneb.cygnus.com>
18754
18755         * class.c (ident_subst):  Take extra SUFFIX parameter.
18756         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
18757         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
18758         (build_class_ref):  Actually implement.
18759         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
18760         * decl.c (builtin_function):  New.
18761         (init_decl_processing):  Update for current Kaffe.  Declare some
18762         builtin Kaffe functions.
18763         * expr.c (build_address_of):  New.
18764         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
18765         Renamed (from expand_java_new etc), and added working implementations.
18766         (build_field_ref):  Now also handle static fields.
18767         (expand_invoke):  Implement invokestatic, and start implement rest.
18768         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
18769         * javaop.def:  Rename invokevirt -> invokevirtual.
18770         * lang.c (use_handles):  Removed.
18771         * parse.c:  Add support for ConstantValue attribute.
18772         Handle nested loading of a class.  (JPOOL_UTF):  New.
18773
18774 1997-03-11  Per Bothner  <bothner@deneb.cygnus.com>
18775
18776         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
18777
18778 1997-02-27  Per Bothner  <bothner@deneb.cygnus.com>
18779
18780         * Make-lang.in (java.install-man):  New empty rule.
18781         * typeck.c (set_local_type):  New function.
18782         * expr.c (STORE_INTERNAL):  Call find_local_variable,
18783         not find_stack_slot.  Call set_local_type.
18784
18785 1997-02-12  Per Bothner  <bothner@kalessin.cygnus.com>
18786
18787         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
18788         and building RECORD_TYPE CONSTRUCTORs.
18789         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
18790
18791         * lang.c (use_handles):  Change the default to 0.
18792         * decl.c:  Define and build class_type, field_type, utf8const_type.
18793         * class.c (make_class_data, make_field_value,
18794         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
18795         hashUtf8String, strLengthUtf8, mangled_classname:
18796         Functions to build reflective data structures.
18797         * parse.c (yyparse):  Call make_class_data.
18798
18799         * jcf-io.c (open_class, find_classfile):  New functions.
18800         * jcf-dump.c:  Support reading classfile from explicitly-named
18801         class file (without CLASSPATH searching).
18802
18803 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
18804
18805         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
18806         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
18807         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
18808         (get_constant):  Now trivial for CONSTANT_Utf8.
18809
18810         * jcf.h:  Make NEW_CPOOL the default.
18811         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
18812
18813 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
18814
18815         New directory.