Wed Apr 21 11:13:36 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* decl.c (predef_filenames, predef_filenames_size): New globals
(init_decl_processing): predef_filenames and predef_filenames_size
initialized.
* java-tree.h (predef_filenames, predef_filenames_size): Declared
extern.
* jcf-parse.c (predefined_filename_p): New function.
(yyparse): Check that files on the command line are specified only
once and issue a warning otherwise.
* parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
* parse.y (source_end_java_method): Nullify NOP method bodies, to
avoid a gcc warning with -W -Wall turned on.
(java_expand_classes): Abort if errors were encountered.
(java_complete_lhs): If the cross reference flag is set, wrap
field DECL node around a WFL when resolving expression name.
From-SVN: r26578
* class.c (add_method_1): Cast the argument of `bzero' to PTR.
* decl.c (copy_lang_decl): Likewise for `bcopy'.
* jcf-depend.c: Include "config.h", not <config.h>.
* jcf-parse.c (jcf_figure_file_type): Cast the arguments of
`bcopy' to PTR.
* jcf-path.c: Include "config.h", not <config.h>.
* lex.c: Don't include various system header files.
(java_init_lex): Cast the argument of `bzero' to PTR
* parse-scan.y (java_push_parser_context): Likewise.
* parse.y (java_push_parser_context): Likewise.
* xref.c: Don't include <stdio.h>.
From-SVN: r26203
Mon Apr 5 11:24:19 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (struct parser_ctxt *ctxp): Now global.
(declare_local_variables): Use WFL compound value for the
declaration source line value, when doing cross-referencing.
From-SVN: r26201
Tue Mar 30 11:31:53 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (patch_bc_statement): Fixed identation and a bogus
`printf' format.
Tue Mar 30 11:29:29 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (patch_assignment): Allow static variables in other
classes to be assigned.
From-SVN: r26065
Sat Mar 27 15:13:21 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
using a WFL compound value.
* parse.y (xref.h): Include.
(maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
WFL compound value.
(register_fields): Set WFL compound value to lineno if doing
xrefs.
(java_complete_expand_method): Call expand_xref if flag_emit_xref
is set.
* xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
* xref.h (expand_xref): Prototype renamed from xref_generate.
Sat Mar 27 14:16:32 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
(GET_CURRENT_BLOCK): New macro.
* parse.y (current_static_block): New global variable.
(method_body:): Define action.
(complete_method_declaration): Set current_function_decl to NULL
when work on the current method is done.
(declare_local_variables): Use GET_CURRENT_BLOCK.
(java_method_add_stmt): Likewise.
(java_complete_expand_method): Disable the use of `this' when
expanding <clinit>.
(enter_a_block): If no current method exist, use
current_static_block to link static initializer blocks.
(exit_block): Rewritten to use current_static_block when no current
method decl exists.
(lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
(patch_return): Forbid the use of `return' in static initializers.
(patch_throw_statement): Fixed indentation. Issue specific error
for uncaught thrown checked exception in static initializer
blocks. Removed FIXME.
From-SVN: r26018
Tue Mar 23 10:48:24 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (find_applicable_accessible_methods_list): When dealing
with interface: ensure that a given interface or java.lang.Object
are searched only once.
From-SVN: r25925
1999-03-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (find_applicable_accessible_methods_list): Extend the
search to superinterfaces when relevant.
(search_applicable_methods_list): New function.
(Previous check didn't have the right path in the `#line' directives.)
From-SVN: r25863
1999-03-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (find_applicable_accessible_methods_list): Extend the
search to superinterfaces when relevant.
(search_applicable_methods_list): New function.
(parse.c wasn't part of the last check-in.)
From-SVN: r25862
x
* parse.y (java_complete_lhs): Call force_evaluation_order
after patch_newarray.
(patch_binop): Don't call fold if there are side effects.
From-SVN: r25807
1999-03-16 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (java_stabilize_reference): Use save_expr instead of
building a SAVE_EXPR node.
(java_complete_lhs): Patch the resulting string of the `+='
operator (if necessary) and complete the RHS after having built
the cast.
From-SVN: r25797
d
* class.c (make_class): Don't set CLASS_P here (because
this function is also called by build_java_array_type).
(push_class): Set CLASS_P here instead.
* parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant.
* jcf-dump.c (print_access_flags): Take extra parameter to indicate
context. If the context is class, perfer "super" over "synchronized".
* jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface.
* parse.y (create_class): Don't call parser_check_super here;
it is not robust. Always wait until later.
* parse.y (method_header): For interfaces, set ACC_ABSTRACT (to
match what JDK 1.2 does), but don't set ACC_PUBLIC.
From-SVN: r25784
1999-03-12 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (java_stabilize_reference): Return NODE when patching a
COMPOUND_EXPR.
(java_complete_lhs): Put parenthesis around truth values.
1999-03-12 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (layout_class_method): Don't make rtl for interface
methods.
* parse.h (GET_TYPE_NAME): New macro.
* parse.y (if_then_statement:): Fixed indentation.
(if_then_else_statement:): Likewise.
(for_statement:): Fixed spacing.
(try_statement:): Fixed indentation.
(create_interface): Don't force interfaces to be abstract.
(method_header): Abstract methods are OK in interfaces.
(declare_local_variables): Fixed typo in comment.
(java_complete_expand_method): Fixed indentation.
(resolve_qualified_expression_name): Use GET_TYPE_NAME to report
non accessible fields.
(java_stabilize_reference): New function.
(java_complete_lhs): Fixed indentation. Use
java_stabilize_reference in compound assignement. Insert the
cast. If not processing `+' fix string constants before processing
binop.
From-SVN: r25733
* constants.c (find_class_or_string_constant): Cast variable `j'
to a `jword' when comparing against one.
* expr.c (java_lang_expand_expr): Remove unused variables
`has_finally_p' and `op0'.
* gjavah.c (print_field_info): Cast a value to jint when comparing
against one. Likewise for a jlong.
(add_namelet): Likewise cast a `sizeof' to an int when comparing
against a signed quantity.
* jcf-dump.c (print_signature_type): Remove unused variable `digit'.
(print_signature): Don't needlessly dereference variable `str'
* jcf-reader.c (get_attribute): Mark variables `max_stack' and
`max_locals' with ATTRIBUTE_UNUSED.
(jcf_parse_class): Likewise for variable `index'.
* parse.h (reverse_jdep_list): Remove static prototype.
* parse.y (build_jump_to_finally): Remove prototype and definition.
(reverse_jdep_list): Add static prototype.
* typeck.c (convert_ieee_real_to_integer): Remove unused variables
`assignment' and `expr_decl'.
* verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
From-SVN: r25731
* parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
When reading a zip file, only use strncmp if both strings are
bigger than the buffer length. Initialize `k' when looping
through zip file.
From-SVN: r25439
d
* parse.y (obtain_incomplete_type): Don't wrap unknown types
in TREE_LIST - just chain the POINTER_TYPEs together.
(resolve_class): If type already resolved, return decl.
After resolving, update TREE_TYPE(class_type), and name (if array).
* parse.h (do_resolve_class), parse.y: Make non-static.
* class.c (maybe_layout_super_class): Take this_class argument.
Do do_resolve_class if necessary.
(layout_class, layout_class_methods): Adjust calls appropriately.
* parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
JDEP_RESOLVED_P): Redefined for new TREE_LIST-less convention.
* typeck.c (build_java_array_type): Don't call layout_class.
From-SVN: r25324
Thu Jan 28 11:50:11 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-parse.c (jcf_parse): Don't parse the same class file twice.
* parse.y (patch_cast): Allow a boolean to be cast into a
boolean.
Wed Jan 27 10:19:29 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y: (class_declaration:): Fixed indentation.
(class_member_declaration:): Extra `;' after field declaration now
accepted.
(interface_declaration:): Removed debug messages in error reports.
(patch_binop): Nodes created and returned inherit the orignal
node's COMPOUND_ASSIGN_P flag value.
(patch_cast): Fix cast from char to floating point.
From-SVN: r25244
Tue Feb 9 19:31:09 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* lex.c (java_lang_cloneable): Initialize.
* parse.y (java_lang_cloneable): New static variable.
(qualify_ambiguous_name): Take CONVERT_EXPR into account when
doing one more qualification round.
(valid_ref_assignconv_cast_p): Reject null source or
destination. Allow an array to be cast into java.lang.Cloneable.
(patch_cast): Swapped two first arguments to first call to
valid_ref_assignconv_cast_p.
From-SVN: r25114
Mon Feb 8 11:50:50 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h: DECL_P renamed JDECL_P.
* parse.y: DECL_P replaced by JDECL_P.
(build_array_from_name): Always use pointer's type.
(patch_bc_statement): Extra code to search continue target in a
for loop. Fixed comments. Continue target is current loop when
unlabeled.
From-SVN: r25082
Fri Jan 29 18:19:02 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* lex.c (java_read_char): Fixed utf8 decoding.
(java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
range.
* parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
comments. Local variable `all_primitive' is gone. Broadened
acceptance of `0' to floating point targets. `long' can now be
widened to `double' or `float'.
(valid_method_invocation_conversion_p): Added leading
comment. Fixed tabulation.
(build_string_concatenation): Optimize out left or right empty
string constants.
From-SVN: r25078
d
* parse.y (patch_method_invocation): Handle calling static methods,
even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
* parse.y (java_complete_lhs): Don't complain about unreachable
exit condition in a do-while statement.
From-SVN: r24968
* Makefile.in (parse.o): Depend on $(CONFIG_H) and
$(srcdir)/../system.h.
(class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
(jcf-parse.o): Depend on $(srcdir)/../toplev.h.
(jcf-write.o): Likewise.
(jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
(mangle.o): Depend on $(srcdir)/../toplev.h.
(parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
(zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
* class.c: Include output.h and parse.h.
(mangled_classname): Add the `const' keyword to a char*.
(find_named_method): Hide unused function definition.
(build_utf8_ref): Change type of variable `c' to unsigned char.
Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
(build_class_ref): Add the `const' keyword to a char*.
(layout_class_method): Remove unused variable `buf'.
* decl.c (find_local_variable): Remove unused variable `rtl'.
(pushdecl): Likewise for variables `different_binding_level' and
`oldglobal'.
(pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
(maybe_build_cleanup): Likewise for parameter `decl'.
* except.c (expand_start_java_handler): Mark parameter `range'
with ATTRIBUTE_UNUSED.
* expr.c: Include except.h.
(pop_type): Remove unused variable `i'.
(pop_value): Likewise for variables `n_words' and `i'.
(expand_java_arrayload): Likewise for variable `convert'.
(java_lang_expand_expr): Likewise for variables `op0', `type',
`mode', `unsignedp', `node' and `elements'.
(expand_byte_code): Likewise for variables `prev_eh_ranges' and
`eh_ranges'.
(process_jvm_instruction): Add a `const' qualifier to a char*.
* gjavah.c (output_directory): Add the `const' keyword to a char*.
(temp_directory): Likewise.
(print_c_decl): Likewise.
(print_method_info): Likewise.
(decode_signature_piece): Likewise.
(print_mangled_classname): Likewise.
* java-except.h: Provide prototypes for maybe_start_try,
maybe_end_try and add_handler.
* java-tree.h (mangled_classname): Add the `const' keyword to a char*.
(parse_error_context): Likewise. Also add ATTRIBUTE_PRINTF_2.
(pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
init_expr_processing, push_super_field, init_class_processing,
can_widen_reference_to, class_depth, verify_jvm_instructions,
maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
set_local_type, merge_type_state, push_type, load_type_state,
add_interface, find_in_current_zip, append_gpp_mangled_classtype,
emit_unicode_mangled_name): Add prototypes.
* jcf-dump.c (print_constant): Add the `const' keyword to a char*.
(print_signature_type): Use ISDIGIT, not isdigit.
(print_signature): Remove unused variable `j'.
* jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
int when comparing against one.
* jcf-parse.c: Include toplev.h.
* jcf-write.c: Likewise. Don't include <string.h> or <sys/stat.h>.
(localvar_free): Remove unused variable `i'.
(generate_bytecode_conditional): Likewise for variable `kind'.
* jv-scan.c: Include config.h and system.h. Remove redundant
OS header and gansidecl.h includes.
(warning): Add the `const' keyword to a char*. Also add
ATTRIBUTE_PRINTF_1 to the prototype. Check ANSI_PROTOTYPES, not
__STDC__, when determining whether to use ANSI-isms.
(fatal): Likewise. Also add ATTRIBUTE_UNUSED.
(xmalloc): Don't redundantly prototype here.
(main): Remove unused parameter `envp'. Also fix the arguments
passed to function `fatal' to match the format specifier.
* lang.c (java_tree_code_name): Add the `const' keyword to a char*.
* mangle.c: Include toplev.h.
(emit_unicode_mangled_name): Declare parameter `len'.
* parse.y (parse_warning_context): Add the `const' keyword to a
char*. Also add ATTRIBUTE_PRINTF_2 to the prototype. Check
`ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
(issue_warning_error_from_context): Add the `const' keyword to
a char*.
(parse_error_context): Likewise. Also check `ANSI_PROTOTYPES'
not `__STDC__' for whether to use ANSI-isms.
* typeck.c (incomplete_type_error): Mark parameters `value' and
`type' with ATTRIBUTE_UNUSED.
(parse_signature_type): Use ISDIGIT, not isdigit.
* verify.c (check_pending_block): Add the `const' keyword to a char*.
(verify_jvm_instructions): Likewise. Remove unused variables
`field_name' and `default_val'.
* zextract.c: Include config.h and system.h. Remove redundant
OS header includes.
* zipfile.h: Prototype `read_zip_archive'.
From-SVN: r24835
1999-01-18 Andrew Haley <aph@cygnus.com>
* parse.y (patch_binop): Do a type conversion from signed to
unsigned and then back to signed when a ">>>" is found.
From-SVN: r24741
d
* expr.c (process_jvm_instruction): Coerce to correct Throwable
sub-type the result of the call that gets the exception value.
* parse.y (java_complete_expand_methods): If flags_syntax_only,
don't call finish_class.
* parse.y (java_check_regular_methods): If METHOD_PRIVATE,
clear found before continuing.
* verify.c (verify_jvm_instructions): On an array load, allow
and handle top of stack to be TYPE_NULL.
From-SVN: r24697
1999-01-13 Andrew Haley <aph@cygnus.com>
* expr.c (generate_name): Name prefix changed to avoid clashes
with assembler temp labels.
* parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
MODIFY_EXPR. Without this, code for the assignement may not be
generated at all and the synchronized statement will read an
uninitialized variable.
From-SVN: r24649
Wed Jan 13 01:24:54 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (maybe_layout_super_class): Fixed returned value.
* lex.c: Added 1999 to the copyright.
(java_init_lex): Initialize java_lang_imported.
* lex.h: Added 1999 to the copyright.
* parse.h: Added 1999 to the copyright.
(REGISTER_IMPORT): Fixed typo in trailing macro.
(CURRENT_OSB): New macro.
(struct parser_ctxt): New fields osb_depth, osb_limit.
* parse.y (java_lang_id): New global variable.
(type_import_on_demand_declaration): Don't import java.lang.* twice.
(array_creation_expression:): Use CURRENT_OSB.
(dims:): Uses a stack to keep track of array dimensions.
(cast_expression:): Use CURRENT_OSB.
(find_expr_with_wfl): Return NULL if node found doesn't meet the
conditions.
(register_fields): Fixed typos in comment.
(check_method_redefinition): Fixed comment indentation.
(java_check_regular_methods): Set saved found wfl to NULL after
having reinstalled it in the previously found DECL_NAME.
Fix an array dimension counting bug and some random other ones.
From-SVN: r24648
d
* parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL
on CONSTRUCTOR (since that trashes TREE_CST_RTL).
(patch_new_array_init): Clear TREE_CONSTANT also if INDIRECT_REF.
(register_fields): Set TREE_STATIC on NEW_ARRAY_INIT, not on
CONSTRUCTOR (which causes expand_expr to call output_constant_def).
* expr.c (java_lang_expand_expr): Check TREE_STATIC of NEW_ARRAY_INIT.
From-SVN: r24578
d
* expr.c (process_jvm_instruction): Do load_type_state after JSR.
* verify.c (verify_jvm_instructions): Fix off-by-one error.
* jcf-write.c (CHECK_PUT): Add (void) cast to avoid -Wall warnings.
(localvar_alloc): Change return type to void,
(emit_unop): Remove unused variable size.
* jcf-write.c (struct jcf_block): Add new union.
(PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC): New macros.
(call_cleanups): New functions.
(struct jcf_partial): New fields num_finalizers and return_value_decl.
(generate_bytecode_insns): Support CLEANUP_POINT_EXPR and
WITH_CLEANUP_EXPR. Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
* lang.c (lang_init): Call using_eh_for_cleanups.
* parse.y (java_complete_lhs): For SYNCHRONIZED_EXPR, defer
completing operands to patch_synchronized_statement.
Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
(patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
WITH_CLEANUP_EXPR instead of TRY_EXPR.
From-SVN: r24406
d
* parse.y (fold_constant_for_init): New function.
(resolve_expression_name): Don't replace static final
constant-initialized fields by its value.
(java_complete_lhs): New. Same as java_complete_tree, except does
not replace static final constant-initialized fields by their values.
(register_fields): If there is an initializer, set DECL_INITIAL and
MODIFY_EXPR_FROM_INITIALIZATION_P.
(java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs.
Only call patch_initialized_static_field if
MODIFY_EXPR_FROM_INITIALIZATION_P.
(patch_initialized_static_field): If not valid constant, clear
DECL_INITIAL.
* parse.y (lookup_field_wrapper): Fix thinko.
* parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION,
set and restore global lineno.
From-SVN: r24316
d
* parse.y (patch_method_invocation): If class_decl is null
(e.g. an array type), use original type.
* parse.y (check_thrown_exceptions): Temporary hack to suppress
errors about uncaught exception from clone (of array, specifically).
From-SVN: r24299
Thu Dec 10 20:00:54 1998 Alexandre Petit-Bianco <apbianco@sendai.cygnus.com>
* decl.c (long_zero_node, float_zero_node, double_zero_node): New
global variables, initialized.
* java-tree.h (long_zero_node, float_zero_node, double_zero_node):
Declared new global variables.
* lex.c (java_lex): Return long_zero_node, float_zero_node,
double_zero_node, integer_zero_node upon direct matching.
* parse.y (purify_type_name): Added function prototype.
(duplicate_declaration_error_p): Consider new_type as potentially
being a incomplete type. Use purify_type_name on type string.
(method_header): saved_type: unused variable removed. Don't figure
return type if method name is invalid.
(java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
processed by patch_unaryop.
(patch_unaryop): Fixed typo in comment. Re-convert pre/post
increment/decrement node into its original type after binary
numeric promotion on its operands.
Fixes a bug occuring when an error occurs in constructor
declaration. Fixes a bug on ++/-- operators on non integer operands.
From-SVN: r24255
Thu Dec 10 11:02:49 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (array_initializer:): Array init operand is NULL_TREE
instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
now an error. Fixed indentation problems.
(patch_string): Handle error_mark_node as an argument.
(patch_new_array_init): Fixed indentation problems.
(array_constructor_check_entry): Removed check on null wfl_value.
Return an error if wfl_value's walk returns an error.
Fixes and cleanups for array initializers.
From-SVN: r24233