Commit Graph

27068 Commits

Author SHA1 Message Date
Alexandre Petit-Bianco
acbedd7cc0 parse-scan.y (pop_class_context): Reset `inner_qualifier_length' when negative *before* using it as an array index.
2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
	when negative *before* using it as an array index.
	* ChangeLog: Fixed typo.

(Fixes the following bogus patch:
 http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00937.html)

From-SVN: r32793
2000-03-28 14:35:46 -08:00
Zack Weinberg
29a72a4f09 cppfiles.c (hash_IHASH): Just return i->hash.
2000-03-28  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (hash_IHASH): Just return i->hash.
	(cpp_included): Set dummy.hash using _cpp_calc_hash.  Use
	htab_find_with_hash.
	(cpp_read_file): Likewise.
	(find_include_file): Likewise.  Properly initialize
	ih->nshort.  Share ih->name and ih->nshort if possible.
	* cpphash.c (_cpp_calc_hash): New function.
	(hash_HASHNODE): Just return h->hash.
	(_cpp_lookup): Set dummy.hash using _cpp_calc_hash.  Use
	htab_find_with_hash.
	* cpphash.h: Prototype _cpp_calc_hash.
	* cppinit.c (initialize_builtins): Provide a valid hash
	to _cpp_make_hashnode, using _cpp_calc_hash.

	* cpphash.c (collect_expansion): # is not a special character
	in object-like macros.  In -traditional mode, /**/ is not
	token paste at the beginning or end of the line.
	* cpplib.c (do_include, do_import, do_include_next): If
	parse_include fails, return immediately.

From-SVN: r32792
2000-03-28 21:45:02 +00:00
Jan Hubicka
1e9d75e87b sibcall.c (indentify_call_return_value): Find last call in the chain; Allow stack adjustment after function call.
* sibcall.c (indentify_call_return_value): Find last call in the chain;
        Allow stack adjustment after function call.

From-SVN: r32791
2000-03-28 14:03:37 -07:00
Franz Sirl
8ba7768175 com.c (ffecom_decl_field): Use DECL_ALIGN for a FIELD_DECL.
* com.c (ffecom_decl_field): Use DECL_ALIGN for a FIELD_DECL.
	(ffecom_init_0): Likewise.

From-SVN: r32790
2000-03-28 20:37:45 +00:00
Zack Weinberg
93ba21a6d5 Fix thinko in original version
From-SVN: r32789
2000-03-28 20:01:13 +00:00
Jason Merrill
46406379bd arm.md (return peepholes): Update to reflect the new call insn patterns.
* config/arm/arm.md (return peepholes): Update to reflect the new
        call insn patterns.
        * config/arm/arm.c (arm_volatile_func): Also check
        current_function_nothrow.
        (output_return_instruction, output_func_prologue): Use it.
        (arm_output_epilogue, arm_expand_prologue): Likewise.

From-SVN: r32788
2000-03-28 14:42:28 -05:00
Mark Mitchell
da3d4dfa91 Put RTTI entries at negative offsets in new ABI.
* class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
	vbase offset at index -3, not -1.
	(build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
	dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
	(dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
	(build_rtti_vtbl_entries): New function.
	(set_rtti_entry): Remove.
	(build_primary_vtable): Don't use it.
	(build_secondary_vtable): Likewise.
	(start_vtable): Remove.
	(first_vfun_index): New function.
	(set_vindex): Likewise.
	(add_virtual_function): Don't call start_vtable.  Do call
	set_vindex.
	(set_primary_base): Rename parameter.
	(determine_primary_base): Likewise.
	(num_vfun_entries): Don't use skip_rtti_stuff.
	(num_extra_vtbl_entries): Include RTTI information.
	(build_vtbl_initializer): Use build_rtti_vtbl_entries.
	(skip_rtti_stuff): Remove.
	(dfs_modify_vtables): Don't use it.
	(modify_all_vtables): Don't use start_vtable.  Do use set_vindex.
	(layout_nonempty_base_or_field): Update size handling.
	(create_vtable_ptr): Tweak.
	(layout_class_type): Adjust parameter names.
	(finish_struct_1): Simplify.
	* cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
	(skip_rtti_stuff): Remove.
	(first_vfun_index): New function.
	(dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
	(dfs_vtable_path_marked_real_bases_queue_p): Remove.
	(marked_vtable_pathp): Declare.
	(unmarked_vtable_pathp): Likewise.
	* error.c (dump_expr): Use first_vfun_index to calculate vtable
	offsets.
	* rtti.c (build_headof): Look for RTTI at negative offsets.
	(get_tinfo_decl_dynamic): Likewise.
	(tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
	here.
	(create_pseudo_type_info): Do it here instead.  Adjust so that
	vptr points at first virtual function.
	* search.c (marked_vtable_pathp): Make it global.
	(unmarked_vtable_pathp): Likewise.
	(dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
	(dfs_vtable_path_marked_real_bases_queue_p): Likewise.
	(dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
	(get_pure_virtuals): Likewise.
	(expand_upcast_fixups): Likewise.
	* tree.c (debug_binfo): Likewise.
	* tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
	negative offset.

From-SVN: r32787
2000-03-28 19:27:15 +00:00
Mark Mitchell
65a0aad55d New test case
From-SVN: r32786
2000-03-28 19:24:00 +00:00
Zack Weinberg
02ff568ab9 New test cases
From-SVN: r32785
2000-03-28 19:20:29 +00:00
Tom Tromey
1f58da7fe3 gcc.c (handle_braces): In {x*...} case, break out of loop if switch is found.
* gcc.c (handle_braces): In {x*...} case, break out of loop if
	switch is found.

From-SVN: r32784
2000-03-28 18:06:15 +00:00
Richard Kenner
13eb1f7f0d expr.c (store_constructor): SIZE now signed.
* expr.c (store_constructor): SIZE now signed.
	For EXPR_SIZE, don't evaluate size; just needed if constant.
	* fold-const.c (fold): Fix a number of cases when folded tree is
	wrong type.
	* function.c (flush_addressof): Reenable.
	* tree.h (flush_addressof): Likewise.
	* toplev.c (independent_decode_option): Look at strings_processed.
	* config/alpha/alpha.h (MINIMUM_ATOMIC_ALIGNMENT): Cast to unsigned.

From-SVN: r32783
2000-03-28 12:01:49 -05:00
Jan Hubicka
5a97f7c2d7 regmove.c (struct csa_memlist): Make mem field rtx *.
* regmove.c (struct csa_memlist): Make mem field rtx *.
        (record_one_stack_ref): Accept rtx * instead of rtx as parameter.
        (try_apply_stack_adjustment): Replace whole MEM rtx.
        (combine_stack_adjustments_for_block): Update calls
        to record_one_stack_ref.

From-SVN: r32782
2000-03-28 08:41:40 -07:00
Neil Booth
04e3ec7803 2000-03-28 Neil Booth <NeilB@earthling.net>
* (cpplex.c) _cpp_read_and_prescan.  Mark end of input buffer with
	'\\' rather than a null character, so nulls are not special.  Fix
	"\\\n" handling in end-of-buffer conditions.  Use trigraph map to
	speed trigraph conversion.
        (_cpp_init_input_buffer) Initialize trigraph map.

From-SVN: r32781
2000-03-28 12:00:39 +00:00
Jeff Law
7e030e49fe Daily bump.
From-SVN: r32780
2000-03-28 01:45:06 -07:00
Alexandre Petit-Bianco
0981a85961 [multiple changes]
2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
	to 0 when it reaches -1.

2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (get_constant): Properly cast `num' during the
	invocation of `add_double call'.
	* jcf-write.c (push_long_const): Properly cast `lo' before
	comparing it to short bounds.
	* parse-scan.y (interface_declaration:): Rule re-arrange so that
	`interface_body:' is reduced after the current interface is
	pushed.

2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (inner_qualifier, inner_qualifier_length): New
	static globals.
	(push_class_context, pop_class_context): New function.
	(class_body:): Call pop_class_context.
	(interface_body:): Likewise.
	(INNER_QUALIFIER): New macro.
	(report_class_declaration): Changed output format and use
	INNER_QUALIFIER. Call push_class_context.

From-SVN: r32779
2000-03-28 00:33:45 -08:00
Alan Modra
e3c2afabd3 Alan Modra <alan@linuxcare.com.au>
* config/i386/i386.c (output_387_binary_op): Correct intel
        mode assembly output, and add spaces after commas in AT&T
        output.  Correct Unixware assembler comment.  Document input
        constraints.  Comment fp operations.  Reduce profligate buffer
        size.  Remove extraneous abort.  Localize temp var.
        (SYSV386_COMPAT): Define.  Add !SYSV386_COMPAT code.
        (output_fix_trunc): Add spaces after commas in assembly output.

From-SVN: r32778
2000-03-27 22:10:09 -08:00
Richard Henderson
161897403e Add CCZmode.
From-SVN: r32777
2000-03-27 21:58:50 -08:00
Bryce McKinlay
8e4b9c9713 Synchronized gcjh commands for java/lang/Thread.h with Makefile.in.
From-SVN: r32776
2000-03-28 05:43:44 +01:00
Bryce McKinlay
eddad87239 Forgot to commit this earlier.
From-SVN: r32775
2000-03-28 05:36:22 +01:00
Richard Kenner
28b988689d Add missing ChangeLog entry from 3/26
From-SVN: r32774
2000-03-27 21:43:58 -05:00
Bryce McKinlay
b834f1fa06 Makefile.in: New #defines and friends for Thread.h.
* Makefile.in: New #defines and friends for Thread.h.
        * posix-threads.cc: (struct starter): Remove `object'.
        (_Jv_CondWait): Use interruptable condition variables and new
        recursive mutexes. New return codes on interrupt or non-ownership
        of mutex.
        (_Jv_CondNotify): Ditto.
        (_Jv_CondNotifyAll): Ditto.
        (_Jv_ThreadInterrupt): Set thread interrupt flag directly. Interrupt
        the target thread by signaling its wait condition.
        (_Jv_ThreadInitData): Set `thread_obj' in the thread data struct,
        not the starter struct. Initialize wait_mutex and wait_cond.
        (_Jv_MutexLock): New recursive mutex implementation. Moved from
        posix-threads.h.
        (_Jv_MutexUnlock): Ditto.
        (really_start): Set info->data->thread from pthread_self() to work
        around a race condition. Destroy wait_mutex and wait_cond when run()
        returns.
        * java/lang/Thread.java: (isInterrupted_): Renamed to overloaded
        `isInterrupted(boolean)'. Clear interrupted flag if clear_flag is
        set.
        startable_flag: New private field.
        (Thread): Initialize `startable_flag'.
        (toString): Check for null thread group.
        * java/lang/natThread.cc: (struct natThread): New fields
        `join_mutex', `join_cond'. Removed fields `joiner', `next'.
        (class locker): Removed.
        (initialize_native): Initialize `join_cond' and `join_mutex'.
        (interrupt): Now just calls _Jv_ThreadInterrupt().
        (join): Simplified. Just wait on the target thread's join condition.
        (finish_): Remove join list code. Unset thread group. Signal
        potential joiners by notifying the dying threads join_cond.
        (start): Check for illegal restarts.
        * java/lang/natObject.cc: Check for return value of _Jv_CondWait and
        act appropriatly.
        * include/posix-threads.h: Remove all HAVE_RECURSIVE_MUTEX related
        #defines and #ifdefs.
        (struct _Jv_Thread_t): New fields `thread_obj', `wait_cond',
        `wait_mutex', `next'.
        (struct _Jv_ConditionVariable_t): Define as a struct instead of
        directly mapping to pthread_cond_t.
        (struct _Jv_Mutex_t): New recursive implementation.
        (_Jv_PthreadCheckMonitor): Reimplemented. Simple `owner' check.
        _Jv_HaveCondDestroy: Never define this for posix-threads.
        (_Jv_CondNotify): Remove inline implementation(s), prototype instead.
        (_Jv_CondNotifyAll): Ditto.
        (_Jv_MutexLock): Ditto.
        (_Jv_MutexUnlock): Ditto.
        (_Jv_MutexInit): Changed to reflect new mutex implementation.
        (_Jv_MutexDestroy): Ditto.
        (_Jv_CondDestroy): Removed.
        (_Jv_PthreadGetMutex): Removed.
        * include/win32-threads.h: (_Jv_CondNotify): Guess _JV_NOT_OWNER on an
        error. Add a FIXME about this.
        (_Jv_CondNotifyAll): Ditto.
        * win32-threads.cc: (_Jv_CondWait): Return 0 on a timeout. Guess
        _JV_NOT_OWNER on other errors. Add FIXME.

From-SVN: r32773
2000-03-28 03:22:24 +01:00
Stan Cox
73780b74b3 resource.h (mark_resource_type): New.
* resource.h (mark_resource_type): New.
	* resource.c (find_dead_or_set_registers, mark_target_live_regs,
	find_free_register): Use mark_resource_type.
	(mark_set_resources): Change include_delayed_effects
	to mark_resource_type.
	* reorg.c (steal_delay_list_from_target, try_merge_delay_insns,
	redundant_insn, fill_simple_delay_slots, fill_slots_from_thread):
	Use mark_resource_type.

From-SVN: r32771
2000-03-27 21:50:15 +00:00
Tom Tromey
4e2d1dbdd3 jni.cc (_Jv_JNI_PopSystemFrame): If environment has exception set, throw it.
* jni.cc (_Jv_JNI_PopSystemFrame): If environment has exception
	set, throw it.
	(call): Don't throw exception here.

From-SVN: r32770
2000-03-27 19:51:46 +00:00
Tom Tromey
5f11c81270 test_long.out: New file.
* libjava.lang/test_long.out: New file.
	* libjava.lang/test_long.java: New file.

From-SVN: r32769
2000-03-27 19:37:16 +00:00
Richard Henderson
94bb5d0c1e i386.md (call_pop_0, [...]): New.
* i386.md (call_pop_0, call_value_pop_0): New.
        (call_pop_1): Remove constraint from unused arg.  Support sibcalls.
        (call_value_pop_1): Likewise.
        (call_0, call_value_0): New.
        (call_1, call_value_1): Remove constraint from unused arg.

From-SVN: r32768
2000-03-27 11:19:14 -08:00
Nick Clifton
d630442f9d document new %{<S} command in spec strings.
From-SVN: r32767
2000-03-27 18:40:30 +00:00
Bruce Korb
814feb3893 Linuxbox has changed names...
From-SVN: r32765
2000-03-27 17:10:52 +00:00
Richard Kenner
693e30e32d * expr.c (expand_assignent): Fix typo in last change.
From-SVN: r32764
2000-03-27 09:06:18 -05:00
Jakub Jelinek
32b32c8f62 libgcc2.h (MIN_UNITS_PER_WORD): Define to UNITS_PER_WORD if not defined.
* libgcc2.h (MIN_UNITS_PER_WORD): Define to UNITS_PER_WORD
	if not defined.

From-SVN: r32763
2000-03-27 13:43:01 +02:00
Richard Kenner
aa63d24463 * libgcc2.h: Use MIN_UNITS_PER_WORD, not UNITS_PER_WORD.
From-SVN: r32762
2000-03-27 06:03:26 -05:00
Jeff Law
0aace0889a Daily bump.
From-SVN: r32761
2000-03-27 01:45:07 -07:00
Jason Merrill
208e52d998 tweak ARG_POINTER_CFA_OFFSET docs
From-SVN: r32760
2000-03-27 00:58:16 -05:00
Richard Kenner
17aec3eb3b c-convert.c (convert): Return if output or input type is ERROR_MARK.
* c-convert.c (convert): Return if output or input type is ERROR_MARK.
	* c-decl.c (duplicate_decls): Only look at DECL_BUILT_IN_NONANSI
	and DECL_INLINE if FUNCTION_DECL.
	(pushdecl, redeclaration_error_message): Likewise, for DECL_INLINE.
	(store_parm_decls): Check for type of PARM_DECL being ERROR_MARK.
	Use DECL_WEAK, not DECL_RESULT, to flag for already seen.
	(combine_parm_decls): Likewise.
	* ggc-common.c (gcc_mark_tree_children, case 'd'): Use DECL_RESULT_FLD.
	* print-tree.c (print_node): Likewise.
	Only test DECL_PACKED, DECL_INLINE, DECL_BIT_FIELD, and
	DECL_TRANSPARENT_UNION on proper decl types.
	Properly handly DECL_INCOMING_RTL and DECL_SAVED_INSNS.
	* stor-layout.c (layout_decl): Only check DECL_PACKED and
	DECL_BIT_FIELD of FIELD_DECL.
	* tree.h (DECL_RESULT_FLD): New macro.
	* cp/class.c (check_field_decl): Fix typo.
	(build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
	(check_methods): Likewise.
	(check_field_decls): Likewise.
	Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
	* cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
	Use DECL_RESULT_FLD, not DECL_RESULT.
	* cp/decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
	* cp/lex.c (identifier_type): Likewise.
	* cp/pt.c (determine_specialization, lookup_template_class): Likewise.
	(tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
	(resolve_overloaded_unification, more_specialized): Likewise.
	* cp/semantics.c (finish_member_declaration): Likewise.
	* cp/typeck.c (build_x_function_call): Likewise.

From-SVN: r32759
2000-03-26 20:26:18 -05:00
Richard Henderson
b06775f990 calls.c (expand_call): Pass parms not original exp to optimize_tail_recursion.
* calls.c (expand_call): Pass parms not original exp to
        optimize_tail_recursion.  Mind return value instead of looking
        for a barrier.
        * stmt.c (optimize_tail_recursion): Take parameter list, not entire
        call_expr.  Move checks for call_expr and current_function_decl ...
        (expand_return): ... here.

From-SVN: r32758
2000-03-26 16:50:27 -08:00
Tom Tromey
a843e0ced8 jvspec.c (jvgenmain_spec): Add %{<...}' construct for each Java-specific -f' option.
* jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
	Java-specific `-f' option.

From-SVN: r32757
2000-03-27 00:30:47 +00:00
Tom Tromey
8097c429f9 gcc.c (handle_braces): Recognize `%{<S}' construct.
* gcc.c (handle_braces): Recognize `%{<S}' construct.
	(SWITCH_OK, SWITCH_FALSE, SWITCH_IGNORE, SWITCH_LIVE): New
	defines.
	(process_command): Use them.
	(check_live_switch): Likewise.
	(give_switch): Skip ignored switches.

From-SVN: r32756
2000-03-26 23:23:01 +00:00
Jan Hubicka
751b8992ff jump.c (jump_optimize_1): Fix typo in elide optimizations for minimal jump pass test.
* jump.c (jump_optimize_1): Fix typo in elide optimizations
        for minimal jump pass test.

From-SVN: r32755
2000-03-26 14:43:59 -08:00
Tom Tromey
99444711eb [multiple changes]
2000-03-26  Tom Tromey  <tromey@cygnus.com>

	* java/lang/mprec.h: Use SIZEOF_VOID_P.
	* interpret.cc: Use SIZEOF_VOID_P.
	* include/java-cpool.h (_Jv_storeLong): Use SIZEOF_VOID_P.
	(_Jv_loadLong): Likewise.
	(_Jv_storeDouble): Likewise.
	* configure: Rebuilt.
	* configure.in: Check size of void*.

	* resolve.cc (ncode): Use FFI_PREP_RAW_CLOSURE and FFI_RAW_SIZE.

2000-03-26  Hans Boehm  <boehm@acm.org>

	* include/java-cpool.h (_Jv_storeLong, _Jv_loadLong,
	_Jv_storeDouble, _Jv_loadDouble): Define differently on 64 bit
	machine.
	* java/lang/ieeefp.h: Define __IEEE_BIG_ENDIAN or
	__IEEE_LITTLE_ENDIAN appropriately on IA64.
	* java/lang/mprec.h: Don't define Pack_32 on 64 bit machine.
	* javaprims.h (_Jv_word): Added `l' and `d' entries in 64 bit
	case.
	* resolve.cc (FFI_PREP_RAW_CLOSURE): New define.
	(FFI_RAW_SIZE): Likewise.
	(_Jv_InterpMethod::ncode): Use them.
	* interpret.cc (PUSHL, PUSHD, POPL, POPD, LOADL, LOADD, STOREL,
	STORED): Define differently on a 64 bit machine.
	(continue1): Use ffi_java_raw_call when appropriate.

From-SVN: r32754
2000-03-26 20:33:04 +00:00
Tom Tromey
71c9404e8b * libjava.lang/Array_1.xfail: Removed.
From-SVN: r32753
2000-03-26 20:20:42 +00:00
Mark Mitchell
f801334326 integrate.c (function_cannot_inline_p): Do inline functions that return `void'.
* integrate.c (function_cannot_inline_p): Do inline functions that
	return `void'.

From-SVN: r32752
2000-03-26 19:09:36 +00:00
Richard Kenner
ad41cc2a20 stor-layout.c (layout_type, [...]): early_type_list is now a list of TREE_LIST entries, not types.
* stor-layout.c (layout_type, set_sizetype): early_type_list is
	now a list of TREE_LIST entries, not types.
	* tree.c (build_common_tree_nodes_2): Eliminate dupliate type sets.
	* java/decl.c (init_decl_processing): Call initialize_sizetypes once.
	Adjust order of making types.
	Make bitsize_*_node values.

From-SVN: r32751
2000-03-26 14:01:55 -05:00
Mark Mitchell
ec386958da class.c (layout_empty_base): Handle empty bases with non-byte alignment.
* class.c (layout_empty_base): Handle empty bases with non-byte
	alignment.
	(build_base_field): Likewise.
	(layout_virtual_bases): Likewise.

	* class.c (finish_struct_1): Fix typo in this change:

	Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

From-SVN: r32750
2000-03-26 18:57:57 +00:00
Richard Kenner
a69beca121 expr.c (expand_assignment): Add code to handle variable-sized BLKmode case.
* expr.c (expand_assignment): Add code to handle variable-sized
	BLKmode case.

From-SVN: r32749
2000-03-26 12:05:34 -05:00
Richard Kenner
751312371e expmed.c (extract_bit_field): Ensure BITS_PER_WORD is signed in MAX.
* expmed.c (extract_bit_field): Ensure BITS_PER_WORD is signed in MAX.
	* config/arm/pe.c (arm_pe_return_in_memory): Use host_integerp and
	int_bit_position.
	* config/mips/mips.c (function_arg): Likewise; also remove cast
	and make variables unsigned or HOST_WIDE_INT and use tree_low_cst.
	(mips_function_value): Use int_byte_position and make HOST_WIDE_INT.
	* config/mips/abi64.h (SETUP_INCOMING_VARARGS): Offsets are unsigned.
	* config/mips/mips.h (BITS_PER_WORD, UNITS_PER_WORD): Cast to unsigned.
	(UNITS_PER_FPREG, INT_TYPE_SIZE, LONG_TYPE_SIZE): Likewise.
	(POINTER_SIZE, POINTER_BOUNDARY,PARM_BOUNDARY): Likewise.
	(GP_REG_P, FP_REG_P, MD_REG_P, ST_REG_P): Ensure subtraction signed.
	(struct mips_arg): arg_number, arg_words, fp_arg_words, and
	num_adjusts now unsigned.
	(FUNCTION_ARG_BOUNDARY): Remove unneeded cast.
	* config/sparc/sparc.c (struct function_arg_record_value_parms):
	NREGS now unsigned.
	(function_arg_record_value_1): STARTBITPOS arg now HOST_WIDE_INT
	as is BITPOS variable; use host_integerp and int_bit_position.
	(function_arg_record_value_2): Likewise.
	(function_arg_record_value_3): Arg BITPOS now HOST_WIDE_INT.
	Variable REGNO now unsigned.
	(function_arg_record_value): NREGS now unsigned.

From-SVN: r32748
2000-03-26 11:46:27 -05:00
Bernd Schmidt
210ee0dd95 Fix sibcall problem in jump.c.
From-SVN: r32747
2000-03-26 16:22:02 +00:00
Bernd Schmidt
adc66edadb New tests
From-SVN: r32746
2000-03-26 16:11:06 +00:00
Jeff Law
28ff5bfb6e Daily bump.
From-SVN: r32744
2000-03-26 01:45:07 -07:00
Mark Mitchell
da8a745625 decl.c (grokdeclarator): Count partial specializations when keeping track of how many template classes...
* decl.c (grokdeclarator): Count partial specializations when
	keeping track of how many template classes have been seen.

	* dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.

From-SVN: r32743
2000-03-26 03:05:49 +00:00
Richard Kenner
770ae6cc71 * Rework fields used to describe positions of bitfields and
modify sizes to be unsigned and use HOST_WIDE_INT.
	* alias.c (reg_known_value_size): Now unsigned.
	* c-typeck.c (build_unary_op, case ADDR_EXPR): Use byte_position.
	(really_start_incremental_init): Use bitsize_zero_node.
	(push_init_level, pop_init_level, output_init_element): Likewise.
	Use bitsize_unit_node and bitsize_one_node.
	(output_pending_init_elements, process_init_element): Likewise.
	* combine.c (combine_max_regno, reg_sign_bit_copies): Now unsigned.
	(make_extraction): Position and length HOST_WIDE_INT and unsigned
	HOST_WIDE_INT, respectively.
	(get_pos_from_mask): Passed in value is unsigned HOST_WIDE_INT.
	(num_sign_bit_copies): Returns unsigned.
	BITWIDTH now unsigned; rework arithmetic.
	Remove recursive call from arg to MAX.
	(combine_instructions, init_reg_last_arrays): NREGS now unsigned.
	(setup_incoming_promotions, can_combine_p, try_combine, simplify_set):
	REGNO now unsigned.
	(set_nonzero_bit_and_sign_copies): NUM now unsigned.
	(find_split_point, expand_compound_operation, make_extraction): LEN
	now unsigned HOST_WIDE_INT, POS now HOST_WIDE_INT.
	(make_field_assignment): Likewise.
	(combine_simplify_rtx): Add cast.
	(expand_compound_operation): MODEWIDTH now unsigned; rework arithmetic.
	(force_to_mode): WIDTH now unsigned; add cast.
	(if_then_else_cond): SIZE now unsigned.
	(nonzero_bits): MODE_WIDTH, RESULT_WIDTH, and WIDTH now unsigned.
	(extended_count): Now returns unsigned.
	(simplify_shift_const): COUNT unsigned; arg is now INPUT_COUNT.
	Add SIGNED_COUNT variable; MODE_WORDS and FIRST_COUNT now unsigned.
	(simplify_comparison): MODE_WIDTH now unsigned.
	(update_table_tick): REGNO and ENDREGNO now unsigned; new var R.
	(mark_used_regs_combine): Likewise; rework arithmetic.
	(record_value_for_reg): REGNO, ENDREGNO, and I now unsigned.
	(record_dead_and_set_regs, reg_dead_at_p, distribute_notes): Likewise.
	(record_promoted_value): REGNO now unsigned.
	(get_last_value_validate): REGNO, ENDREGNO, and J now unsigned.
	(get_last_value): REGNO now unsigned.
	(use_crosses_set_p): REGNO and ENDREGNO now unsigned.
	(reg_dead_regno, reg_dead_endregno): Now unsigned.
	(remove_death): Arg REGNO now unsigned.
	(move_deaths):  REGNO, DEADREGNO, DEADEND, OUREND, and I now unsigned.
	(reg_bitfield_target_p): REGNO, REGNO, ENDREGNO, and ENDTREGNO
	now unsigned.
	* convert.c (convert_to_integer): INPREC and OUTPREC now unsigned.
	* cse.c (struct qty_table_elem): FIRST_REG and LAST_REG now unsigned.
	(struct cse_reg_info): REGNO now unsigned.
	(cached_regno): Now unsigned.
	(REGNO_QTY_VALID_P): Add cast.
	(make_new_qty, make_regs_eqv, delete_reg_eqiv): Regno args unsigned.
	(remove_invalid_regs): Likewise.
	(remove_invalid_subreg_refs): Likewise; arg WORD also unsigned
	as are variables END and I.
	(get_cse_reg_info, insert): Likewise.
	(mention_regs, invalidate_for_call): REGNO, ENDREGNO, and I unsigned.
	(canon_hash): Likewise.
	(insert_regs, lookup_for_remove): REGNO now unsigned.
	(invalidate): REGNO, ENDREGNO, TREGNO, and TENDREGNO now unsigned.
	New variable RN.
	* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't check for REGNO < 0.
	* dwarf2out.c (dwarf2ou_frame_debug_expr): Remove cast.
	* emit-rtl.c (subreg_realpart_p): Add cast.
	(operand_subword): Arg I is now unsigned as is var PARTWORDS.
	(operand_subword_force): Arg I is now unsigned.
	* except.c (eh_regs): Variable I is now unsigned.
	* explow.c (hard_function_value): BYTES is unsigned HOST_WIDE_INT.
	* expmed.c (store_fixed_bit_field): Position is HOST_WIDE_INT;
	length is unsigned HOST_WIDE_INT; likewise for internal variables.
	(store_split_bit_field, extract_fixed_bit_field): Likewise.
	(extract_split_bit_field, store_bit_field, extract_bit_field):
	Likewise.
	* expr.c (store_constructor_fields, store_constructor, store_field):
	Positions are HOST_WIDE_INT and lengths are unsigned HOST_WIDE_INT.
	(expand_assignment, expand_expr, expand_expr_unaligned): Likewise.
	(do_jump): Likewise.
	(move_by_pieces, move_by_pieces_ninsns, clear_by_pieces):
	MAX_SIZE is now unsigned.
	(emit_group_load): BYTEPOS is HOST_WIDE_INT; BYTELEN is unsigned.
	(emit_group_store): Likewise.
	(emit_move_insn): I now unsigned.
	(store_constructor): Use host_integerp, tree_low_cst, and
	bitsize_unit_node.
	(get_inner_reference): Return bitpos and bitsize as HOST_WIDE_INT.
	Rework all calculations to use trees and new fields.
	* expr.h (promoted_input_arg): Regno now unsigned.
	(store_bit_field, extract_bit_field): Adjust types of pos and size.
	(mark_seen_cases): Arg is HOST_WIDE_INT.
	* flow.c (verify_wide_reg_1): REGNO now unsigned.
	* fold-const.c (decode_field_reference): Size and pos HOST_WIDE_INT;
	precisions and alignments are unsigned.
	(optimize_bit_field_compare, fold_truthop): Likewise.
	(int_const_binop): Adjust threshold for size_int_type_wide call.
	(fold_convert): Likewise.
	(size_int_type_wide): Make table larger and fix thinko that only
	had half of table used.
	(all_ones_mask_p, fold): Precisions are unsigned.
	* function.c (put_reg_info_stack): REGNO is unsigned.
	(instantiate_decl): Size is HOST_WIDE_INT.
	(instantiate_virtual_regs): I is unsigned.
	(assign_parms): REGNO, REGNOI, and REGNOR are unsigned.
	(promoted_input_arg): REGNO is unsigned.
	* function.h (struct function): x_max_parm_reg is now unsigned.
	* gcse.c (max_gcse_regno): Now unsigned.
	(struct null_pointer_info): min_reg and max_reg now unsigned.
	(lookup_set, next_set): REGNO arg now unsigned.
	(compute_hash_table): REGNO and I now unsigned.
	(handle_avail_expr): regnum_for_replacing now unsigned.
	(cprop_insn): REGNO now unsigned.
	(delete_null_pointer_checks_1): BLOCK_REG now pointer to unsigned.
	* ggc-common.c (ggc_mark_tree_children, case FIELD_DECL): New case.
	* global.c (set_preference): SRC_REGNO, DEST_REGNO, and I now unsigned.
	* hard-reg-set.h (reg_class_size): Now unsigned.
	* integrate.c (mark_stores): LAST_REG and I now unsigned; new UREGNO.
	* jump.c (mark_modified_reg): I now unsigned; add cast.
	(rtx_equal_for_thread_p): Add cast.
	* loop.c (max_reg_before_loop): Now unsigned.
	(struct_movable): REGNO now unsigned.
	(try_copy_prop): REGNO arg unsigned.
	(regs_match_p): XN and YN now unsigned.
	(consec_sets_invariant_p, maybe_eliminate_biv): REGNO now unsigned.
	(strength_reduce): Likewise; NREGS also unsigned.
	(first_increment_giv, last_increment_giv unsigned): Now unsigned.
	* loop.h (struct iv_class): REGNO now unsigned.
	(max_reg_before_loop, first_increment_giv, last_increment_giv):
	Now unsigned.
	* machmode.h (mode_size, mode_unit_size): Now unsigned.
	(mode_for_size, smallest_mode_for_size): Pass size as unsigned.
	* optabs.c (expand_binop): I and NWORDS now unsigned.
	(expand_unop): I now unsigned.
	* print-tree.c (print_node): Don't print DECL_FIELD_BITPOS, but do
	print DECL_FIELD_OFFSET and DECL_FIELD_BIT_OFFSET.
	* real.c (significand_size): Now returns unsigned.
	* real.h (significand_size): Likewise.
	* regclass.c (reg_class_size): Now unsigned.
	(choose_hard_reg_mode): Both operands now unsigned.
	(record_reg_classes): REGNO and NR now unsigned.
	(reg_scan): NREGS now unsigned.
	(reg_scan_update): old_max_regno now unsigned.
	(reg_scan_mark_refs): Arg MIN_REGNO and var REGNO now unsigned.
	* reload.c (find_valid_class): BEST_SIZE now unsigned.
	(find_dummy_reload): REGNO, NWORDS, and	I now unsigned.
	(hard_reg_set_here_p): Args BEG_REGNO and END_REGNO now unsigned.
	Likewise for variable R.
	(refers_to_regno_for_reload_p): Args REGNO and END_REGNO now unsigned,
	as are variables INNER_REGNO and INNER_ENDREGNO; add new variable R.
	(find_equiv_reg): Add casts.
	(regno_clobbered_p): Arg REGNO now unsigned.
	* reload.h (struct reload): NREGS now unsigned.
	(refers_to_regno_for_reload_p): Regno args are unsigned.
	(regno_clobbered_p): Likewise.
	* reload1.c (reg_max_ref_width, spill_stack_slot_width): Now unsigned.
	(compute_use_by_pseudos): REGNO now unsigned.
	(find_reg): I and J now unsigned, new variable K, and change loop
	variables accordingly; THIS_NREGS now unsigned.
	(alter_reg): INHERENT_SIZE and TOTAL_SIZE now unsigned.
	(spill_hard_reg): REGNO arg now unsigned; add casts.
	(forget_old_reloads_1): REGNO, NR, and I now unsigned.
	(mark_reload_reg_in_use): Arg REGNO and vars NREGS and I now unsigned.
	(clear_reload_reg_in_use): Arg REGNO and vars NREGS, START_REGNO,
	END_REGNO, CONFLICT_START, and CONFLICT_END now unsigned.
	(reload_reg_free_p, reload_reg_reaches_end_p): Arg REGNO now unsigned.
	(choose_reload_regs): MAX_GROUP_SIZE now unsigned.
	(emit_reload_insns): REGNO now unsigned.
	(reload_cse_move2add): Add cast.
	(move2add_note_store): REGNO and I now unsigned; new variable ENDREGNO
	and rework loop.
	* resource.c (mark_referenced_resources, mark_set_resources): New
	variable R; REGNO and LAST_REGNO now unsigned.
	(mark_target_live_regs): J and REGNO now unsigned.
	* rtl.c (mode_size, mode_unit_size): Now unsigned.
	* rtl.h (union rtunion_def): New field rtuint.
	(XCUINT): New macro.
	(ADDRESSOF_REGNO, REGNO, SUBREG_WORD): New XCUINT.
	(operand_subword, operand_subword_force): Word number is unsigned.
	(choose_hard_reg_mode): Operands are unsigned.
	(refers_to-regno_p, dead_or_set_regno_p): Regno arg is unsigned.
	(find_regno_note, find_regno_fusage, replace_regs): Likewise.
	(regno_use_in, combine_instructions, remove_death): Likewise.
	(reg_scan, reg_scan_update): Likewise.
	(extended_count): Return is unsigned.
	* rtlanal.c (refers_to_regno_p): Args REGNO and ENDREGNO and vars I,
	INNER_REGNO, and INNER_ENDREGNO now unsigned; new variable X_REGNO.
	(reg_overlap_mentioned_p): REGNO and ENDREGNO now unsigned.
	(reg_set_last_first_regno, reg_set_last_last_regno): Now unsigned.
	(reg_reg_last_1): FIRS and LAST now unsigned.
	(dead_or_set_p): REGNO, LAST_REGNO, and I now unsigned.
	(dead_or_set_regno_p): Arg TEST_REGNO and vars REGNO and ENDREGNO
	now unsigned.
	(find_regno_note, regno_use_in): Arg REGNO now unsigned.
	(find_regno_fusage): Likewise; also var REGNOTE now unsigned.
	(find_reg_fusage): Variables REGNO, END_REGNO, and I now unsigned.
	(replace_regs): Arg NREGS now unsigned.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Don't check REGNO < 0.
	* simplify-rtx.c (simplify_unary_operation): WIDTH now unsigned.
	(simplify_binary_operation): Likewise.
	(cselib_invalidate_regno): Arg REGNO and variables ENDREGNO, I, and
	THIS_LAST now unsigned.
	(cselib_record_set): Add cast.
	* ssa.c (ssa_max_reg_num): Now unsigned.
	(rename_block): REGNO now unsigned.
	* stmt.c (expand_return): Bit positions unsigned HOST_WIDE_INT;
	sizes now unsigned.
	(all_cases_count): Just return -1 not -2.
	COUNT, MINVAL, and LASTVAL now HOST_WIDE_INT.
	Rework tests to use trees whenever possible.
	Use host_integerp and tree_low_cst.
	(mark_seen_cases): COUNT arg now HOST_WIDE_INT;
	Likewise variable NEXT_NODE_OFFSET; XLO now unsigned.
	(check_for_full_enumeration_handing): BYTES_NEEDED, I to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size): SIZE arg now unsigned.
	(smallest_mode_for_size): Likewise.
	(layout_decl): Simplify handing of a specified DECL_SIZE_UNIT.
	KNOWN_ALIGN is now an alignment, so simplify code.
	Don't turn off DECL_BIT_FIELD if field is BLKmode, but not type.
	(start_record_layout): Renamed from new_record_layout_info.
	Update to new fields.
	(debug_rli, normalize_rli, rli_size_unit_so_far, rli_size_so_far):
	New functions.
	(place_union_field): Renamed from layout_union_field.
	Update to use new fields in rli.
	(place_field): Renamed from layout_field.
	Major rewrite to use new fields in rli; pass alignment to layout_decl.
	(finalize_record_size): Rework to use new fields in rli and handle
	union.
	(compute_record_mode): Rework to simplify and to use new DECL fields.
	(finalize_type_size): Make rounding more consistent.
	(finish_union_layout): Deleted.
	(layout_type, case VOID_TYPE): Don't set TYPE_SIZE_UNIT either.
	(layout_type, case RECORD_TYPE): Call new function names.
	(initialize_sizetypes): Set TYPE_IS_SIZETYPE.
	(set_sizetype): Set TYPE_IS_SIZETYPE earlier.
	(get_best_mode): UNIT is now unsigned; remove casts.
	* tree.c (bit_position): Compute from new fields.
	(byte_position, int_byte_position): New functions.
	(print_type_hash_statistics): Cast to remove warning.
	(build_range_type): Use host_integerp and tree_low_cst to try to hash.
	(build_index_type): Likewise; make subtype of sizetype.
	(build_index_2_type): Pass sizetype to build_range_type.
	(build_common_tree_nodes): Use size_int and bitsize_int to
	initialize nodes; add bitsize_{zero,one,unit}_node.
	* tree.h (DECL_FIELD_CONTEXT): Use FIELD_DECL_CHECK.
	(DECL_BIT_FIELD_TYPE, DECL_QUALIFIER, DECL_FCONTEXT): Likewise.
	(DECL_PACKED, DECL_BIT_FIELD): Likewise.
	(DECL_FIELD_BITPOS): Deleted.
	(DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET): New fields.
	(DECL_RESULT, DECL_SAVED_INSNS): Use FUNCTION_DECL_CHECK.
	(DECL_FRAME_SIZE, DECL_FUNCTION_CODE, DECL_NO_STATIC_CHAIN): Likewise.
	(DECL_INLINE, DECL_BUILT_IN_NONANSI, DECL_IS_MALLOC): Likewise.
	(DECL_BUILT_IN_CLASS, DECL_STATIC_CONSTRUCTOR): Likewise.
	(DECL_STATIC_DESTRUCTOR, DECL_NO_CHECK_MEMORY_USAGE): Likewise.
	(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT, DECL_NO_LIMIT_STACK) Likewise.
	(DECL_ORIGINAL_TYPE, TYPE_DECL_SUPPRESS_DEBUG): Use TYPE_DECL_CHECK.
	(DECL_ARG_TYPE_AS_WRITEN, DECL_ARG_TYPE): Use PARM_DECL_CHECK.
	(DECL_INCOMING_RTL, DECL_TRANSPARENT_UNION): Likewise.
	(DECL_ALIGN): Adjust to new field in union.
	(DECL_OFFSET_ALIGN): New field.
	(DECL_ERROR_ISSUED, DECL_TOO_LATE): Use LABEL_DECL_CHECK.
	(DECL_IN_TEXT_SECTION): Use VAR_DECL_CHECK.
	(union tree_decl): Add struct for both aligns.
	(enum tree_index): Add TI_BITSIZE_{ZERO,ONE,UNIT}.
	(bitsize_zero_node, bitsize_one_node, bitsize_unit_node): Added.
	(struct record_layout_info): Rework fields to have offset
	alignment and byte and bit position.
	(start_record_layout, place_field): Renamed from old names.
	(rli_size_so_far, rli_size_unit_so_far, normalize_rli): New decls.
	(byte_position, int_byte_position): Likewise.
	(get_inner_reference): Change types of position and length.
	* unroll.c (unroll_loop): New variable R; use for some loops.
	MAX_LOCAL_REGNUM and MAXREGNUM now unsigned.
	(calculate_giv_inc): Arg REGNO now unsigned.
	(copy_loop_body): REGNO and SRC_REGNO now unsigned.
	* varasm.c (assemble_variable): Clean up handling of size using
	host_integerp and tree_low_cst.
	(decode_addr_const): Use byte, not bit, position.
	(output_constructor): bitpos and offsets are HOST_WIDE_INT;
	use tree_low_cst and int_bit_position.
	* objc/objc-act.c (build_ivar_list_initializer): Use byte_position.
	* ch/actions.c (check_missing_cases): BYTES_NEEDED is HOST_WIDE_INT.
	* ch/typeck.c (expand_constant_to_buffer): Use int_byte_position.
	(extract_constant_from_buffer): Likewise.
	* cp/class.c (build_vbase_pointer_fields): layout_field now
	place_field.
	(get_vfield_offset): Use byte_position.
	(set_rtti_entry): Set OFFSET to ssizetype zero.
	(get_binfo_offset_as_int): Deleted.
	(dfs_record_base_offsets): Use tree_low_cst.
	(dfs_search_base_offsets): Likewise.
	(layout_nonempty_base_or_field): Reflect changes in RLI format
	and call byte_position.
	(layout_empty_base): Convert offset to ssizetype.
	(build_base_field): use rli_size_unit_so_far.
	(dfs_propagate_binfo_offsets): Do computation in proper type.
	(layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
	(layout_class_type): Reflect changes in RLI names and fields.
	(finish_struct_1): Set DECL_FIELD_OFFSET.
	* cp/dump.c (dequeue_and_dump): Call bit_position.
	* cp/expr.c (cplus_expand_constant): Use byte_position.
	* cp/rtti.c (expand_class_desc): Use bitsize_one_node.
	* cp/typeck.c (build_component_addr): Use byte_position and don't
	special case for zero offset.
	* f/com.c (ffecom_tree_canonize_ptr_): Use bitsize_zero_node.
	(ffecom_tree_canonize_ref_): Likewise.
	* java/class.c (make_field_value): Use byte_position.
	* java/expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
	(java_array_data_offset): Likewise.
	* java/java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
	bzero call.

From-SVN: r32742
2000-03-25 13:34:13 -05:00
Mark Mitchell
370af2d55a Remove accidental commit
From-SVN: r32740
2000-03-25 16:38:49 +00:00