Fix for PR java/5993:
* parse.y (resolve_package): Return the decl if resolution was
successful. Don't special case "java.lang" and "java.lang.reflect"
packages. Set type_name to the merged identifier.
(resolved_qualified_expression_name): Print error using "name" if
resolve_package returns NULL_TREE.
From-SVN: r51497
Fix for PR java/5850:
* parse.y (lookup_field_wrapper): Call itself recursively for enclosing
context if field was not found in the current scope.
* expr.c (lookup_field): Don't look in enclosing contexts.
From-SVN: r51438
* parse.y (patch_assignment): Wrap the right-hand-side with a save_expr
to prevent it getting evaluated twice in the store checking case.
* expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when
examining OBJECT.
From-SVN: r50570
2002-02-28 Alexandre Petit-Bianco <apbianco@redhat.com>
Fix for PR java/5758, java/5632:
* jcf-parse.c (load_class): Renamed local variable, consider `.' an
inner-class separator too.
* parse.y (do_resolve_class): New local `decl_result.'
Progressively build a name for what can have been loaded.
From-SVN: r50228
* expr.c (java_array_data_offset): Removed function.
(JAVA_ARRAY_LENGTH_OFFSET): Removed macro.
(build_java_array_length_access): Obtain "length" value using a
COMPONENT_REF, instead of INDIRECT_REF and arithmetic.
(build_java_arrayaccess): Correct comment. Access "data" using a
COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF.
(build_java_arraystore_check): New function.
(expand_java_arraystore): Use build_java_arraystore_check.
* parse.y (patch_assignment): Simplify code to insert a store check
when lvalue is an ARRAY_REF. Use build_java_arraystore_check.
* check-init.c (check_init): Update to reflect that an array length
access is now a COMPONENT_REF.
* gcj.texi (Code Generation): Improve documentation of
-fno-bounds-check. Add documentation for -fno-store-check.
* java-tree.h (flag_store_check): Declare.
(build_java_arraystore_check): Declare.
* lang.c (flag_store_check): Initialize to 1.
(lang_f_options): Add store-check option.
* jvspec.c: Don't pass store-check option to jvgenmain.
* lang-options.h: Add help string for -fno-store-check.
From-SVN: r50129
* parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call
to finit$ (otherwise generate_bytecode_insns drops it). However, we
don't need to set it on the COMPOUND_EXPR - the caller does that.
From-SVN: r49966
* builtins.c (check_for_builtin): New function.
(build_call_or_builtin): Remove.
* java-tree.h: Update accordingly.
* expr.c (expand_invoke): Use build + check_for_builtin instead
of build_call_or_builtin.
* parse.y (patch_invoke): Likewise. This avoids needlessly creating
a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER
flag (which had caused jcf-write to incorrectly emit invokevirtual).
From-SVN: r49909
* class.c (add_field): Mark static fields external.
(build_class_ref): Remove redundant set.
* parse.y (java_expand_classes): Mark static fields of classes
to be compiled as local.
* jcf-parse.c (parse_class_file): Likewise.
From-SVN: r49458
* expr.c (build_jni_stub): Ensure storage for `meth' is
generated.
* parse.y (java_complete_expand_methods): Set
current_function_decl before building JNI stub.
From-SVN: r49286
* parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
CAN_COMPLETE_NORMALLY for the node.
* jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
generate code for second branch if first branch can't complete
normally.
(generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
the loop head if the loop body can't complete normally.
From-SVN: r48249
* parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
CAN_COMPLETE_NORMALLY for the node.
* jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
generate code for second branch if first branch can't complete
normally.
(generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
the loop head if the loop body can't complete normally.
From-SVN: r48233
Fixes PR java/5057:
* parse.y (analyze_clinit_body): Added this_class parameter.
Check for more cases where we must keep <clinit>.
(maybe_yank_clinit): Cleaned up flow control.
From-SVN: r48231
Fix for PR java/3417:
* parse.y (patch_assignment): Added special processing for
`return'.
(patch_return): Don't convert booleans to integers, and don't
special-case `null'.
From-SVN: r48208
* parse.y (trap_overflow_corner_case): New rule.
(unary_expression): Use it.
* lex.c (java_init_lex): Don't set minus_seen.
(yylex): Don't use minus_seen. Communicate overflow to parser for
it to handle.
(error_if_numeric_overflow): New function.
* parse.h (minus_seen): Removed field.
(JAVA_RADIX10_FLAG): New define.
From-SVN: r46846
* parse.y (case_label_list): New global.
(goal): Register case_label_list with GC.
(java_complete_lhs): Save new case on case_label_list.
(patch_switch_statement): Check for duplicate case labels.
From-SVN: r46845
2001-10-24 Alexandre Petit-Bianco <apbianco@redhat.com>
* mangle.c (static tree compression_table): Fixed leading comment.
* parse.h (struct parser_ctxt): Fixed field comment.
* parse.y (check_pkg_class_access): New prototype, fixed leading
comment, new parameter used to emit error only if passed as true.
(parse_check_super): Pass extra argument to check_pkg_class_access.
(do_resolve_class): Likewise.
(process_imports): Likewise.
(read_import_dir): Fixed indentation.
(find_in_imports_on_demand): New local class_type_name. Local
node_to_use deleted. while loop changed into for loop. Report
multiple definition only for accessible classes. Improved error
message.
(start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
assigned to parameter list, fixed indentation. while loop changed
into for loop, restore TREE_CHAIN on local `tem' before the next
iteration.
( http://gcc.gnu.org/ml/gcc-patches/2001-10/msg01323.html )
From-SVN: r46498
* parse.y (patch_synchronized_statement): Use a TRY_FINALLY_EXPR
rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
The former is simpler, and jcf-write.c handles it better.
(java_complete_lhs): No longer need to handle CLEANUP_POINT_EXPR
or WITH_CLEANUP_EXPR.
* jcf-write.c: Revert Alex's change from 2000-10-18. It is no
longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
From-SVN: r46209
2001-10-09 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_cast): Call patch_string on the first operand of
the incoming node, update it if necessary. Fixes java/4510.
2001-10-05 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (register_incomplete_type): Set JDEP_SUPER to be given
a NULL enclosing context if appropriate. Fixes java/4466.
2001-09-17 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_method_invocation): Inner class creation context
check not enforced within constructors. Fixes PR java/1873.
( http://gcc.gnu.org/ml/gcc-patches/2001-10/msg00397.html )
From-SVN: r46133
2001-10-03 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_assignment): Use lvalue's original TYPE when
building the final COMPOUND_EXPR.
(try_reference_assignconv): Fixed leading comment.
( http://gcc.gnu.org/ml/java-patches/2001-q4/msg00027.html )
From-SVN: r46004
2001-09-26 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (check_final_variable_indirect_assignment): For
COMPOUND_EXPR, return only if finals were found initialized
properly, if not, keep on checking.
(check_final_variable_global_assignment_flag): New local
error_found, set when appropriate and used to decide whether to
report uninitialized finals. Fixed typo in comment.
( http://gcc.gnu.org/ml/gcc-patches/2001-09/msg01160.html )
From-SVN: r45844
2001-09-19 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.h: (WFL_STRIP_BRACKET): Re-written using
build_type_name_from_array_name.
(STRING_STRIP_BRACKETS): New macro.
* parse.y (build_type_name_from_array_name): New function.
(array_creation_expression:): Accumulate []s instead of [s.
(cast_expression:): Accumulate []s instead of [s after cast type
name.
(build_array_from_name): Local string deleted, use
build_type_name_from_array_name.
(build_unresolved_array_type): Accumulate []s instead of [s after
type name.
(register_fields): Fixed comment.
(resolve_class): Local name, base deleted, new locals tname and
array_dims. Use build_type_name_from_array_name. Use array_dims to
build array type.
(purify_type_name): Use STRING_STRIP_BRACKETS.
( http://gcc.gnu.org/ml/gcc-patches/2001-09/msg00779.html )
From-SVN: r45732
2001-09-13 Alexandre Petit-Bianco <apbianco@redhat.com>
* java-tree.h (TYPE_IMPORT_LIST): New macro.
(TYPE_IMPORT_DEMAND_LIST): Likewise.
(struct lang_type): New fields import_list and import_demand_list.
* parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
(do_resolve_class): New local saved_enclosing_type, initialized,
passed as parameter to find_in_imports and find_in_imports_on_demand.
(find_in_imports): Added paramater enclosing_type, use its
TYPE_IMPORT_LIST when applicable.
(find_in_imports_on_demand): Added parameter enclosing_type, use
its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
declaration and initialization.
(fold_constant_for_init): Switch/restore current_class to the
appropriate context.
( http://gcc.gnu.org/ml/gcc-patches/2001-09/msg00563.html )
From-SVN: r45619
2001-09-05 Alexandre Petit-Bianco <apbianco@redhat.com>
* jcf-write.c (generate_classfile): Issue an error in case of
field/initial value mismatch.
* parse.y (analyze_clinit_body): Keep <clinit> if an array is
being initialized and we're generating bytecode.
(java_complete_lhs): In MODIFY_EXPR section: added comments,
set DECL_INITIAL properly when appropriate.
Fixes PR java/4230
Fixes PR java/4204
(http://gcc.gnu.org/ml/gcc-patches/2001-09/msg00247.html )
From-SVN: r45474
* parse.y (maybe_yank_clinit): A field without an initializer is not
relevant. All initializers except static final and constant require
<clinit>, regardless of flag_emit_class_files.
From-SVN: r45388
2001-08-30 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_assignment): Don't verify final re-assignment here.
(java_complete_lhs): Verify assignments to finals calling
patch_assignment. Verify re-assignments to finals before calling
patch_assignment.
2001-08-29 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
Fixes PR java/1413
2001-08-28 Alexandre Petit-Bianco <apbianco@redhat.com>
* lex.c (java_lex): new local found_hex_digits. Set and then used
in test to reject invalid hexadecimal numbers.
* parse.y (java_complete_tree): Prevent unwanted cast with
initialized floating point finals.
(patch_binop): Emit a warning when detecting a division by zero,
mark result not constant, don't simplify non integer division.
(http://gcc.gnu.org/ml/java-patches/2001-q3/msg00343.html )
From-SVN: r45345
2001-08-24 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (check_deprecation): Handle TYPE_DECL in a special case,
don't report anything but deprecated class when marked so. Handle
VAR_DECL.
(patch_method_invocation): Check deprecation on methods and types.
(patch_binop): code becomes an enum tree_code, added default: to
switch to handle that. Detect division by zero, try to fold and
return before using a subroutine.
(http://gcc.gnu.org/ml/gcc-patches/2001-08/msg01495.html)
From-SVN: r45187
2001-08-23 Alexandre Petit-Bianco <apbianco@redhat.com>
* jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
file smaller than 4 bytes.
* parse.y (check_inner_circular_reference): New function.
(check_circular_reference): Likewise.
(array_initializer:): Accept {,}.
(java_check_circular_reference): Rewritten using
check_circular_reference and check_inner_circular_reference.
(java_complete_expand_method): Unconditionally save and restore
the unpurged exception list.
(build_dot_class_method_invocation): Unmangle signature parameter.
(http://gcc.gnu.org/ml/gcc-patches/2001-08/msg01417.html)
From-SVN: r45156
2001-08-08 Alexandre Petit-Bianco <apbianco@redhat.com>
* check-init.c (flags.h): Include
(check_init): Don't report uninitialized static class
initialization flags, don't free bit index when doing static class
initialization optimization.
(check_for_initialization): Return type changed to `unsigned int.'
(attach_initialized_static_class): New function.
* class.c (add_method_1): Create the initialized static class
table if necessary.
(finish_class): Always emit deferred inline methods.
* decl.c (emit_init_test_initialization): Moved to expr.c
(complete_start_java_method): Don't traverse
DECL_FUNCTION_INIT_TEST_TABLE.
(lang_mark_tree): Mark hash tables in function decls.
* expr.c (emit_init_test_initialization): Moved from decl.c.
(build_class_init): Create LAG_DECL_SPECIFIC for the static class
initialization flag, set DECL_CONTEXT and
LOCAL_CLASS_INITIALIZATION_FLAG.
(java_lang_expand_expr): Emit initialization code for static class
initialized flags when entering block, if necessary.
* gcj.texi (-fno-optimize-static-class-initialization): Documented.
* java-tree.h (flag_optimize_sci): New global variable declaration.
(DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
(DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
(LOCAL_FINAL_P): Fixed typo in comment.
(FINAL_VARIABLE_P): Likewise.
(LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
(LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
(struct lang_decl): New fields `ict', `smic' and `cif.'
(check_for_initialization): New returned value for global.
(attach_initialized_static_class): New global function.
(STATIC_CLASS_INIT_OPT_P): New macro.
* lang-options.h (-fno-optimize-static-class-initialization): New flag.
* lang.c (java_decode_option): Handle
`-fno-optimize-static-class-initialization'
* parse.y (start_complete_expand_method): New function.
(java_expand_method_bodies): Likewise.
(attach_init_test_initialization_flags): Likewise.
(adjust_init_test_initialization): Likewise.
(emit_test_initialization): Likewise.
(java_complete_expand_methods): Nullify abstract and native method
bodies.
(java_complete_expand_method): New locals `fbody', `block_body'
and `exception_copy.' Reorganized: directly return on empty method
bodies, call `start_complete_expand_method', remember definitely
initialized static class in function, don't expand method bodies.
(java_expand_classes): Call `java_expand_method_bodies' before
`finish_class' when compiling to native.
(resolve_expression_name): Use `orig' after building outer class
field access.
(patch_invoke): Remember static method invokations.
(http://gcc.gnu.org/ml/gcc-patches/2001-08/msg00454.html)
From-SVN: r44733
2001-07-18 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (create_interface): Avoid cyclic inheritance report when
syntax error encountered during class definition.
Fixes PR java/2956
2001-07-17 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
* parse.y (check_class_interface_creation): Allow `private' if the
enclosing is not an interface.
(create_interface): Interface tagged public if the enclosing
context is an interface.
(create_class): Class tagged public if the enclosing context
is an interface.
Fixes PR java/2959
2001-07-17 Alexandre Petit-Bianco <apbianco@redhat.com>
* class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
Fixes PR java/2665
2001-07-13 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
Fixes PR java/3602
(http://gcc.gnu.org/ml/gcc-patches/2001-07/msg02297.html )
From-SVN: r44524
2001-07-12 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_method_invocation): Don't override primary if one
is already provided, but let this$<n> be built. Fixed comment.
2001-07-12 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (empty_statement:): Report empty statement error only
when found at class declaration level.
Fixes PR java/3635
(http://gcc.gnu.org/ml/gcc-patches/2001-07/msg00885.html )
From-SVN: r43993
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
* lang-specs.h: Forbit the use if `-femit-class-file{s}' without
`-fsyntax-only.' Fixes PR java/3248
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
* jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
current function is static. Fixes PR java/1970
2001-07-09 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_method_invocation): Add enclosing context to ctor
calls if necessary. Fixes PR java/2953
2001-07-09 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (resolve_package): Abort if qualified expression member
isn't right.
(qualify_ambiguous_name): Don't qualify as type if `this' in use.
Fixes PR java/1391
(http://gcc.gnu.org/ml/gcc-patches/2001-07/msg00701.html )
From-SVN: r43927
2001-06-27 Alexandre Petit-Bianco <apbianco@redhat.com>
* class.c (set_super_info): Call `set_class_decl_access_flags.'
(set_class_decl_access_flags): New function.
* java-tree.h (set_class_decl_access_flags): New prototype.
* jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
(parse_class_file): New local `decl_max_locals.' Take wide types
into account to compute DECL_MAX_LOCALS.
* parse.y (type_import_on_demand_declaration:): Ignore duplicate
imports on demand.
(http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01718.html )
From-SVN: r43618
2001-06-20 Alexandre Petit-Bianco <apbianco@redhat.com>
* class.c (java_hash_tree_node): Fixed indentation in leading comment.
* parse.y (do_resolve_class): Moved comments out to leading comment
section. Removed local `start', New local `_ht' and
`circularity_hash.' Record `enclosing' in hash table and search
it to detect circularity. Use `enclosing' as an argument to
`lookup_cl.' Free the hash table when done.
(http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01318.html )
From-SVN: r43480
2001-03-20 Tom Tromey <tromey@redhat.com>
Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (patch_assignment): Handle the case of a SAVE_EXPR
inside an array reference. Insertion of the array store check
rewritten. Fixes PR java/2299.
(http://gcc.gnu.org/ml/gcc-patches/2001-06/msg00611.html )
Co-Authored-By: Alexandre Petit-Bianco <apbianco@redhat.com>
From-SVN: r43146
2001-06-01 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (type_literals:): Use `build_incomplete_class_ref' with
builtin type.
(patch_incomplete_class_ref): Build the class ref, build the class
init if necessary, complete the tree.
Fixes PR java/2605
(http://gcc.gnu.org/ml/gcc-patches/2001-06/msg00044.html )
From-SVN: r42807
2001-04-06 Tom Tromey <tromey@redhat.com>
Alexandre Petit-Bianco <apbianco@redhat.com>
Fix for PR gcj/1404 and PR gcj/2332:
* parse.y (build_array_from_name): If we use the type_wfl then
accumulate dimensions from the original type as well.
(build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
Co-Authored-By: Alexandre Petit-Bianco <apbianco@redhat.com>
From-SVN: r41178
2001-04-04 Alexandre Petit-Bianco <apbianco@redhat.com>
* java-tree.h (struct lang_decl): New macro
`DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
* parse.y (build_instance_initializer): New function.
(add_instance_initializer): Use it.
(java_fix_constructors): Set `current_class' before fix pass.
(fix_constructors): Just return if already fixed. Move `super()'
invokation ahead. Use `build_instance_initializer.'
Fixes PR java/1315.
(http://gcc.gnu.org/ml/gcc-patches/2001-04/msg00343.html)
From-SVN: r41129
* java-tree.h (CONSTANT_VALUE_P): New macro.
* jcf-write.c (generate_classfile): Use CONSTANT_VALUE_P.
* parse.y (maybe_build_class_init_for_field): New static function.
(resolve_expression_name, resolve_field_access): Use
maybe_build_class_init_for_field instead of build_class_init
This does not do the init if the field is compile-time-constant.
(resolve_field_access): Simplify.
* parse.y (fold_constant_for_init): Merge test into switch.
From-SVN: r41094
* expr.c (pop_type_0): Call `concat' rather than building the
string manually.
(pop_type): Add format specifier in call to `error'.
* parse.y (patch_method_invocation): Avoid casting away
const-ness.
From-SVN: r40940
* decl.c (end_java_method): Do not save and restore
flag_non_call_exceptions.
* parse.y (source_end_java_method): Likewise.
* lang.c (flag_exceptions): Don't declare.
(java_init_options): Set flag_non_call_exceptions. Set
flag_exceptions here ...
(java_init): ... not here.
From-SVN: r40921
* constants.c (PUTN): Use memcpy, not bcopy.
* lex.c (java_read_char): Use memmove, not bcopy.
* parse.y (java_parser_context_resume): Use memcpy, not bcopy.
From-SVN: r40836
e
* verify.c (verify_jvm_instructions): Replace 3 pop_type by POP_TYPE
macro for better error pin-pointing.
* java-tree.h: Fix typo in comment.
* jcf-write.c (generate_bytecode_insns): Changes to TRY_FINALLY_EXPR.
Don't include jsr/goto in exception range.
Check if start and end of exception range are the same (also TRY_EXPR).
Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
However, do emit the following goto even if try_block is empty.
Defer freeing exception_decl until after the finalizer, to make
sure the local isn't reused in the finalizer. Fixes PR java/1208.
* parse.y (java_complete_lhs): If the try-clause is empty, just
return the finally-clause and vice versa.
From-SVN: r40801
* parse.h (JDEP_SOLV): Removed.
* parse.y (incomplete_class_list): Removed.
(register_incomplete_type): Use JDEP_TO_RESOLVE instead of JDEP_SOLV.
* parse.y (obtain_incomplete_type): Removed. It doesn't work if
resolve_class changes the name of an array type that is on the list
and then someone else looks for the modified name. Also, seems liable
to break when compiling multiple source files at once. So the simplest
is to just remove incomplete_class_list - it is only a minor
space win and it is not even clear it saves time.
* parse.y (resolve_class): Remove unneeded promote_type.
From-SVN: r40584
* parse.y (expand_start_java_method): Was only called once and had a
misleading name, so inline in caller java_complete_expand_method.
(enter_a_block): Likewise inline in enter_block and remove.
From-SVN: r40540
2001-02-20 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (check_inner_class_access): Moved declaration of local
`enclosing_decl_type' to the right location.
(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg01258.html)
From-SVN: r39933
* parse.y (parser_check_super_interface): Don't call
check_pkg_class_access for an inner interface.
(parser_check_super): Don't call check_pkg_class_access for inner
class.
(do_resolve_class): Simplify enclosing type loop. Don't call
check_pkg_class_access if CL and DECL are not set.
(find_in_imports_on_demand): Set DECL if class_type needed to be
loaded. Don't call check_pkg_class_access for an inner class.
(check_inner_class_access): Rewritten to implement member access
rules as per spec 6.6.1.
(check_pkg_class_access): Handle the empty package correctly.
(in_same_package): New function. Determine if two classes are in the
same package.
From-SVN: r39909
* typeck.c (build_java_array_type): Don't try to poke a public `clone'
method into array types.
* parse.y (patch_method_invocation): Bypass access check on clone call
to array instance.
From-SVN: r39906
2001-02-14 Tom Tromey <tromey@redhat.com>
Alexandre Petit-Bianco <apbianco@redhat.com>
Fix for PR java/1261.
* typeck.c (build_java_array_type): Add public `clone' method to
arrays.
* parse.y (resolve_qualified_expression_name): Use current_class
when checking for inaccessibility.
(patch_method_invocation): Fixed error message when accessibility
denied. Added `from_super' argument.
2001-02-14 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (resolve_class): Don't build a fake decl. Use the one
already built.
* typeck.c (build_java_array_type): Build and assign decl to array
type.
2001-02-14 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (not_accessible_p): Changed leading comment. Added extra
`where' argument. Use it to enforce protected access rules.
(resolve_qualified_expression_name): Added extra argument to
not_accessible_p.
(patch_method_invocation): Use argument `primary' to provide
not_accessible_p with an extra argument.
(lookup_method_invoke): Added extra argument to not_accessible_p.
(search_applicable_method_list): Likewise.
(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00849.html)
From-SVN: r39701
2001-02-13 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (resolve_qualified_expression_name): Try to resolve as
an inner class access only if `decl' is a TYPE_DECL.
(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00762.html)
From-SVN: r39653
2001-02-05 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (process_imports): Save the original name of the import
for better error report.
(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00250.html)
From-SVN: r39461
2001-01-23 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (layout_class): Don't lay the superclass out if it's
already being laid out.
* jcf-parse.c (handle_innerclass_attribute): New function.
(HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
handle_innerclasses_attribute.
(jcf_parse): Don't load an innerclasses if it's already being
laid out.
* jcf-write.c (append_innerclass_attribute_entry): Static
`anonymous_name' and its initialization deleted. `ocii' and `ini'
to be zero for anonymous classes.
2001-01-23 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
necessary.
* jcf-parse.c (set_source_filename): Use
MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
2001-01-23 Alexandre Petit-Bianco <apbianco@cygnus.com>
* expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
gets a unique asm name.
2001-01-23 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
(HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
if necessary.
(HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
* jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
* parse.y (lookup_package_type_and_set_next): Deleted.
(resolve_package): Removed unnecessary code.
(find_applicable_accessible_methods_list): `finit$' can't be
inherited.
* verify.c (pop_argument_types): Added missing prototype.
(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01812.html)
From-SVN: r39230
* parse.y (method_header): Don't set the DECL_NAME of a FUNCTION_DECL
to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
From-SVN: r39169
2001-01-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
All files with updated copyright when applicable.
* Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
* class.c (mangle_class_field): Function removed.
(append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
(utf8_cmp, cxx_keyword_p): Moved to lex.c.
(build_class_ref): Call `java_mangle_class_field' instead of
`mangle_class_field.'
(build_dtable_decl): Rewritten to call `java_mangle_vtable.'
(layout_class): Call `java_mangle_decl' instead of
`mangle_static_field.'
(cxx_keywords): Initialized static array moved to `lex.c.'
(layout_class_method): Changed leading comment. Simplified to
call `java_mangle_decl.' Local `ptr' moved in for loop body.
* decl.c (lang_mark_tree): Mark field `package_list.'
* java-tree.h (TYPE_PACKAGE_LIST): New macro.
(struct lang_type): New field `package_list.'
(unicode_mangling_length): Prototype removed.
(append_gpp_mangled_name, append_gpp_mangled_classtype,
emit_unicode_mangled_name): Likewise.
(cxx_keyword_p): New prototype.
(java_mangle_decl, java_mangle_class_field,
java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
* jcf-parse.c (jcf_parse_source): Constify `file' argument to
`build_expr_wfl.'
* jvgenmain.c (main_method_prefix): Global variable removed.
(main_method_suffix): Likewise.
(do_mangle_classname): New function.
(main): Call it. Format changed to accomodate new mangling scheme.
* lex.c: (utf8_cmp): Conditionally prototyped.
(cxx_keywords): Moved from class.c, conditionally defined.
(utf8_cmp, cxx_keyword_p): Likewise.
* mangle.c (obstack.h, ggc.h): Included.
(mangle_field_decl): New function.
(mangle_method_decl, mangle_type, mangle_pointer_type,
mangle_array_type, mangle_record_type,
find_compression_pointer_match, find_compression_array_match,
find_compression_record_match,
find_compression_array_template_match, set_type_package_list,
entry_match_pointer_p, emit_compression_string, init_mangling,
finish_mangling, compression_table_add, mangle_member_name): Likewise.
(mangle_obstack): New global.
(MANGLE_RAW_STRING): New macro.
(unicode_mangling_length): Turned static.
(append_unicode_mangled_name): Renamed from
`emit_unicode_mangled_name.' Turned static. `mangle_obstack'
replaces `obstack', removed from the parameter list.
(append_gpp_mangled_name): Turned static. `mangle_obstack'
replaces parameter `obstack', removed from the parameter list. Call
`append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
(append_gpp_mangled_classtype): Removed.
(compression_table, compression_next): New static variables.
* parse.y (temporary_obstack): Extern declaration removed.
(This is the new C++ ABI compatibility patch:
http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01225.html)
From-SVN: r39031
* parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
constant, return body without wrapper. (Improves constant folding.)
* lex.c (build_wfl_node): Clear TREE_TYPE from returned node.
From-SVN: r39017
* parse.y (resolve_expression_name): Permit instance variables from
enclosing context in super constructor call.
(resolve_qualified_expression_name): Permit enclosing class's
qualified "this" in super constructor call.
From-SVN: r38892
2001-01-08 Alexandre Petit-Bianco <apbianco@cygnus.com>
* java-tree.h (lang_printable_name_wls): New prototype.
* lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
rather than `current_class' to print type name. Don't prepend type
names when printing constructor names.
(lang_printable_name_wls): New function.
* jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
`build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
* parse.y (patch_method_invocation): Message tuned for constructors.
(not_accessible_p): Grant `private' access from within
enclosing contexts.
2001-01-05 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (patch_binop): Compute missing type in error situations.
(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg00752.html)
From-SVN: r38870
* parse.y (valid_ref_assignconv_cast_p): Load classes for source and
dest if they arn't already.
* class.c (layout_class): Call maybe_layout_super_class on
superinterfaces also, but only if compiling from bytecode.
From-SVN: r38363
2000-12-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (end_artificial_method_body): Fixed undefined behavior.
Credits go to rth for finding it.
(http://gcc.gnu.org/ml/gcc/2000-12/msg00495.html)
From-SVN: r38278
* parse.y (java_complete_lhs): Only allow compound assignment of
reference type if type is String.
Co-Authored-By: Alexandre Petit-Bianco <apbianco@cygnus.com>
From-SVN: r38236
2000-10-18 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-write.c (OP1): Update `last_bc'.
(struct jcf_block): Fixed indentation and typo in comments. New
field `last_bc'.
(generate_bytecode_insns): Insert `nop' if `jsr' immediately
follows `monitorenter'.
* parse.y (patch_synchronized_statement): New local `tmp'. Call
`patch_string'.
Fixes gcj/232.
2000-10-13 Alexandre Petit-Bianco <apbianco@cygnus.com>
* check-init.c (check_init): Fixed leading comment. Use
LOCAL_FINAL_P.
* decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
(give_name_to_locals): Likewise.
(lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
fields in lang_decl_var.
* java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
(FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
(FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
(LOCAL_FINAL): Rewritten.
(LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
(struct lang_decl): Fixed comments. Added `synthetic_ctor' and
`init_final' fields.
(struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
`final_uid', `final_liic', `final_ierr' and `local_final' fields.
(TYPE_HAS_FINAL_VARIABLE): New macro.
(struct lang_type): Added `afv' field.
* parse.y (check_static_final_variable_assignment_flag): New function.
(reset_static_final_variable_assignment_flag): Likewise.
(check_final_variable_local_assignment_flag): Likewise.
(reset_final_variable_local_assignment_flag): Likewise.
(check_final_variable_indirect_assignment): Likewise.
(check_final_variable_global_assignment_flag): Likewise.
(add_inner_class_fields): Use LOCAL_FINAL_P.
(register_fields): Handle local finals and final variables.
(craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
(declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
(source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
on local finals.
(java_complete_expand_methods): Loop to set
TYPE_HAS_FINAL_VARIABLE. Call
`reset_final_variable_local_assignment_flag' and
`check_final_variable_local_assignment_flag' accordingly before
and after constructor expansion. Call
`reset_static_final_variable_assignment_flag'
before expanding <clinit> and after call
`check_static_final_variable_assignment_flag' if the
current_class isn't an interface. After all methods have been
expanded, call `check_final_variable_global_assignment_flag' and
`check_static_final_variable_assignment_flag' if the current class
is an interface.
(maybe_yank_clinit): Fixed typo in comment.
(build_outer_field_access_methods): Removed old sanity check. Use
FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
Don't create access methods for finals.
(resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
(java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
existing DECL_INIT has been processed.
(java_complete_lhs): Likewise.
(check_final_assignment): Filter input on `lvalue''s TREE_CODE.
Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
logic.
(patch_assignment): Use LOCAL_FINAL_P.
(fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
DECL_INITIAL is nullified.
Fixes gcj/163.
2000-10-09 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (pop_current_osb): New function.
(array_type:): Use `dims:', changed actions
accordingly. Suggested by Anthony Green.
(array_creation_expression:): Used pop_current_osb.
(cast_expression:): Likewise.
(search_applicable_method_list): Fixed indentation.
2000-10-08 Anthony Green <green@redhat.com>
* parse.y (array_type_literal): Remove production.
(type_literals): Refer to array_type, not array_type_literal.
(http://gcc.gnu.org/ml/gcc-patches/2000-12/msg00317.html)
From-SVN: r38070
2000-11-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (build_outer_field_access): New local `decl_ctx', use
it. Check for field's context and current class immediate outer
context inheritance.
(outer_field_access_p): Consider fields inherited from the last
enclosing context.
(build_access_to_thisn): Stop at the last enclosing context if
necessary.
Fixes gcj/367.
(http://gcc.gnu.org/ml/gcc-patches/2000-11/msg01335.html)
From-SVN: r37689
2000-10-31 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (outer_field_access_p): Inherited fields aren't
consider outer fields.
(maybe_build_thisn_access_method): Use
PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
(resolve_expression_name): Trigger an error if a static field
is being accessed as an outer field.
2000-10-24 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
scope.
(http://gcc.gnu.org/ml/gcc-patches/2000-11/msg01217.html)
From-SVN: r37645
* stringpool.c: New file.
* ggc-common.c (ggc_mark_string_ptr, ggc_add_string_root): Delete.
(ggc_alloc_string): Now in stringpool.o.
* ggc-page.c, ggc-simple.c: Do not define or allocate empty_string.
* ggc.h: Delete prototype of ggc_add_string_root. #define
ggc_add_string_root and ggc_mark_string to nothing. Prototype
init_stringpool and stringpool_statistics.
(ggc_alloc_string): Returns a const char *.
* tree.c (hash_table, do_identifier_warnings): Delete.
(init_obstacks): Don't initialize the identifier hash table.
(get_identifier, maybe_get_identifier, start_identifier_warnings,
set_identifier_size): Now in stringpool.c.
* tree.h (struct tree_string): Constify pointer field.
(approx_sqrt): Prototype.
* Makefile.in (stringpool.o): Add rule, mention in OBJS.
* toplev.c (approx_sqrt): New function.
(compile_file): Call stringpool_statistics if mem_report is on.
(main): Call init_stringpool.
* builtins.c (c_strlen), c-decl.c (finish_decl), c-lex.c
(process_directive), c-typeck.c (constructor_asmspec, struct
initializer_stack, start_init), except.c (create_rethrow_ref),
stmt.c (digit_strings), toplev.c (decode_f_option), tree.c
(built_in_filename), varasm,c (in_named_name,
assemble_static_space, struct constant_descriptor, struct
deferred_string, struct pool_constant, force_const_mem),
i386.c (pic_label_name, global_offset_table_name), rs6000.c
(rs6000_emit_prologue, rs6000_emit_epilogue) : Constify a char *.
* c-common.c (combine_strings): Combine strings in scratch
buffer, then pass to build_string.
* optabs.c (init_libfuncs), profile.c (init_edge_profiler,
output_func_start_profiler), stmt.c (init_stmt), alpha.c
(alpha_need_linkage), arm.c (arm_encode_call_attribute),
i386.c (load_pic_register), ia64.c (ia64_encode_section_info),
rs6000.c (rs6000_encode_section_info): Create string in
scratch buffer, then pass to ggc_alloc_string.
* stmt.c (expand_asm_operands): If we must adjust the
constraint strings, do so by creating a new one, not by
modifying the old one in place. Constify some char *s.
* config/pa/pa.c (hppa_encode_label): Drop unnecessary second
argument. Create string in scratch buffer, then pass to
ggc_alloc_string.
* config/pa/pa-protos.h: Update prototype.
* config/pa/elf.h, config/pa/pa.h, config/pa/som.h:
hppa_encode_label takes only one argument.
* c-parse.in (if_prefix): Find the filename and line number at
$-2 and $-1 respectively.
* diagnostic.c (error_recursion): Add missing newline, use
fputs, translate string.
cp:
* lex.c (struct impl_files, internal_filename): Constify a char *.
java:
* jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
Create string in scratch buffer, then pass to build_string.
From-SVN: r37514
2000-10-24 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (register_incomplete_type): Include JDEP_FIELD as a case
where an enclosing context can be set on the jdep.
(do_resolve_class): Fixed identation.
(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00824.html)
From-SVN: r37045
2000-07-18 Bryce McKinlay <bryce@albatross.co.nz>
* parse.y (find_most_specific_methods_list): Select the only
non-abstract method even if max has been set.
Fixes gcj/285, gcj/298.
(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00646.html)
From-SVN: r36956
2000-07-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (process_imports): Consider that one might be trying to
import an innerclass. Fixes gcj/254
(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00631.html)
From-SVN: r36948
2000-10-18 Alexandre Petit-Bianco <apbianco@cygnus.com>
* gjavah.c (add_class_decl): Removed unused variables `tname',
`tlen' and `name_index'.
* java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
* jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
in `wfl_operator' with value.
(yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
(jcf_figure_file_type): Fixed identation.
* lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
* parse.y (analyze_clinit_body): New function.
(static_initializer:): Reset `current_static_block'.
(java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
`wfl_operator' with new value.
(lookup_cl): Use EXPR_WFL_FILENAME.
(maybe_yank_clinit): Handle bogus <clinit> bodies, call
analyze_clinit_body.
(build_outer_field_access): Access to this$<n> built from
current_class, not its outer context.
(build_access_to_thisn): Fixed leading comment. Tidied things up.
(resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
(patch_method_invocation): Use `is_static_flag' when already
initialized.
(patch_newarray): Removed assignment in ternary operator.
(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00629.html)
From-SVN: r36946
2000-09-29 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (maybe_yank_clinit): Also keep <clinit> if its body
contains something else than MODIFY_EXPR.
(http://gcc.gnu.org/ml/gcc-patches/2000-09/msg01141.html)
From-SVN: r36670
Fix for PR gcj/343:
* lex.c (java_init_lex): Initialize java_io_serializable.
* parse.y (java_io_serializable): New global.
(valid_ref_assignconv_cast_p): An array can be cast to
serializable.
From-SVN: r36376
* c-common.c (declare_function_name): Use func_id_node,
function_id_node, and pretty_function_id_node. Do not make
__func__ visible at file scope.
* c-common.h (c_tree_index): Add CTI_FUNCTION_ID,
CTI_PRETTY_FUNCTION_ID, and CTI_FUNC_ID.
(function_id_node, pretty_function_id_node, func_id_node): New
macros.
* c-decl.c (init_decl_processing): Initialize function_id_node,
pretty_function_id_node, and func_id_node.
(c_make_fname_decl): Correct comment.
* tree.h (struct tree_identifier): Constify pointer member.
* c-decl.c (pushdecl, implicit_decl_warning): Constify a char *.
* c-pragma.h (struct weak_syms): Constify name and value members.
(add_weak): Constify arguments.
* calls.c (special_function_p): Constify a char *.
(expand_call): Remove variable which is initialized and then
never used.
* dependence.c (struct def_use, struct induction, struct subscript):
Constify 'variable' member.
(get_low_bound, have_induction_variable): Constify char * argument.
(find_induction_variable): Add braces to avoid dangling else.
(classify_dependence): Constify char * arrays.
* profile.c (output_func_start_profiler): Constify a char *.
* stor-layout.c (finalize_record_size): Constify a char *.
* tree.c (is_attribute_p): Constify a char *.
* varasm.c (add_weak, remove_from_pending_weak_list): Constify argument.
* varasm.c (make_function_rtl, make_decl_rtl): Rearrange code
for comprehensibility. Do not call get_identifier if we did
not change the DECL_ASSEMBLER_NAME of the decl. Use alloca to
create temporary string constants, not ggc_alloc_string. No
need to copy result of ASM_FORMAT_PRIVATE_NAME. Use const
char * to hold IDENTIFIER_POINTERs.
ch:
* inout.c (add_enum_to_list): Use DECL_NAME directly, don't get
its IDENTIFIER_POINTER and immediately call get_identifier on it.
* lex.c (yywrap): Constify a char *.
cp:
* class.c (build_secondary_vtable): Constify a char *.
* decl.c (init_decl_processing): Initialize function_id_node,
pretty_function_id_node, and func_id_node.
* input.c (struct input_source): Constify 'str'.
(feed_input): Constify first argument.
* mangle.c (write_identifier): Constify argument.
* pt.c (mangle_class_name_for_template): Constify argument.
f:
* ansify.c: Use #line, not # <number>.
java:
* jcf-parse.c (set_source_filename): Constify a char *.
* jcf-write.c (append_innerclasses_attribute,
make_class_file_name): Constify a char *. Don't recycle a
variable for an unrelated purpose.
* parse.y: (build_alias_initializer_parameter_list): Constify a char *.
(breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
From-SVN: r36055
2000-08-10 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (maybe_layout_super_class): Fixed indentation.
* java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
(java_check_methods): New function declaration.
* jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
instead of `str_ptr'.
* jcf-write.c (generate_bytecode_insns): Emit number the of args
of a `invokeinterface' at the right time.
* parse.h (WFL_STRIP_BRACKET): New macro.
(SET_TYPE_FOR_RESOLUTION): Use it.
* parse.y (build_unresolved_array_type): Reuse `type_or_wfl.'
(check_class_interface_creation): Don't check for cross package
innerclass name clashes.
(method_header): Behave properly if MDECL is `error_mark_node.'
(method_declarator): Return `error_mark_node' if bogus current
class.
(resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
(resolve_and_layout): New local `decl_type', set and used. Call
java_check_methods.
(java_check_methods): New method.
(java_layout_classes): Use it.
(resolve_qualified_expression_name): No EH check necessary in
access$<n>.
(java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
`case' statement.
(patch_assignment): Set DECL_INITIAL on integral final local.
(http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00516.html)
From-SVN: r35644
* parse.y (build_dot_class_method_invocation): Changed parameter
name to `type.' Build signature from `type' and convert it to a
STRING_CST if it's an array.
(patch_incomplete_class_ref): `build_dot_class_method_invocation'
to use `ref_type' directly.
2000-08-01 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (maybe_yank_clinit): When generating bytecode: non empty
method bodies not to rule out discarding `<clinit>'; don't use
<clinit> to initialize static fields with constant initializers.
2000-08-01 Alexandre Petit-Bianco <apbianco@cygnus.com>
* gjavah.c (print_method_info): Added `synth' parameter. Skip
synthetic methods.
(method_synthetic): New global.
(HANDLE_METHOD): Recognize synthetic method and tell
`print_method_info' about it.
(HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
processing a synthetic method.
* jcf-reader.c (skip_attribute): New function.
( skip_attribute): Likewise.
2000-08-01 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (build_outer_field_access): Fixed comments.
(fix_constructors): Emit the initialization of this$<n> before
calling $finit$.
(resolve_qualified_expression_name): Build an access to `decl' if
necessary.
2000-07-31 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse-scan.y (curent_class): Non longer const.
(inner_qualifier, inner_qualifier_length): Deleted.
(current_class_length): New global.
(bracket_count): Fixed typo in leading comment.
(anonymous_count): New global.
(class_instance_creation_expression:): Handle anonymous classes.
(anonymous_class_creation:): New rule.
(push_class_context): Rewritten.
(pop_class_context): Likewise.
(INNER_QUALIFIER): Macro deleted.
(report_class_declaration): call `push_class_context' when
entering the function. `fprintf' format modified not to use
INNER_QUALIFIER.
(report_class_declaration): Assign `package_name' and
`current_class' to NULL separatly.
2000-07-31 Alexandre Petit-Bianco <apbianco@cygnus.com>
* expr.c (build_invokeinterface): Call layout_class_methods on
target interface.
(http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00339.html)
From-SVN: r35560
2000-07-27 Tom Tromey <tromey@cygnus.com>
* parse.y (patch_method_invocation): Don't reverse the argument
list when dealing with anonymous class constructors. Fixed typo in
comment.
2000-07-27 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (build_alias_initializer_parameter_list): Reverse
crafted list when building aliases for anonymous class
constructors.
(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg01146.html)
From-SVN: r35303
2000-07-25 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (jdep_resolve_class): Don't bother checking potential
innerclass access if `decl' is NULL.
(find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
WFL.
2000-07-24 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (find_as_inner_class): Removed 2000-07-19 patches.
* jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
outside the `if' statement, alias to innerclass removed, `decl'
used to mark the class complete.
From-SVN: r35287
2000-07-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (simple_name:): Reject `$' in type names.
(resolve_type_during_patch): Use `type' as a second
argument to resolve_no_layout. Fixes gcj/257.
(Fixes gcj/257: http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00869.html)
From-SVN: r35182
2000-07-21 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
or its first operand can be error marks.
2000-07-20 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
* parse.y (method_header): Likewise.
2000-07-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (find_as_inner_class): Handle the case where the
enclosing context of an innerclass has been loaded as bytecode.
(Side gcj/225 bug fix and some cleanup:
http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00832.html)
From-SVN: r35176
2000-07-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-write.c (generate_classfile): Properly install the
ConstantValue attribute and the initial value constant pool index
on string constants.
* parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
class files.
(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00233.html)
From-SVN: r34921
2000-07-06 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
construct.
* parse.y (find_as_inner_class): Fixed typo.
(do_resolve_class): Explore enclosing contexts when searching for
innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
(check_inner_class_access): Check `decl' which can be null in case
of previous errors.
2000-07-05 Alexandre Petit-Bianco <apbianco@cygnus.com>
* java-tree.h (java_debug_context): Declared `extern.'
(safe_layout_class): Likewise.
* parse.y (resolve_field_access): Field must be `static' in order
to be replaced by its initial value. Added comments.
(find_applicable_accessible_methods_list): Fixed typo.
(find_most_specific_methods_list): Methods found in innerclasses
take over methods founds in the enclosing contexts.
(java_complete_tree): Loosen restrictions on the type of DECLs
that can be replaced by their initialization values.
(valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p.'
(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00184.html)
From-SVN: r34895
2000-06-09 Bryce McKinlay <bryce@albatross.co.nz>
* parse.y (find_applicable_accessible_methods_list): Use a hashtable
to track searched classes, and do not search the same class more than
once. Call find_applicable_accessible_methods_list on immediate
superclass, instead of search_applicable_method_list on all ancestors.
Fix for PR gcj/238.
(Fix to the Java PR #238:
http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00206.html)
From-SVN: r34727
2000-06-23 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (set_super_info): Handle ACC_PRIVATE for (inner)
classes.
* java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
(struct lang_type): New field `pic.'
(CLASS_PRIVATE): New macro.
* parse.y (check_inner_class_access): New function.
(jdep_resolve_class): Call it.
2000-06-09 Bryce McKinlay <bryce@albatross.co.nz>
* parse.y (register_fields): Permit static fields in inner classes
if they are final. Fix for PR gcj/255.
(These patches are fixes to the PR #224 and #255:
http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00158.htmlhttp://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00287.html)
From-SVN: r34725
2000-06-25 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (do_resolve_class): Minor optimiztion in the package
list search. Removed unecessary test and return statement.
(valid_ref_assignconv_cast_p): Order of arguments to
enclosing_context_p fixed.
From-SVN: r34705
2000-06-21 Alexandre Petit-Bianco <apbianco@cygnus.com>
* except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
2000-06-20 Alexandre Petit-Bianco <apbianco@cygnus.com>
* check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
Java specific checks.
* expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
screened by DECL_P.
* java-tree.def (CASE_EXPR): Marked 'e'.
(DEFAULT_EXPR): Likewise.
* jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
screened by DECL_P.
* jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
Java specific checks.
(generate_bytecode_insns): Test try_block for BLOCK before using
BLOCK_EXPR_BODY.
* parse.y (build_wfl_wrap): Added `location' argument. Set
EXPR_WFL_LINECOL accordingly.
(dim_expr:): Wrap constants with WFLs.
(method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
(resolve_package): Check for `stmt' not being a BLOCK before
building a debuggable statement with it.
(make_qualified_primary): Added extra parameter to build_wfl_wrap
invocation.
(resolve_field_access): Make sure `decl' is a DECL before treating
it as such.
(maybe_build_primttype_type_ref): Make sure `wfl''s node is an
IDENTIFIER_NODE before treating it as such.
(patch_new_array_init): Make sure `elt' is a TREE_LIST before
treating it as such.
(find_applicable_accessible_methods_list): CLASS_INTERFACE macro
to be applied only on non array types.
2000-06-16 Per Bothner <per@bothner.com>
* java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN): Don't
define in terms of DECL_RESULT, as that fails when --enable-checking.
2000-06-06 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
* parse.y (find_in_imports): Returned type changed to void,
leading comment fixed.
(register_package): New function.
(qualify_and_find): Likewise.
(package_declaration:): Use `register_package'.
(single_type_import_declaration:): Removed local variable
`node'. Added missing `;' for consistency.
(type_import_on_demand_declaration:): Use `chainon' to link new
entries.
(lookup_field_wrapper): Lookup local variables defined in outer
contexts first.
(java_complete_class): Don't reverse the list of imported on demand.
(do_resolve_class): Reorganized. Removed local variable
`original_name'. Call `qualify_and_find' with the current package
name, invoke `find_in_imports_on_demand' right after. Call
`qualify_and_find' with the packages we've seen so far. Fixed
operations numbering in comments.
(java_expand_class): Don't reverse `package_list'.
(find_most_specific_methods_list): New local variables `abstract'
and `candidates'. Use them to pick the right method.
(Fixes for the ENABLE_TREE_CHECKING Java run-time build problem:
http://gcc.gnu.org/ml/gcc-patches/2000-06/msg00551.html)
From-SVN: r34642
2000-05-02 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (resolve_field_access): Call the appropriate <clinit>
before accessing the length of a static array. Craft a decl for
the field while its time.
(Fixes the PR #129:
http://sourceware.cygnus.com/ml/java-prs/2000-q1/msg00013.html)
From-SVN: r34340
2000-04-24 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (common_enclosing_context_p): New function.
* java-tree.h (common_enclosing_context_p): Added prototype.
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
classes sharing an outer context with the current instance.
* parse.y (build_access_to_thisn): Fixed leading comment.
(verify_constructor_super): New local `supper_inner'. Skip
enclosing context argument in the case of inner class constructors.
(patch_method_invocation): Insert proper context as second
parameter to pure inner class constructor super invocations.
This fixes the Java PR #177.
From-SVN: r34332
2000-04-17 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (maybe_yank_clinit): New function.
(maybe_generate_pre_expand_clinit): Always link <clinit> at the
end of the list of methods belonging to a class.
(java_complete_expand_method): Check whether <clinit> is really
necessary and expand it accordingly.
From-SVN: r34329
2000-05-31 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (resolve_field_access): Complete the DECL_INITIAL tree
before using it as the accessed field.
From-SVN: r34320
2000-05-26 Zack Weinberg <zack@wolery.cumb.org>
* java/parse.y (find_applicable_accessible_methods_list):
Don't add an uninitialized value to the list.
From-SVN: r34196
* parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
when trying to see if field's class should be initialized. Always
initialize field's declaring class, not qualified class.
For PR gcj/162.
From-SVN: r34182
2000-04-17 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
processed by the method's switch statement.
From-SVN: r34024
* class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
on native function.
* jcf-parse.c (parse_class_file): Call build_jni_stub for native
JNI methods.
* expr.c (build_jni_stub): New function.
* lang-specs.h: -fjni and -femit-class-file are incompatible.
* parse.c: Rebuilt.
* parse.y (java_complete_expand_methods): Expand a native method
and call build_jni_stub if -fjni given.
* lang-options.h: Document -fjni.
* lang.c (flag_jni): New global.
(lang_f_options): Added `jni' entry.
* java-tree.h (soft_lookupjnimethod_node,
soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
Declare.
(flag_jni): Declare.
(build_jni_stub): Declare.
(struct lang_decl): Added `native' flag.
(METHOD_NATIVE): Redefined to use `native' field of lang specific
structure.
* decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
soft_jnipopsystemframe_node): New globals.
(init_decl_processing): Set them. _Jv_InitClass only takes one
argument.
* java-tree.def: Put into `C' mode.
From-SVN: r33615
2000-04-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (lookup_field_wrapper): Search for final local aliases.
(resolve_expression_name): Let lookup_field_wrapper search for
final local aliases. Force the value of `name' if one is found.
(qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
an expression name. Fixed comments.
From-SVN: r33400
* parse.y (not_accessible_p): Use member's class, not current
class, when doing inheritance check for protected reference.
Fixes PR gcj/124.
From-SVN: r33315
2000-04-18 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
2000-04-14 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (java_expand_classes): Reverse the package list once.
(java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
reduction.
(patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
the `==' and `!=' operators.
From-SVN: r33240
Fix for PR gcj/140:
* parse.y (check_final_assignment): Recognize assignments to the
`length' field of an array when generating class files.
From-SVN: r32960
2000-04-05 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
made global.
(java_hash_compare_tree_node): Renamed from `decl_compare, made
global.
(add_method_1): Use `java_hash_hash_tree_node' and
`java_hash_compare_tree_node'.
* java-tree.h: (java_hash_hash_tree_node): Prototyped.
(java_hash_compare_tree_node): Likewise.
* parse.y (find_applicable_accessible_methods_list): Create,
delete and use a hash table to remember already searched interfaces.
From-SVN: r32947
2000-03-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (check_abstract_method_definitions): New local
`end_type_reached'. Make sure we also consider `end_type'.
(java_check_abstract_method_definitions): Make sure we also
eventually consider `java.lang.Object'.
(maybe_use_access_method): Don't use access method if not a pure
inner class or if the method's context is right.
(find_applicable_accessible_methods_list): New static
`object_done'. Don't search abstract classes as interfaces. Fixed
indentation. Fixed the `java.lang.Object' only search. Search class'
interface(s) first, fully search enclosing contexts.
(find_most_specific_methods_list): Pick closest candidates when
they're all abstract.
2000-03-17 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (check_method_types_complete): New function.
(create_class): Reset anonymous class counter only when seeing an
non inner classe.
(java_complete_class): JDEP_METHOD: Don't recompute signature
if incomplete.
2000-03-17 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (build_static_ref): Fixed indentation in comment.
* java-tree.def (TRY_EXPR): Fixed typo in name.
(CLASS_LITERAL): Likewise.
* java-tree.h: (TYPE_DOT_CLASS): New macro.
(struct lang_type): New field `dot_class'.
* jcf-write.c (generate_bytecode_insns): Fixed error message.
(generate_classfile): Method `class$' is synthetic.
* parse.y (build_do_class_method): New function.
(build_dot_class_method_invocation): Likewise.
(java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
(resolve_qualified_expression_name): Handle CLASS_LITERAL.
(qualify_ambiguous_name): Likewise.
(patch_incomplete_class_ref): Invoke synthetic method if necessary.
(build_try_statement): Fixed leading comment.
2000-03-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
classes.
* parse.y (patch_method_invocation): Handle anonymous classes
creation in static context.
2000-03-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
* parse.y (resolve_qualified_expression_name): Use it.
(patch_method_invocation): Likewise.
2000-03-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (register_incomplete_type): JDEP_ENCLOSING set
depending on the type of dependency which dictates what the
current class is.
(unresolved_type_p): Resolved types limited to the current class.
(For details, see: http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00790.html)
From-SVN: r32701
2000-03-13 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (resolve_package): Set `next' once a type name has been
progressively discovered.
(resolve_qualified_expression_name): Propagate resolution only if
there are remaining qualifiers. Take into account `q' might have
been cleared after re-qualification.
* parse.y (patch_method_invocation): New local `resolved'.
Section dealing with qualified expression rewritten to use
resolve_field_access.
From-SVN: r32520
2000-02-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (check_final_assignment): Extended to process
COMPOUND_EXPR.
(patch_assignment): Have check_final_assignment called only once.
(This fixes the Java PR #94:
http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00125.html)
From-SVN: r32396
* tree.h (INT_CST_LT, INT_CST_LT_UNSIGNED): Remove unneeded casts.
(struct tree_int_cst): int_cst_low is now unsigned HOST_WIDE_INT.
(attribute_hash_list, type_hash_canon): hashcode is now unsigned.
(type_hash_lookup, type_hash_add, type_hash_list): Likewise.
(min_precision): Result is unsignd.
(add_double, neg_double, mul_double): Low word is unsigned.
(lshift_double, rshift_double, lrotate_double): Likewise.
(rrotate_double, div_and_round_double): Likewise.
(tree_floor_log2, compare_tree_int): New functions.
(preserve_rtl_expr_temps): New declaration.
* c-common.c (declare_hidden_char_array): Use compare_tree_int.
(decl_attributes): Use tree_log2 to find alignment.
Check for TREE_INT_CST_HIGH for format args.
(min_precision): Now unsigned.
Use tree_floor_log2.
(truthvalue_conversion): Delete long-disabled code.
* c-decl.c (finish_struct): Clean up tests on field width.
(finish_function): Use compare_tree_int.
* c-pragma.c (handle_pragma_token): Use tree_log2 for alignment.
* c-typeck.c (comptypes): Use tree_int_cst_equal.
(default_conversion, digest_init): Use compare_tree_int.
(build_binary_op): Use integer_all_onesp and compare_tree_int.
Fix type errors in forming masks.
* calls.c (initialize_argument_information): Use compare_tree_int.
* dbxout.c (dbxout_type): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
* except.c (expand_eh_region_start_tree): Use compare_tree_int.
* expr.c (is_zeros_p, case INTEGER_CST): Use integer_zerop.
(store_field): Use compare_tree_int.
(expand_expr, case CONSTRUCTOR): Use TYPE_SIZE_UNIT.
(expand_expr, case ARRAY_REF): Use compare_tree_int.
(do_jump, case BIT_AND_EXPR): Use tree_floor_log2.
(do_store_flag): Use compare_tree_int.
* fold-const.c (encode, decode): Low part is always unsigned.
(force_fit_type, add_double, neg_double, mul_double): Likewise.
(lshift_double, rshift_double, lrotate_double): Likewise.
(rrotate_double, div_and_round_double, int_const_binop): Likewise.
(fold_convert): Use compare_tree_int.
(operand_equal_p, case INTEGER_CST): Use tree_int_cst_equal.
(invert_truthvalue, case INTEGER_CST): Likewise.
(fold): Use compare_tree_int; add casts for unsigned TREE_INT_CST_LOW.
* mkdeps.c (deps_dummy_targets): Make I unsigned.
* rtl.h (add_double, neg_double, mul_double): Low words are unsigned.
(lshift_double, rshift_double, lrotate_double, rrotate_double):
Likewise.
* stmt.c (expand_decl): Use compare_tree_int and mode_for_size_tree.
(expand_end_case): Use compare_tree_int.
(estimate_case_costs): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
* stor-layout.c (mode_for_size_tree): Use compare_tree_int.
(layout_decl): Likewise.
(layout_record, layout_union): Make sizes unsigned.
(layout_type, case VOID_TYPE): TYPE_SIZE must be bitsizetype.
(layout_type, case QUAL_UNION_TYPE): Use compare_tree_int.
* tree.c (struct type_hash): hashcode is unsigned.
(build_type_attribute_variant, type_hash_list): Likewise.
(type_hash_lookup, type_hash_add, type_hash_canon): Likewise.
(attribute_hash_list, build_array_type, build_method_type): Likewise.
(build_complex_type): Likewise.
(real_value_from_int_cst): Remove unneeded casts.
(integer_all_onesp): Add casts.
(tree_floor_log2, compare_tree_int): New functions.
(build_index_type): Use tree_int_cst_sgn.
* varasm.c (assemble_variable): Use compare_tree_int.
* ch/actions.c (chill_convert_for_assignment): INDEX is unsigned
HOST_WIDE_INT.
* ch/ch-tree.h (DECL_NESTING_LEVEL): Use TREE_INT_CST_HIGH
since unsigned.
* ch/except.c (chill_handle_on_labels): ALTERNATIVE is unsigned.
Use compare_tree_int.
(expand_goto_except_cleanup): Likewise.
* cp/class.c (dfs_modify_vtables): I is now unsigned.
(check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
(build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
* cp/error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
* cp/init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
* cp/method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
* cp/typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
Call integer_all_onesp.
* cp/typeck2.c (process_init_constructor): Use compare_tree_int.
* f/com.c (ffecom_f2c_set_lio_code_): Use compare_tree_int.
(ffecom_sym_transform_, ffecom_transform_common_): Likewise.
(ffecom_transform_equiv_): Likewise.
* java/decl.c (emit_init_test_initialization): Mark KEY as unused.
* java/expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
(build_anewarray): Likewise.
* java/parse.y (patch_newarray): Likewise.
* java/parse.c: Regenerated.
From-SVN: r32383
2000-03-06 Bryce McKinlay <bryce@albatross.co.nz>
* decl.c (init_decl_processing): Added new class fields `depth',
`ancestors', and `idt' to class_type_node. Use
_Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
* class.c (make_class_data): Push initial values for new fields.
* java-tree.h: Updated prototype for `build_invokeinterface'.
* expr.c (build_invokeinterface): Changed parameters to accept
`method' tree. Calculate index of `method' in its declaring
interface. Build call to _Jv_LookupInterfaceMethodIdx.
(expand_invoke): Call `build_invokeinterface' with new parameters.
* parse.y (patch_invoke): Call `build_invokeinterface' with new
parameters.
(This is Bryce McKinlay's implementation of the interfaces
constant-time dispatch and type checking techniques designed by Per
Bothner.)
From-SVN: r32381
2000-03-06 Bryce McKinlay <bryce@albatross.co.nz>
* typeck.c (lookup_do): Search superinterfaces first
when looking up an interface method. From Godmar Back
<gback@cs.utah.edu>
2000-03-02 Alexandre Petit-Bianco <apbianco@cygnus.com>
* java-tree.h (lookup_argument_method2): Declared.
(safe_layout_class): Prototype moved from parse.h.
* parse.h (safe_layout_class): Prototype moved to java-tree.h.
* parse.y (java_check_regular_methods): Local `super_class' gone.
Call lookup_argument_method2 instead of lookup_argument_method.
Perform modifier match for methods found declared in implemented
interfaces. Fixed indentation problem. Overriding/hiding error
report to take place only for methods found in classes.
* typeck.c (lookup_argument_method): Changed leading
comment. Re-written by calling lookup_do.
(lookup_argument_method2): New function.
(lookup_java_method): Re-written by calling lookup_do.
(lookup_do): New function.
From-SVN: r32376
Fri Feb 25 18:00:37 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (resolve_expression_name): Use `orig' as a second
argument to resolve_field_access.
(resolve_field_access): Removed unecessary code when dealing with
static fields.
From-SVN: r32158
2000-01-29 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
error handling/recovery.
* java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
Wed Jan 12 20:20:11 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-write.c (generate_bytecode_insns): binop: Change the type of
the shift value to int. Fixed typo in comment.
From-SVN: r31695
* parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
concatenation.
(OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
* parse.y (register_fields): Don't pass a format specifier to
OBSOLETE_MODIFIER_WARNING.
(check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
specifier.
(check_modifiers): Change function into a macro.
(check_class_interface_creation): Pass a literal format string.
From-SVN: r31614
2000-01-16 Anthony Green <green@cygnus.com>
* parse.y (build_string_concatenation): Only use
StringBuffer(String) shortcut if String arg is constant.
From-SVN: r31450
Thu Jan 6 00:54:10 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-write.c (generate_byecode_conditional): Fixed indentation in
method invocation and typo in conditional expression.
(generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
the appropriate NOTE_POP.
* parse.y (patch_binop): Shift value mask to feature the right
type.
(This is a fix for the PR #122:
http://sourceware.cygnus.com/ml/java-prs/2000-q1/msg00000.html)
From-SVN: r31277
Fri Dec 24 00:25:29 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* Makefile.in (LIBDEPS): Added gcc's errors.o
(../jcf-dump$(exeext):): Link with gcc's errors.o
(../gcjh$(exeext):): Likewise.
* expr.c (expand_java_NEW): Layout the entire target type instead of
laying out its methods only.
(lookup_field): Layout the class after having loaded it.
* java-tree.h (java_debug_context): Declared.
* jcf-io.c (toplev.h): Included.
(find_class): Removed assignment to jcf's outofsynch
field. Force source file to be read if newer than its matching
class file. Tweaked debug messages.
* jcf-parse.c (jcf_out_of_synch): Deleted.
(read_class): Call to jcf_out_of_synch removed.
* jcf.h (typedef struct JCF): Field `outofsynch' deleted.
(jcf_out_of_synch): Prototype deleted.
* parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
`deprecated' and `class_err': integer turned into bit fields.
New bit fields `saved_data_ctx' and `saved_data'. Fixed comments.
* parse.y (package_list): New global.
(package_declaration:): Record newly parsed package name.
(extra_ctxp_pushed_p): Static global deleted.
(java_parser_context_save_global): Create buffer context for the
purpose of saving globals, if necessary.
(java_parser_context_restore_global): Pop context pushed for the
purpose of saving globals, if necessary.
(java_debug_context_do): New prototype and function.
(java_debug_context): Likewise.
(do_resolve_class): Use already parsed package names to qualify
and lookup class candidate.
(java_pre_expand_clinit): Removed unnecessary local variable.
From-SVN: r31261
* class.c (assume_compiled, assume_compiled_node): Add static
prototype.
(add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
* jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
* jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
* parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
to `__modifier' to avoid stringifying it.
* parse.y (verify_constructor_circularity): Don't call a variadic
function with a non-literal format string.
(java_check_abstract_methods): Move unreachable code inside
`continue' statement.
(lookup_method_invoke): Call xstrdup, not strdup.
* expr.c (expand_java_field_op): Avoid the use of ANSI string
concatenation.
* jcf-parse.c (yyparse): Likewise.
* jv-scan.c (main): Likewise.
From-SVN: r31148
1999-12-14 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (class_depth): Return -1 if the class doesn't load
properly.
* expr.c (can_widen_reference_to): Check for errors during depth
computation and return 0 accordingly.
* jcf-parse.c (parse_source_file): Call java_fix_constructors to
create default constructors and add an other error check.
* parse.h (java_fix_constructors): Prototyped.
* parse.y (java_pre_expand_clinit): Likewise.
(build_super_invocation): Re-prototyped to feature one argument.
(java_check_circular_reference): Directly use `current'.
(java_fix_constructors): New function.
(java_check_regular_methods): Don't create default constructors
here, but abort if none were found.
(java_complete_expand_methods): Pre-process <clinit> calling
java_pre_expand_clinit.
(java_pre_expand_clinit): New function.
(fix_constructors): build_super_invocation invoked with the
current method declaration as an argument.
(build_super_invocation): Use the context of the processed method
decl argument instead of current_class.
* typeck.c (lookup_java_method): Take WFLs in method names into
account.
From-SVN: r31144
Fri Dec 10 21:53:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (java_complete_lhs): Force convertion of array
dimensions to int_type_node, that's what runtime's ABI expects.
(This patch is a fix for the PR #79:
http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00069.html)
From-SVN: r30881
Tue Nov 30 12:28:34 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* jcf-write.c (generate_byecode_insns): Fixed indentation for
COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
* parse.y (patch_assignment): Removed bogus final class test on
lhs when checking on whether to emit an ArrayStoreException runtime
check.
* expr.c (expand_java_arraystore): Likewise.
From-SVN: r30806
Thu Nov 11 01:57:14 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (lookup_method_invoke): Use lang_printable_name to
reliably build the type name during error report. Fixes PR gcj/97.
From-SVN: r30739
Tue Nov 23 10:55:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
in case of error. Error message tuned.
This fixes a catch clause error handling reported on the java-discuss
mailing list:
http://sourceware.cygnus.com/ml/java-discuss/1999-q4/msg00358.html
From-SVN: r30710