Jan Hubicka [Sat, 24 Mar 2001 22:18:11 +0000 (23:18 +0100)]
i386.md (cmpdi): Fix operand predicates.
* i386.md (cmpdi): Fix operand predicates.
(cmpdi_ccno_1_rex64, cmpdi_minus_1_rex64, cmpdi_1_rex64,
cmpdi_1_insn_rex64): New patterns.
(adddi3): Turn to expander.
(adddi3_1, adddi3_carry_rex64, adddi3_cc_rex64): New patterns.
(addsi3_carry_zext): New pattern.
(adddi_?_rex64): New patterns and splitters.
(addsi_?_zext): New patterns.
(subsi3_carry_zext): New pattern.
(subdi_?_rex64): New patterns and splitters.
(iorsi_?_zext): New patterns.
(iordi_?_rex64): New patterns and splitters.
(iorsi_?_zext): New patterns.
(iorsi_?_zext_imm): New patterns.
(xorsi_?_zext): New patterns.
(xordi_?_rex64): New patterns and splitters.
(xorsi_?_zext): New patterns.
(negdi*): New patterns.
(one_cmpldi*): Likewise.
(one_cmplsi*_zext, negsi*_zext): Likewise.
(testqi_ext_3_rex64): New pattern.
Per Bothner [Sat, 24 Mar 2001 01:13:30 +0000 (17:13 -0800)]
re PR java/1208 (Gcj can't compile a class file it generates.)
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.
Per Bothner [Sat, 24 Mar 2001 00:59:57 +0000 (16:59 -0800)]
natDouble.cc (parseDouble): Cannot use errno to check for errors...
* java/lang/natDouble.cc (parseDouble): Cannot use errno to
check for errors, since we don't want to throw exception on
overflow/underflow. Instead, trim whitespace, and then check that
_strtod_r uses up all the rest of the string.
Per Bothner [Sat, 24 Mar 2001 00:21:24 +0000 (16:21 -0800)]
natClass.cc (_Jv_IsAssignableFrom): Checking the ancestors array is invalid for interfaces...
* java/lang/natClass.cc (_Jv_IsAssignableFrom): Checking the
ancestors array is invalid for interfaces, so do that *after*
check that the target type is not an interface.
* gcj.texi (Input Options): documented the check for attribute
`gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
* java-tree.h (flag_force_classes_archive_check): Declared extern.
* jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
(jcf_parse): Check for the right classes archive if necessary.
* jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
(jcf_parse_fields): Fixed indentation.
* jcf-write.c (append_gcj_attribute): New function.
(generate_classfile): Compute the attribute count, invoke
`append_gcj_attribute'.
* jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
turned into bit fields. New bit field `right_zip.'
(JCF_ZERO): Set `right_zip' to zero.
* lang-options.h (-fforce-classes-archive-check): Added flag.
* lang.c (flag_force_classes_archive_check): New flag.
(lang_f_options): New entry `force-classes-archive-check.'
Fixes PR java/1213.
Jakub Jelinek [Fri, 23 Mar 2001 12:04:11 +0000 (13:04 +0100)]
decl.c (local_names): Define.
* decl.c (local_names): Define.
(push_local_name): New.
(grok_reference_init): Return init if initializing static reference
variable with non-constant instead of emitting it.
Move expand_static_init call to cp_finish_decl.
(layout_var_decl): Call push_local_name.
(maybe_commonize_var): Allow inlining functions even if they have
static local variables, use comdat_linkage for them if flag_weak.
(check_initializer): Call obscure_complex_init if
grok_reference_init returned non-zero.
(save_function_data): Clear x_local_names.
(pop_cp_function_context): Free x_local_names.
(mark_inlined_fns): Remove.
(mark_lang_function): Mark x_local_names.
(lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
Mark inlined_fns as tree, remove call to mark_inlined_fns.
* class.c (alter_access): Ensure DECL_ACCESS is never set if
DECL_DISCRIMINATOR_P.
* cp-tree.h (cp_language_function): Add x_local_names.
(lang_decl_flags): Add discriminator into u2.
(lang_decl_inlined_fns): Remove.
(lang_decl): inlined_fns is now a TREE_VEC.
(DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
* optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
TREE_VEC, not a custom structure.
(optimize_function): Likewise.
* mangle.c (discriminator_for_local_entity): Discriminate among
VAR_DECL local entities.
* search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
is not valid.
Bryce McKinlay [Fri, 23 Mar 2001 05:18:16 +0000 (05:18 +0000)]
re PR libgcj/1736 ([irix 6.5] Cannot create libgcj - Arg list too long)
Fix for PR libgcj/1736. Thanks to Robert Boehne and Alexandre Oliva
for libtool hacking.
* Makefile.am (libgcj.la): New explicit rule. Echo the list of objects
to a temporary file, then invoke libtool with the -objectlist
paramater.
(libgcjx.la): Likewise.
* Makefile.in: Rebuilt.
Add support for Java interface method calls.
* cp-tree.h (struct lang_type): Add java_interface flag.
(TYPE_JAVA_INTERFACE): New macro.
* tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
by setting TYPE_JAVA_INTERFACE.
* call.c (java_iface_lookup_fn): New static.
(build_over_call): If calling a method declared in a
TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
expression which resolves the function address.
(build_java_interface_fn_ref): New function.
Jan Hubicka [Thu, 22 Mar 2001 21:17:42 +0000 (22:17 +0100)]
i386.md (zero_extendsidi2_32): Break out from ...
* i386.md (zero_extendsidi2_32): Break out from ...
(zero_extendsidi2): ... here ; turn to expander.
(zero_extendsidi2_rex64): New.
(extendsidi2_32): Break out from ...
(extendsidi2): ... here ; turn to expander.
(extendsidi2_rex64): New.
(zero_extendhidi2, zero_extendqidi2, extendhidi2, extendqidi2): New.
(trunc?f?f splitters): Add 64bit versions.
* genemit.c, genopinit.c, genoutput.c: Don't include insn-codes.h
or insn-flags.h in the generated code.
* genflags.c (gen_proto): Use "struct rtx_def *" instead of "rtx".
(main): Forward declare struct rtx_def.
Alexandre Oliva [Thu, 22 Mar 2001 18:13:39 +0000 (18:13 +0000)]
ltcf-c.sh: Clear ac_cv_prog_cc_pic for DJGPP.
Re-installed:
2001-01-02 Laurynas Biveinis <lauras@softhome.net>
* ltcf-c.sh: Clear ac_cv_prog_cc_pic for DJGPP. Do not add
'-DPIC' to ac_cv_prog_cc_pic for DJGPP.
* ltcf-cxx.sh: Likewise.
* ltcf-gcj.sh: Likewise.
Jakub Jelinek [Thu, 22 Mar 2001 17:00:28 +0000 (18:00 +0100)]
method.c (do_build_assign_ref): Don't use build_modify_expr for anonymous aggregates...
* method.c (do_build_assign_ref): Don't use build_modify_expr for
anonymous aggregates, since they don't have assignment operator
method.
* decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
assignment operators for anonymous structure fields.
Bryce McKinlay [Thu, 22 Mar 2001 06:37:16 +0000 (06:37 +0000)]
Method.java (getExceptionTypes): Call getType() to initialize if exception_types is null.
* java/lang/reflect/Method.java (getExceptionTypes): Call getType() to
initialize if exception_types is null.
* java/lang/reflect/Constructor.java: Likewise.
* java/lang/reflect/natConstructor.cc (getType): Initialize
exception_types to an empty Object array.
Jason Merrill [Thu, 22 Mar 2001 00:55:13 +0000 (19:55 -0500)]
pt.c (instantiate_decl): Abort if we see a member constant instantiation that doesn't already have its...
* pt.c (instantiate_decl): Abort if we see a member constant
instantiation that doesn't already have its initializer.
Downgrade explicit instantiation without definition to pedwarn.
Jason Merrill [Thu, 22 Mar 2001 00:53:50 +0000 (19:53 -0500)]
collect2.c (is_ctor_dtor): Always use '_' in the file fn names, not '.' or '$'.
* collect2.c (is_ctor_dtor): Always use '_' in the file fn names,
not '.' or '$'.
* tree.c (FILE_FUNCTION_FORMAT): Likewise.
* varasm.c (CHKR_PREFIX): Likewise.
* class.c (layout_class): Fixed push_super_field's second
argument. Fixes PR java/2333.
(jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
too early to lay innerclasses out.
Jim Blandy [Wed, 21 Mar 2001 20:01:40 +0000 (20:01 +0000)]
cp-demangle.c (struct demangling_def): New fields: is_constructor and is_destructor.
* cp-demangle.c (struct demangling_def): New fields:
is_constructor and is_destructor.
(demangling_new): Initialize them.
(demangle_ctor_dtor_name): Set them, if we detect a constructor
or destructor.
(demangle_v3_with_details, is_gnu_v3_mangled_ctor,
is_gnu_v3_mangled_dtor): New functions.
Richard Kenner [Wed, 21 Mar 2001 19:43:36 +0000 (14:43 -0500)]
sdbout.c: #include ggc.h.
* sdbout.c: #include ggc.h.
(sdbout_init): Move to end of file.
Call ggc_add_tree_root for anonymous_types.
(sdbout_symbol): Use DECL_NAME for local, not DECL_ASSEMBLER_NAME.
(sdbout_one_type): Use DECL_NAME for field name.
* Makefile.in (sdbout.o): Show includes ggc.h.
Jan Hubicka [Wed, 21 Mar 2001 19:35:48 +0000 (20:35 +0100)]
i386.c (override_options): Default ix86_regparm to REGPARM_MAX.
* i386.c (override_options): Default ix86_regparm to REGPARM_MAX.
(override_options): Use properlimits for preferred_stack_boundary.
(ix86_valid_type_attribute_p): Disable stdcall and cdecl attributes
on x86_64.
(ext_register_operand): Accept DImode.
(load_pic_register): Abort on 64bit.
(gen_push): Use Pmode instead of SImode.
(ix86_save_reg): Pic reg is never used on 64bit.
(ix86_expand_prologue): Likewise.
(ix86_emit_save_regs): Use Pmode instead of SImode.
(legitimate_address_p): Check displacement for 64bit.
(print_operand): Avoid outputting of (%rip) on 64bit.
(print_operand_address): Output (%rip) where possible.
(split_di): Abort on 64bit registers.
(ix86_expand_branch): DImode comparison is simple for x86_64.
(memory_address_length): Recognize memory addresses formed using PRE/POST modify.
(ix86_data_alignment, ix86_local_alignment): Align arrays to 16 bytes for x86_64.
* i386.h (TARGET_USE_SAHF): Disable for 64bit.
Stan Shebs [Tue, 20 Mar 2001 22:01:49 +0000 (22:01 +0000)]
objc-act.c (get_static_reference): Use NULL_TREE.
* objc/objc-act.c (get_static_reference): Use NULL_TREE.
(get_object_reference): Ditto.
(error_with_ivar): Use error_with_file_and_line.
(warn_with_method): Use warning_with_file_and_line.