Mark Mitchell [Mon, 31 Jan 2000 21:00:01 +0000 (21:00 +0000)]
cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
* cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
(CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
(BINFO_PRIMARY_BINFO): New macro.
(BF_DELTA): Rename to ...
(BV_DELTA): ... this.
(BF_VCALL_INDEX): Rename to ...
(BV_VCALL_INDEX): ... this.
(BF_FN): Rename to ...
(BV_FN): ... this.
* class.c (build_vbase_path): Adjust for changes to reverse_path.
(set_rtti_entry): Rename BF_ macros to BV_ variants.
(modify_vtable_entry): Simplify.
(add_virtual_function): Rename BF_ macros to BV_ variants.
(build_vtable_initializer): Likewise.
(get_class_offset_1): Remove.
(dfs_get_class_offset): Likewise.
(get_class_offset): Likewise.
(dfs_find_final_overrider): New function.
(find_final_overrider): Likewise.
(modify_one_vtable): Remove.
(dfs_find_base): New function.
(dfs_modify_vtables): Fold modify_one_vtable in here. Use
find_final_overrider.
(modify_all_vtables): Adjust. Set BV_VCALL_INDEX on new
virtuals.
(dfs_fixup_vtable_deltas): Remove.
(override_one_vtable): Remove.
(merge_overrides): Likewise.
(layout_virtual_bases): Make sure BINFO_OFFSET is set right for
unreal chilren of virtual bases.
(finish_struct_1): Don't use merge_overrides. Don't use
dfs_fixup_vtable_deltas.
* tree.c (reverse_path): Return a TREE_LIST, not a chain of
BINFOs.
Nathan Sidwell [Mon, 31 Jan 2000 10:21:47 +0000 (10:21 +0000)]
cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
* cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
Runtime support for new-abi rtti.
* inc/typeinfo (type_info::operator!=): Define in class.
(type_info::before, type_info::name, type_info::operator==,
type_info::operator!=): Define new ABI implementations.
(type_info::is_pointer_p, type_info::is_function_p): Declare
new virtual functions.
(type_info::do_catch, type_info::do_upcast): Likewise.
Mark Mitchell [Mon, 31 Jan 2000 04:03:01 +0000 (04:03 +0000)]
class.c (build_vtable): Rename to build_primary_vtable.
* cp/class.c (build_vtable): Rename to build_primary_vtable.
(prepare_fresh_vtable): Rename to build_secondary_vtable.
(make_new_vtable): New function.
(modify_vtable_entry): Handle generation of new vtables correctly.
(modify_one_vtable): Remove unused parameter.
(dfs_fixup_vtable_deltas): Likewise.
(override_one_vtable): Use build_secondary_vtable.
(finish_struct_1): Use build_primary_vtable and
build_secondary_vtable.
Zack Weinberg [Sun, 30 Jan 2000 18:09:07 +0000 (18:09 +0000)]
cppfiles.c (find_position): Drop 'colp' argument, return the new line base.
* cppfiles.c (find_position): Drop 'colp' argument, return the
new line base.
(read_and_prescan): Adjust to match. Don't ever manipulate
line or line_base except via find_position.
Zack Weinberg [Sun, 30 Jan 2000 03:31:59 +0000 (03:31 +0000)]
cpperror.c (cpp_file_line_for_message): If 'line' is zero, just print "<command line>".
* cpperror.c (cpp_file_line_for_message): If 'line' is zero,
just print "<command line>". If 'filename' is null or an
empty string, print "<stdin>" for the filename.
* cpplib.c (do_define): Don't print the 'location of the
previous definition' message if we're still parsing the
command line.
(cpp_pedwarn_with_file_and_line): Always call
cpp_file_line_for_message.
c4x.h (INIT_TARGET_OPTABS): Add all missing local optab entries.
2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* c4x.h (INIT_TARGET_OPTABS): Add all missing local optab entries.
* c4x.c: Define the optab rtx values.
(c4x_add_gc_roots): Add the ggc roots for these optab rtx values.
(c4x_emit_libcall): Use new optab rtx values.
(c4x_emit_libcall3): Likewise.
(c4x_emit_libcall_mulhi): Likewise.
* c4x-protos.h: Add prototypes for optab rtx values and change
prototypes for above c4x_emit_libcall functions.
c4x.c (c4x_output_ascii): Restrict line length of output when TI syntax is used.
2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* c4x.c (c4x_output_ascii): Restrict line length of output when TI
syntax is used.
(c4x_function_prologue): Use regnames intead of float_reg_names when
TI syntax is used.
(c4x_function_epilogue): Likewise.
(c4x_print_operand): Likewise.
* c4x.h (HOST_WIDE_INT_PRINT_HEX): Redefine.
* c4x.md (set_high): Disable for TARGET_TI.
c4x.h (PREFERRED_RELOAD_CLASS): Change to restrict the reloading of framepointer + constant to ADDR_REGS class.
2000-01-27 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* c4x.h (PREFERRED_RELOAD_CLASS): Change to restrict the reloading
of framepointer + constant to ADDR_REGS class.
* c4x.md (addqi3, addqi3_noclobber_reload): Update.
* c4x.c (std_or_reg_operand): New function.
* c4x-protos.h (std_or_reg_operand): Prototype it.
Jason Eckhardt [Sat, 29 Jan 2000 01:41:22 +0000 (01:41 +0000)]
[multiple changes]
Fri Jan 7 19:48:04 CET 2000 Jan Hubicka <jh@suse.cz>
* sbitmap.c (sbitmap_first_set_bit, sbitmap_last_set_bit): New
function.
* sbitmap.h (sbitmap_first_set_bit, sbitmap_last_set_bit): Declare.
* basic_block.h (FLOW_LOOP_FIRST_BLOCK): New macro.
(FLOW_LOOP_LAST_BLOCK): Likewise.
2000-01-21 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* basic-block.h (struct loop): New fields 'first' and 'last'.
* flow.c (flow_loops_find): Compute loop->first and loop->last.
(flow_loops_dump): Use loop->first to check for NOTE_INSN_LOOP_BEG
and loop->last to check for NOTE_INSN_LOOP_END.
Fri Jan 28 10:57:58 2000 Jason Eckhardt <jle@cygnus.com>
* predict.c (estimate_probability): Use the new FIRST and LAST fields
of the loop descriptor rather than HEADER and LATCH. Also added
missing break statements as well making some coding style modifications
as suggested by Michael Hayes.
* flow.c (find_basic_blocks): Remove do_cleanup argument.
Break out that code ...
(cleanup_cfg): ... here.
(commit_one_edge_insertion): Detect a return instruction being
emitted to an edge. Emit a barrier following; clear fallthru.
(commit_edge_insertions): Verify CFG consistency.
* function.c (expand_function_start): Kill unused variable.
(expand_function_end): Likewise.
(thread_prologue_and_epilogue_insns): Use insert_insn_on_edge
to insert the epilogue.
* gcse.c (gcse_main): Adjust for find_basic_blocks change.
(delete_null_pointer_checks): Likewise.
* output.h: Likewise.
* reg-stack.c (reg_to_stack): Likewise.
* toplev.c (rest_of_compilation): Likewise. Run
thread_prologue_and_epilogue_insns after rebuilding the CFG.
Zack Weinberg [Thu, 27 Jan 2000 22:29:07 +0000 (22:29 +0000)]
cppinit.c (cpp_handle_option): Recognize C++ comments under -std=gnu89.
* cppinit.c (cpp_handle_option): Recognize C++ comments under
-std=gnu89.
* cpplib.c (skip_block_comment, skip_line_comment): Split code
out of...
(skip_comment) ... here. Permit C++ comments in system
headers always. Warn about C++ comments in user code under
-std=gnu89 -pedantic.
(copy_comment): Use skip_comment.
(cpp_skip_hspace, cpp_get_token): skip_comment can no longer
return EOF.
(consider_directive_while_skipping, do_else, do_endif): Call
validate_else unconditionally.
(validate_else): Check CPP_PEDANTIC here. Accept non-comment
text after the conditional in a system header.
* cpplib.h (struct cpp_buffer): Add flag
warned_cplusplus_comments.
* emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
Use unshare_all_rtl_1.
(unshare_all_rtl_again): New function.
(unshare_all_rtl_1): New function split out of unshare_all_rtl.
* function.c (purge_addressof_1): Use unshare_all_rtl_again
rather than resetting the 'used' flags ourself.
* toplev.c (rest_of_compilation): Add current_function_decl
to the unshare_all_rtl call.
* tree.h: Prototype unshare_all_rtl.
* rtl.h: Prototype unshare_all_rtl_again here.
alpha.c (alpha_emit_conditional_move): Use VOIDmode when testing for a signed comparison.
* alpha.c (alpha_emit_conditional_move): Use VOIDmode when
testing for a signed comparison.
(alpha_emit_floatuns): New.
* alpha-protos.h: Declare it.
* alpha.md (floatunsdisf2, floatunsdidf2): New.
(extendsfdf2): Tidy.
Tom Tromey [Wed, 26 Jan 2000 23:56:36 +0000 (23:56 +0000)]
method.h (JvNumMethods): Moved from Class.h.
* gcj/method.h (JvNumMethods): Moved from Class.h.
(JvGetFirstMethod): Likewise.
* java/lang/Class.h (Object): Updated decl of
_Jv_JNI_ToReflectedField.
(Object): Added _Jv_JNI_ToReflectedMethod as a friend.
* Makefile.in: Rebuilt.
* Makefile.am (java/lang/reflect/Field.h): Added `jboolean'
argument of _Jv_JNI_ToReflectedField.
(java/lang/reflect/Constructor.h): Added _Jv_JNI_ToReflectedMethod
as a friend.
(java/lang/reflect/Method.h): Likewise.
* include/jni.h (class _Jv_JNIEnv): Added `klass' member. Use
__GCJ_JNI_IMPL__.
(jweak): New typedef.
(struct JNINativeInterface): Correctly declare remaining entries.
* jni.cc: Include Class.h, ClassLoader.h.
(_Jv_JNI_FindClass): New function.
(_Jv_JNI_DefineClass): New function.
(_Jv_JNI_conversion_call): New function.
(_Jv_JNI_FindClass): Use current class loader to find class.
(_Jv_JNI_ExceptionCheck): New function.
(_Jv_JNI_FromReflectedField): Now static.
(MethodClass): New define.
(_Jv_JNI_FromReflectedMethod): New function.
(_Jv_JNI_ToReflectedMethod): Likewise.
Include Method.h.
(_Jv_JNI_IsAssignableFrom): Renamed.
(_Jv_JNI_GetStringRegion): New function.
Include StringIndexOutOfBoundsException.h.
(_Jv_JNI_GetStringUTFRegion): New function.
(_Jv_JNIFunctions): Updated for new functions.
(_Jv_JNI_GetPrimitiveArrayCritical): New function
(_Jv_JNI_ReleasePrimitiveArrayCritical): Likewise.
(_Jv_JNI_GetStringCritical): New function.
(_Jv_JNI_ReleaseStringCritical): Likewise.
(get_throwable): Removed.
(GCJ_JV_JNIENV_FRIEND): Removed.
(__GCJ_JNI_IMPL__): Define.
Include method.h.
Joern Rennecke [Wed, 26 Jan 2000 23:38:20 +0000 (23:38 +0000)]
calls.c (special_function_p): New argument fork_or_exec.
* calls.c (special_function_p): New argument fork_or_exec.
(expand_call): When profile_arc_flag is set and the function
is in the fork_or_exec group, call __bb_fork_func first.
* libgcc2.c, _bb module (__bb_fork_func): New function.
(__bb_exit_func): If fcntl F_SETLKW is available, use it to lock
output file.
* config/svr4.h (TARGET_HAS_F_SETLKW): Define.
* tree.h (special_function_p): Update prototype.
J"orn Rennecke [Wed, 26 Jan 2000 22:27:31 +0000 (22:27 +0000)]
calls.c (special_function_p): New argument fork_or_exec.
gcc:
* calls.c (special_function_p): New argument fork_or_exec.
(expand_call): When profile_arc_flag is set and the function
is in the fork_or_exec group, call __bb_fork_func first.
* libgcc2.c, _bb module (__bb_fork_func): New function.
(__bb_exit_func): If fcntl F_SETLKW is available, use it to lock
output file.
* config/svr4.h (TARGET_HAS_F_SETLKW): Define.
* tree.h (special_function_p): Update prototype.
gcc/cp:
* cp/optimize.c (calls_setjmp_r): Supply new argument
to special_function_p.
* config/sparc/sparc.c (sparc_emit_float_lib_cmp): Handle
TARGET_ARCH32 again. Handle ORDERED, UN* and LTGT comparisons
using _Qp_cmp/_Q_cmp and testing the return value.
(print_operand): Call reverse_condition_maybe_unordered if
we are handling CCFPmode or CCFPEmode.
Handle ORDERED, UN* and LTGT comparisons.
* config/sparc/sparc.md (cmptf): Use even on TARGET_ARCH32
if not TARGET_HARD_QUAD.
(seq, sne, sgt, slt, sge, sle, beq, bne, bgt, blt, bge, ble,
bunordered, bordered, bungt, bunlt, buneq, bunge, bunle, bltgt):
Call sparc_emit_float_lib_cmp even on TARGET_ARCH32.
Adjust gen_b* calls so that they reflect return comparison of
sparc_emit_float_lib_cmp.
Alexandre Oliva [Wed, 26 Jan 2000 07:57:28 +0000 (07:57 +0000)]
alpha.c (alpha_emit_xfloating_cvt): Do not assume incoming operands array is large enough for one more operand.
* config/alpha/alpha.c (alpha_emit_xfloating_cvt): Do not assume
incoming operands array is large enough for one more operand.
(alpha_emit_xfloating_arith): Likewise.
Zack Weinberg [Wed, 26 Jan 2000 07:37:30 +0000 (07:37 +0000)]
Makefile.in (machname.h): SunOS 4 sed can't handle a file with one line and no trailing newline.
* fixinc/Makefile.in (machname.h): SunOS 4 sed can't handle a
file with one line and no trailing newline.
Patch by Kaveh Ghazi <ghazi@caip.rutgers.edu>.
* fixinc/fixtests.c (machine_name_test): Fix fencepost error
checking if the match is on the line.
* fixinc/gnu-regex.c: Provide regerror not __regerror.
Tom Tromey [Wed, 26 Jan 2000 00:55:50 +0000 (00:55 +0000)]
field.h (struct _Jv_Field): Use "jshort" as type for nameIndex.
* gcj/field.h (struct _Jv_Field): Use "jshort" as type for
nameIndex. Use "jint" as type for boffset.
* java/lang/Class.h (struct _Jv_Method): Made accflags a
_Jv_ushort.
(Class): Likewise. Also changed type of method_count,
vtable_method_count, size_in_bytes, field_count,
static_field_count, interface_count.
* gcj/array.h (__JArray): Made `length' a const jsize, not an
int.
* Makefile.in (flow.o): Depend on $(EXPR_H).
* flow.c (mark_regs_live_at_end): Use hard_function_value, i.e.
duplicate the structure of diddle_return_value for keeping regs live.
Mark Mitchell [Tue, 25 Jan 2000 23:26:21 +0000 (23:26 +0000)]
cp-tree.h (vcall_offset_in_vtable_p): New macro.
* cp-tree.h (vcall_offset_in_vtable_p): New macro.
* class.c (build_vbase_offset_vtbl_entries): Fix typo in commment.
(struct vcall_offset_data_s): New type.
(dfs_vcall_offset_queue_p): New function.
(dfs_build_vcall_offset_vtbl_entries): Likewise.
(build_vcall_offset_vtbl_entries): Likewise.
(layout_vtable_decl): Likewise.
(num_vfun_entries): Likewise.
(num_extra_vtbl_entries): Add the entries for vcall offsets.
(build_vtbl_initializer): Likewise.
(dfs_finish_vtabls): Use layout_vtable_decl.
(modify_one_vtables): Always duplicate vtables under the new ABI.
(finish_struct_1): Use layout_vtable_decl.