Commit Graph

37662 Commits

Author SHA1 Message Date
Zack Weinberg
749ced524c top level:
* errors.h (warning, error, fatal, internal_error): Don't mark
	with ATTRIBUTE_PRINTF_n.
	* toplev.h (internal_error, fatal_io_error, warning, error,
	pedwarn, pedwarn_with_file_and_line, warning_with_file_and_line,
	error_with_file_and_line, sorry, error_for_asm, warning_for_asm):
	Likewise.
cp:
	* Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
	(cp/errfn.o): Delete rule.
	(cp/error.o): Depend on flags.h.
	* errfn.c: Delete file.
	* cp-tree.h: Declare warn_deprecated.  Remove definitions of
	TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
	and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
	cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
	internal_error respectively.  Make cp_deprecated into a macro.
	Don't define cp_printer typedef or declare cp_printers.
	* error.c: Include flags.h.
	Delete: struct tree_formatting_info, print_function_argument_list,
	print_declaration, print_expression, print_function_declaration,
	print_function_parameter, print_type_id, print_cv_qualifier_seq,
	print_type_specifier_seq, print_simple_type_specifier,
	print_elaborated_type_specifier, print_rest_of_abstract_declarator,
	print_parameter_declaration_clause, print_exception_specification,
	print_nested_name_specifier, and definition of cp_printers.
	(locate_error): New function.
	(cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
	rewritten in terms of locate_error and diagnostic.c.
	(cp_tree_printer): Rename cp_printer; wire up to *_to_string
	instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
	(init_error): Adjust to match.
po:
	* POTFILES.in: Remove cp/errfn.c.

From-SVN: r45765
2001-09-24 00:27:33 +00:00
Richard Kenner
7a80cf9a2f function.c (pop_function_context_from): var_refs_queue and temp slots now in GC memory.
* function.c (pop_function_context_from): var_refs_queue
	and temp slots now in GC memory.
	(mark_function_status, free_after_compilation): Likewise;
	also struct function now in GC memory.
	(assign_stack_temp_for_type): struct temp_slot now in GC memory.
	(combine_temp_slots): Likewise.
	(schedule_fixup_var_refs): var_refs_queue now in GC memory.
	(prepare_function_start): Use GC memory for struct function.
	(mark_temp_slot): Deleted.
	(gcc_mark_struct_function): struct function now in GC memory.

From-SVN: r45764
2001-09-23 19:35:38 -04:00
Richard Kenner
0629440fd8 fold-const.c (extract_muldiv, [...]): Only adjust code for division, not modulus.
* fold-const.c (extract_muldiv, case PLUS_EXPR): Only adjust
	code for division, not modulus.

From-SVN: r45763
2001-09-23 18:50:40 -04:00
Richard Kenner
a0fd557a09 * rtl.def (MEM): Remove obsolete part of comment.
From-SVN: r45762
2001-09-23 18:37:05 -04:00
GCC Administrator
ff4490a3a0 Daily bump.
From-SVN: r45760
2001-09-23 07:16:11 +00:00
Anthony Green
2155677ceb old fix
From-SVN: r45759
2001-09-23 01:08:05 +00:00
Anthony Green
8eba5a2b7f misc fixes
From-SVN: r45758
2001-09-23 01:05:55 +00:00
Joseph Myers
040cc0718f c-format.c (init_function_format_info): Check __builtin_printf and __builtin_fprintf even if -ffreestanding.
* c-format.c (init_function_format_info): Check __builtin_printf
	and __builtin_fprintf even if -ffreestanding.  Check C99 functions
	in gnu89 mode.

testsuite:
	* gcc.dg/format/builtin-1.c, gcc.dg/format/ext-6.c: New tests.

From-SVN: r45757
2001-09-22 20:06:29 +01:00
Alexandre Petit-Bianco
f6a67a813e re PR java/4360 (libjava fails to compile on i686-pc-linux-gnu (AttributedString))
2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>

        * decl.c (init_decl_processing): Fixed typo in predef_filenames
        last three initializations. Fixes PR java/4360.

( http://gcc.gnu.org/ml/gcc-patches/2001-09/msg00903.html )

From-SVN: r45756
2001-09-22 11:50:09 -07:00
Richard Kenner
0c96e96535 c-common.c (format_attribute_table): Remove decl.
* c-common.c (format_attribute_table): Remove decl.
	* tree.h (format_attribute_table, lang_attribute_table): New decls.
	(lang_attribute_common): Likewise.

From-SVN: r45754
2001-09-22 11:13:42 -04:00
Richard Kenner
aaed02065e attribs.c: New file, from c-common.c.
* attribs.c: New file, from c-common.c.
	(attribute_tables): Now four elements.
	(format_attribute_table, lang_attribute_common): New variables.
	(init_attributes): Reflect above changes.
	(handle_mode_attribute): Delete check for wider than uintmax.
	* c-common.c: Delete parts moved to attribs.c.
	(enum attrs): Deleted; unused.
	(c_format_attribute_table): New variable.
	(c_common_lang_init): Initialize format_attribute_table with it.
	* c-common.h (decl_attributes): Remove decl.
	* tree.h (decl_attribute): Move it to here.
	* Makefile.in (C_AND_OBJS_OBJS): Add attribs.o.
	(attribs.o): New rule.

From-SVN: r45753
2001-09-22 09:59:01 -04:00
Richard Earnshaw
283c8d8deb configure.in (__EXTENSIONS__): Define.
* libI77/configure.in (__EXTENSIONS__): Define.
* libI77/config.h.in, libI77/conifgure: regenerate.
* libU77/configure.in (__EXTENSIONS__): Likewise.

From-SVN: r45752
2001-09-22 13:32:38 +00:00
Richard Kenner
6a1d250ead function.c (fix_lexical_address): Use set_mem_alias_set.
* function.c (fix_lexical_address): Use set_mem_alias_set.
	(expand_function_start): Likewise.
	* config/alpha/alpha.h (SETUP_INCOMING_VARARGS): Likewise.

From-SVN: r45751
2001-09-22 09:27:33 -04:00
Richard Kenner
f42f3c2d58 * varasm.c (output_constant): Fix unused variable warning.
From-SVN: r45750
2001-09-22 09:23:14 -04:00
Richard Kenner
bb9f8221b4 attribs.c: New file, from c-common.c.
* attribs.c: New file, from c-common.c.
	(attribute_tables): Now four elements.
	(format_attribute_table, lang_attribute_common): New variables.
	(init_attributes): Reflect above changes.
	(handle_mode_attribute): Delete check for wider than uintmax.
	* c-common.c: Delete parts moved to attribs.c.
	(enum attrs): Deleted; unused.
	(c_format_attribute_table): New variable.
	(c_common_lang_init): Initialize format_attribute_table with it.
	* c-common.h (decl_attributes): Remove decl.
	* tree.h (decl_attribute): Move it to here.
	* Makefile.in (C_AND_OBJS_OBJS): Add attribs.o.
	(attribs.o): New rule.
	* ch/Make-lang.in (cc1chill): Add attribs.o.
	* cp/Make-lang.in (CXX_C_OBJS): Add attribs.o.

From-SVN: r45749
2001-09-22 09:14:40 -04:00
George Helffrich
ab6e696934 strlen0.f: New test.
2001-09-22  George Helffrich  <george@geo.titech.ac.jp>

	* g77.dg/strlen0.f: New test.

From-SVN: r45748
2001-09-22 10:36:11 +00:00
George Helffrich
2bc21ba588 com.c (ffecom_subscript_check_): Loosen subscript checking rules for character strings...
Thu Sep 20 15:05:20 JST 2001  George Helffrich  <george@geo.titech.ac.jp>

	* com.c (ffecom_subscript_check_): Loosen subscript checking rules
	for character strings, to permit substring expressions like
	string(1:0).
	* news.texi: Document this as a new feature.

From-SVN: r45747
2001-09-22 10:35:05 +00:00
Andreas Jaeger
b8d323b1a0 * builtins.c (c_getstr): Remove unused variable.
From-SVN: r45746
2001-09-22 10:42:05 +02:00
GCC Administrator
ed41066c2d Daily bump.
From-SVN: r45745
2001-09-22 07:16:42 +00:00
Alexandre Petit-Bianco
870a5b8a90 re PR java/4366 (java class initialization bug)
2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_method_invocation): Build class initialization
	when static finals are used to qualify method invocation.
	Fixes PR java/4366.

( http://gcc.gnu.org/ml/gcc-patches/2001-09/msg00880.html )

From-SVN: r45743
2001-09-21 22:03:35 -07:00
Richard Henderson
e5eac8efac reload1.c (reload): Use delete_insn instead of splatting NOTE_INSN_DELETED.
* reload1.c (reload): Use delete_insn instead of splatting
        NOTE_INSN_DELETED.

From-SVN: r45740
2001-09-21 18:21:04 -07:00
Richard Henderson
8a9a857e91 reload.c (push_secondary_reload): Don't check for "=" in output constraint after ""->ALL_REGS check.
* reload.c (push_secondary_reload): Don't check for "=" in output
        constraint after ""->ALL_REGS check.

From-SVN: r45739
2001-09-21 14:06:18 -07:00
Richard Henderson
24ee7caee0 * predict.c (expected_value_to_br_prob): Use pc_set.
From-SVN: r45738
2001-09-21 13:43:54 -07:00
Richard Henderson
ee1315aa92 optabs.c (init_one_libfunc): Gen a FUNCTION_DECL for use by ENCODE_SECTION_INFO...
* optabs.c (init_one_libfunc): Gen a FUNCTION_DECL for use by
        ENCODE_SECTION_INFO; get SYMBOL_REF from make_decl_rtl.

From-SVN: r45737
2001-09-21 13:42:14 -07:00
Richard Henderson
9defc9b7ac rtl.h (LCT_RETURNS_TWICE): New.
* rtl.h (LCT_RETURNS_TWICE): New.
        * calls.c (emit_call_1): Set current_function_calls_setjmp for
        ECF_RETURNS_TWICE.
        (emit_library_call_value_1): Map LCT_RETURNS_TWICE
        to ECF_RETURNS_TWICE.
        * except.c (sjlj_emit_function_enter): Use LCT_RETURNS_TWICE for
        call to setjmp.

        * unwind-sjlj.c: Invent the setjmp.h declarations if inhibit_libc.

        * config/stormy16/stormy16.h (DONT_USE_BUILTIN_SETJMP): New.
        (JMP_BUF_SIZE): New.

From-SVN: r45736
2001-09-21 13:26:44 -07:00
Richard Henderson
1853547e03 stormy16.h (REG_CLASS_FROM_LETTER): Map 'd' to R8_REGS.
* config/stormy16/stormy16.h (REG_CLASS_FROM_LETTER): Map 'd'
        to R8_REGS.

From-SVN: r45735
2001-09-21 13:08:10 -07:00
Richard Henderson
f5ddf15465 jvm.h (_Jv_VTable): Handle function descriptors for ia64...
* include/jvm.h (_Jv_VTable): Handle function descriptors for ia64;
        add get_method, set_method, vtable_elt_size, new_vtable.
        (_Jv_ArrayVTable): Derive from _Jv_VTable.
        * resolve.cc (_Jv_PrepareClass): Use new _Jv_VTable methods.
        * interpret.cc (_Jv_InterpMethod::continue1): Likewise.
        * java/lang/natClassLoader.cc (_Jv_NewArrayClass): Likewise.

From-SVN: r45734
2001-09-21 09:59:12 -07:00
Richard Henderson
6723181663 tree.def (FDESC_EXPR): New.
gcc/
        * tree.def (FDESC_EXPR): New.
        * expr.c (expand_expr): Handle it.
        * varasm.c (initializer_constant_valid_p): Likewise.
        (output_constant): Likewise.
        * defaults.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
        * config/ia64/ia64.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
        (ASM_OUTPUT_FDESC): New.
        * doc/tm.texi: Document the new macros.
gcc/cp/
        * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
        (build_vtbl_initializer): Likewise.
        (build_vfn_ref): New.
        * cp-tree.h: Declare it.
        * call.c (build_over_call): Use it.
        * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
        * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
gcc/java/
        * class.c (get_dispatch_table): Handle function descriptors.
        (build_dtable_decl): Likewise.
        * expr.c (build_invokevirtual): Likewise.
gcc/testsuite/
        * g++.old-deja/g++.abi/ptrmem.C: Update for ia64 c++ abi.
        * g++.old-deja/g++.abi/vtable2.C: Likewise.

From-SVN: r45733
2001-09-21 09:58:22 -07:00
Alexandre Petit-Bianco
2e3b2d2c07 parse.h: (WFL_STRIP_BRACKET): Re-written using build_type_name_from_array_name.
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-21 09:01:45 -07:00
Alexandre Petit-Bianco
4bad9e39d1 stringpool.c (get_identifier_with_length): New function.
2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* stringpool.c (get_identifier_with_length): New function.
	* tree.h (get_identifier_with_length): New prototype.

( http://gcc.gnu.org/ml/gcc-patches/2001-09/msg00779.html )

From-SVN: r45731
2001-09-21 08:58:35 -07:00
Richard Earnshaw
f62ce55b12 cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block...
* cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave
ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block
once merging is complete.

From-SVN: r45730
2001-09-21 15:34:54 +00:00
Richard Kenner
97a4f671ac * integrate.c (allocate_initial_values): Eliminate unused arg warning.
From-SVN: r45729
2001-09-21 11:16:31 -04:00
Richard Kenner
2cc222d386 Whitespace changes
From-SVN: r45728
2001-09-21 11:08:52 -04:00
Richard Earnshaw
7106d49104 cfgcleanup.c (flow_find_cross_jump): Delete any REG_EQUAL notes that would be invalid after a merge.
* cfgcleanup.c (flow_find_cross_jump): Delete any REG_EQUAL notes
that would be invalid after a merge.

From-SVN: r45727
2001-09-21 14:39:28 +00:00
Jan Hubicka
53c170316f basic-block.h (flow_delete_insn, [...]): Kill.
* basic-block.h (flow_delete_insn, flow_delete_insn_chain): Kill.
	* cfg.c (delete_insn): Rename from ....; use remove_insn; do not
	remove some labels.
	(flow_delete_insn): This one.
	(delete_insn_chain): Rename from ...; do not care labels.
	(flow_delete_insn_chain): ... this one.
	(flow_delete_block): Remove the insns one BB has been expunged.
	(merge_blocks_nomove): Likewise.
	(try_redirect_by_replacing_jump): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(tidy_fallthru_edge): Likewise.
	(commit_one_edge_insertion): Likewise.
	* cfgbuild.c (find_basic_block): Likewise.
	(find_basic_blocks_1): Likewise.
	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Likewise.
	(try_crossjump_to_edge): Likewise.
	(try_optimize_cfg): Likewise.
	* cse.c (delete_trivially_dead_insns): Likewise.
	* df.c (df_insn_delete): Likewise.
	* doloop.c (doloop_modify): Use delete_related_insns.
	* emit-rtl.c (try_split): Likewise.
	(remove_insn): Update BB boundaries.
	* expect.c (connect_post_landing_pads): Use delete_related_insns.
	* flow.c (delete_dead_jumptables): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(propagate_block_delete_insn): Likewise.
	(propagate_block_delete_libcall): Likewise.
	* function.c (delete_handlers): Use delete_related_insns.
	(thread_prologue_and_epilogue_insns): Likewise.
	* gcse.c (delete_null_pointer_checks): Use delete_related_insns.
	* genpeep.c (gen_peephole): Use delete_related_insns.
	* ifcvt.c (noce_process_if_block): Use delete_insn; do not care updating
	BB boundaries.
	(find_cond_trap): Likewise.
	* integrate.c (save_for_inline): Use delete_related_insns.
	(copy_insn_list): Likewise.
	* jump.c (pruge_linie_number_notes): Likewise.
	(duplicate_loop_exit_test): Likewise.
	(delete_computation): Likewise.
	(delete_related_insn): Rename from ...; use delete_insn
	(delete_insn): ... this one.
	(redirect_jump): Use delete_related_insns.
	* loop.c (scan_loop): Likewise.
	(move_movables): Likewise.
	(find_and_verify_loops): Likewise.
	(check_dbra_loop): Likewise.
	* recog.c (peephole2_optimize): Likewise.
	* reg-stack.c (delete_insn_for_stacker): Remove.
	(move_for_stack_reg): Use delete_insn.
	* regmove.c (combine_stack_adjustments_for_block): Likewise.
	* reload1.c (delete_address_reloads): Use delete_related_insns.
	(fixup_abnormal_edges): Use delete_insn.
	* recog.c (emit_delay_sequence): Use delete_related_insns.
	(delete_from-delay_slot): Likewise.
	(delete_scheduled_jump): likewise.
	(optimize_skip): Likewise.
	(try_merge_delay_insns): Likewise.
	(full_simple_delay_slots): Likewise.
	(fill_slots_from_thread): Likewise.
	(relax_delay_slots): Likewise.
	(make_return_insns): Likewise.
	(dbr_schedule): Likewise.
	* rtl.h (delete_insn): Rename to delete_related_insns.
	(delete_insn, delete_insn_chain): New prototypes.
	* ssa-ccp (sse_fast_dce):  Remove deleting of DEF, as it is done
	by df_insn_delete already.
	* ssa-dce.c (delete_insn_bb): Use delete_insn.
	* ssa.c (convert_from_ssa): Use delete_related_insns.
	* unroll.c (unroll_loop): Likewise.
	(calculate_giv_inc): Likewise.
	(copy_loop_body): Likewise.

	* i386-protos.h (ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): Declare.
	* i386.c (x86_64_int_parameter_registers, x86_64_int_return_registers):
	new static valurables.
	(x86_64_reg_class): New enum
	(x86_64_reg_class_name): New array.
	(classify_argument, examine_argument, construct_container,
	 merge_classes): New static functions.
	(optimization_options): Enable flag_omit_frame_pointer and disable
	flag_pcc_struct_return on 64bit.
	(ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): New global functions.
	(init_cumulative_args): Refuse regparm on x86_64, set maybe_vaarg.
	(function_arg_advance): Handle x86_64 passing conventions.
	(function_arg): Likewise.
	* i386.h (FUNCTION_ARG_BOUNDARY): New macro.
	(RETURN_IN_MEMORY): Move offline.
	(FUNCTION_VALUE, LIBCALL_VALUE): Likewise.
	(FUNCTION_VALUE_REGNO_P): New macro.
	(FUNCTION_ARG_REGNO_P): Move offline.
	(struct ix86_args): Add maybe_vaarg.
	* next.h (FUNCTION_VALUE_REGNO_P): Delete.
	* unix.h (FUNCTION_VALUE_REGNO_P): Delete.

From-SVN: r45726
2001-09-21 12:55:18 +00:00
Hartmut Penner
f2d3c02aa0 s390.md: Changed attributes for scheduling.
2001-09-21  Hartmut Penner  <hpenner@de.ibm.com>

        * s390.md: Changed attributes for scheduling.
        * s390.c: (s390_adjust_cost, s390_adjust_priority)
        Changed scheduling

From-SVN: r45725
2001-09-21 11:41:43 +00:00
Richard Henderson
01c62aea29 no-threads.cc (_Jv_ThreadStart): Remove names of unused arguments.
* no-threads.cc (_Jv_ThreadStart): Remove names of unused arguments.
        * java/lang/mprec.c (lo0bits): Fix paren typo.

From-SVN: r45724
2001-09-21 00:46:32 -07:00
J"orn Rennecke
c9574c9f42 * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
From-SVN: r45723
2001-09-21 08:17:49 +01:00
GCC Administrator
4816067b8d Daily bump.
From-SVN: r45722
2001-09-21 07:16:43 +00:00
Alexandre Oliva
759bfa908e Makefile.in (AS_FOR_TARGET, [...]): Don't use double quotes to avoid quotes nesting problems.
* Makefile.in (AS_FOR_TARGET, LD_FOR_TARGET,
DLLTOOL_FOR_TARGET, WINDRES_FOR_TARGET, AR_FOR_TARGET,
RANLIB_FOR_TARGET, NM_FOR_TARGET): Don't use double quotes to
avoid quotes nesting problems.
(NATIVE_CHECK_MODULES): Ditto, just for consistency.
(DO_X): Export only variables that are set.

From-SVN: r45720
2001-09-21 05:09:09 +00:00
Bryce McKinlay
f449e8853b posix-threads.cc (_Jv_ThreadInterrupt): Re-enable interrupt of blocking IO via pthread_kill().
* posix-threads.cc (_Jv_ThreadInterrupt): Re-enable interrupt of
	blocking IO via pthread_kill().
	* java/io/natFileDescriptorPosix.cc (write (jint)): Check for thread
	interrupted status flag only if ::write returned an error.
	(write (jbyteArray, jint, jint): Likewise.
	(read (jint)): Likewise.
	(read (jbyteArray, jint, jint): Likewise.

From-SVN: r45719
2001-09-21 05:23:31 +01:00
Joseph Myers
91d231cb91 Table-driven attributes.
* c-decl.c, config/alpha/alpha.c, config/arc/arc.c,
	config/arm/arm.c, config/arm/pe.c, config/avr/avr.c,
	config/avr/avr.h, config/d30v/d30v.h, config/fr30/fr30.h,
	config/h8300/h8300.c, config/i386/cygwin.h, config/i386/winnt.c,
	config/m32r/m32r.c, config/mcore/mcore.c, config/sh/sh.c,
	config/stormy16/stormy16.h, config/v850/v850.c, doc/c-tree.texi,
	doc/tm.texi, ggc-common.c, integrate.c, print-tree.c, tree.c,
	tree.h: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
	* tree.h (struct tree_decl): Change machine_attributes to
	attributes.
	* doc/c-tree.texi: Document that all attributes are now attached
	to decls and types.
	* c-common.c (add_attribute, attrtab, attrtab_idx,
	default_valid_lang_attribute, valid_lang_attribute): Remove.
	(attribute_tables, attributes_initialized,
	c_common_attribute_table, default_lang_attribute_table): New
	variables.
	(handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_unused_attribute, handle_const_attribute,
	handle_transparent_union_attribute, handle_constructor_attribute,
	handle_destructor_attribute, handle_mode_attribute,
	handle_section_attribute, handle_aligned_attribute,
	handle_weak_attribute, handle_alias_attribute,
	handle_no_instrument_function_attribute,
	handle_no_check_memory_usage_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute): New
	functions.
	(init_attributes, decl_attributes): Rewrite to implement
	table-driven attributes.
	* c-common.h (enum attribute_flags): Move to tree.h.
	* c-format.c (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Rename to
	handle_format_attribute and handle_format_arg_attribute.  Update
	for table-driven attributes.
	* c-common.h (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Remove prototypes.
	(handle_format_attribute, handle_format_arg_attribute): Add
	prototypes.
	* c-decl.c (grokdeclarator): Handle attributes nested inside
	declarators.
	* c-parse.in (setattrs, maybe_setattrs): Remove.
	(maybe_type_quals_setattrs): Rename to maybe_type_quals_attrs.
	Update to handle nested attributes properly.
	(maybe_resetattrs, after_type_declarator,
	parm_declarator_nostarttypename, notype_declarator, absdcl1_noea,
	absdcl1_ea, direct_absdcl1): Update to handle nested attributes
	properly.
	(make_pointer_declarator): Update to handle nested attributes
	properly.
	* doc/extend.texi: Update documentation of limits of attributes
	syntax.  Warn about problems with attribute semantics in C++.
	* target.h (struct target): Remove valid_decl_attribute and
	valid_type_attribute.  Add attribute_table and
	function_attribute_inlinable_p.
	* target-def.h (TARGET_VALID_DECL_ATTRIBUTE,
	TARGET_VALID_TYPE_ATTRIBUTE): Remove.
	(TARGET_ATTRIBUTE_TABLE, TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P):
	Add.
	(TARGET_INITIALIZER): Update.
	* integrate.c (FUNCTION_ATTRIBUTE_INLINABLE_P): Remove default
	definition.
	(function_attribute_inlinable_p): New function.  Check for the
	presence of any machine attributes before using
	targetm.function_attribute_inlinable_p.
	(function_cannot_inline_p): Update.
	* Makefile.in (integrate.o): Update dependencies.
	* doc/tm.texi: Update documentation of target attributes and
	example definition of TARGET_VALID_TYPE_ATTRIBUTE.
	* tree.c (default_valid_attribute_p, valid_machine_attribute):
	Remove.
	(default_target_attribute_table,
	default_function_attribute_inlinable_p): New.
	(lookup_attribute): Update comment to clarify handling of multiple
	attributes with the same name.
	(merge_attributes, attribute_list_contained): Allow multiple
	attributes with the same name but different arguments to appear in
	the same attribute list.
	* tree.h (default_valid_attribute_p): Remove prototype.
	(struct attribute_spec): New.
	(default_target_attribute_table): Declare.
	(enum attribute_flags): Move from c-common.h.  Add
	ATTR_FLAG_TYPE_IN_PLACE.
	(default_function_attribute_inlinable_p): Declare.
	* config/alpha/alpha.c (vms_valid_decl_attribute_p): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(vms_attribute_table): New.
	* config/arc/arc.c (arc_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arc_attribute_table, arc_handle_interrupt_attribute): New.
	* config/arm/arm.c (arm_valid_type_attribute_p,
	arm_valid_decl_attribute_p, arm_pe_valid_decl_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arm_attribute_table, arm_handle_fndecl_attribute,
	arm_handle_isr_attribute): New.
	* config/avr/avr.c (avr_valid_type_attribute,
	avr_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE, TARGET_VALID_TYPE_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(avr_attribute_table, avr_handle_progmem_attribute,
	avr_handle_fndecl_attribute): New.
	* config/c4x/c4x.c (c4x_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(c4x_attribute_table, c4x_handle_fntype_attribute): New.
	* config/h8300/h8300.c (h8300_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(h8300_attribute_table, h8300_handle_fndecl_attribute,
	h8300_handle_eightbit_data_attribute,
	h8300_handle_tiny_data_attribute): New.
	* config/i386/i386-protos.h (ix86_valid_type_attribute_p,
	i386_pe_valid_decl_attribute_p, i386_pe_valid_type_attribute_p):
	Remove prototypes.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New
	declarations.
	* config/i386/i386.c (ix86_valid_type_attribute_p: Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ix86_attribute_table, ix86_handle_cdecl_attribute,
	ix86_handle_regparm_attribute): New.
	* config/i386/winnt.c (i386_pe_valid_decl_attribute_p,
	i386_pe_valid_type_attribute_p): Remove.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New.
	* config/ia64/ia64.c (ia64_valid_type_attribute): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ia64_attribute_table): New.
	* config/m32r/m32r.c (m32r_valid_decl_attribute, interrupt_ident1,
	interrupt_ident2, model_ident1, model_ident2): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(init_idents): Update.
	(m32r_attribute_table, m32r_handle_model_attribute): New.
	* config/m68hc11/m68hc11.c (m68hc11_valid_type_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(m68hc11_attribute_table, m68hc11_handle_fntype_attribute): New.
	* config/mcore/mcore.c (mcore_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(mcore_attribute_table, mcore_handle_naked_attribute): New.
	* config/ns32k/ns32k.c (ns32k_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ns32k_attribute_table, ns32k_handle_fntype_attribute): New.
	* config/rs6000/rs6000.c (rs6000_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(rs6000_attribute_table, rs6000_handle_longcall_attribute): New.
	* config/sh/sh.c (sh_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(sh_attribute_table, sh_handle_interrupt_handler_attribute,
	sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
	New.
	* config/stormy16/stormy16.c (stormy16_valid_type_attribute):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define
	(TARGET_ATTRIBUTE_TABLE): Define.
	(stormy16_attribute_table, stormy16_handle_interrupt_attribute):
	New.
	* config/v850/v850.c (v850_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(v850_attribute_table, v850_handle_interrupt_attribute,
	v850_handle_data_area_attribute): New.
	* config/v850/v850-c.c (mark_current_function_as_interrupt):
	Return void.  Call decl_attributes instead of
	valid_machine_attribute.

cp:
	Table-driven attributes.
	* decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
	* decl2.c (cplus_decl_attributes): Only take one attributes
	parameter.
	* cp-tree.c (cplus_decl_attributes): Update prototype.
	* class.c (finish_struct), decl.c (start_decl, start_function),
	decl2.c (grokfield), friend.c (do_friend), parse.y
	(parse_bitfield): Update calls to cplus_decl_attributes.
	* decl.c (grokdeclarator): Take a pointer to a single ordinary
	attribute list.
	* decl.h (grokdeclarator): Update prototype.
	* decl2.c (grokfield): Take a single ordinary attribute list.
	* friend.c (do_friend): Likewise.
	* decl.c (shadow_tag, groktypename, start_decl,
	start_handler_parms, grokdeclarator, grokparms, start_function,
	start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
	parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
	(process_template_parm, do_decl_instantiation): Pass single
	ordinary attribute lists around.
	* decl.c (grokdeclarator): Correct handling of nested attributes.
	Revert the patch
	1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
		* decl.c (grokdeclarator): Embedded attrs bind to the right,
		not the left.
	.
	* cp-tree.h (cp_valid_lang_attribute): Remove declaration
	(cp_attribute_table): Declare.
	* decl.c (valid_lang_attribute): Don't define.
	(lang_attribute_table): Define.
	(init_decl_processing): Initialize lang_attribute_table instead of
	valid_lang_attribute.
	* tree.c (cp_valid_lang_attribute): Remove.
	(handle_java_interface_attribute, handle_com_interface_attribute,
	handle_init_priority_attribute): New functions.
	(cp_attribute_table): New array.
	* decl2.c (import_export_class): Don't use
	targetm.valid_type_attribute.

testsuite:
	Table-driven attributes.
	* g++.dg/ext/attrib1.C: New test.

From-SVN: r45718
2001-09-21 02:27:06 +01:00
J"orn Rennecke
3007d592bf sh-protos.h (sh_pr_n_sets): Declare.
* sh-protos.h (sh_pr_n_sets): Declare.
	* sh.c (calc_live_regs): If the initial value for PR has been copied,
	look at the copy to determine if PR needs to be saved.
	sh_pr_n_sets: New function.
	* sh.h (RETURN_ADDR_RTX): Use get_hard_reg_initial_val.
	(ALLOCATE_INITIAL_VALUE): Define.

	* sh.c (initial_elimination_offset):
	Fix RETURN_ADDRESS_POINTER_REGNUM case.

From-SVN: r45717
2001-09-21 01:53:28 +01:00
J"orn Rennecke
385b6e2d89 integrate.c (allocate_initial_values): New function.
* integrate.c (allocate_initial_values): New function.
	* integrate.h (allocate_initial_values): Declare.
	* local-alloc.c (local_alloc): Move call to allocate_reg_info from
	here...
	* reload1.c (reload): And initialization of reg_equiv_memory_loc
	from here...
	* toplev.c (rest_of_compilation): To here.
	Call allocate_initial_values.
	* tm.texi: add description for ALLOCATE_INITIAL_VALUE.

From-SVN: r45716
2001-09-21 01:45:30 +01:00
Richard Kenner
a4b5b2ae8d * ggc-page.c (ggc_marked_p): Properly convert return to boolean.
From-SVN: r45715
2001-09-20 20:33:01 -04:00
DJ Delorie
e7b6a0ee34 c-typeck.c (really_start_incremental_init): Discriminate between zero-length arrays and flexible arrays.
* c-typeck.c (really_start_incremental_init): Discriminate
between zero-length arrays and flexible arrays.
(push_init_level): Detect zero-length arrays and handle them
like fixed-sized arrays.
* expr.c (store_constructor): Handle zero-length arrays and
flexible arrays correctly.
* doc/extend.texi: Update zero-length array notes.

* gcc.dg/20000926-1.c: Update expected warning messages.
* gcc.dg/array-2.c: Likewise, and test for warnings too.
* gcc.dg/array-4.c: Likewise, and don't verify the zero-length
array.

From-SVN: r45714
2001-09-20 20:27:59 -04:00
Jim Wilson
f5aee6316d re PR c/3917 (IA-64 assembler output shows erroneous cycle counting)
Fix for PR 3917.
	* config/ia64/ia64.c (itanium_split_issue): Allow max 2 FP per cycle.
	(insn_matches_slot): Handle TYPE_L and TYPE_X slots when checking
	for issue port conflicts.
	(cycle_end_fill_slots): TYPE_L instructions take two slots.

From-SVN: r45713
2001-09-20 17:00:03 -07:00
Andrew MacLeod
91dc6f6e47 990208-1.x: New.
2001-09-20  Andrew MacLeod  <amacleod@redhat.com>

	* testsuite/gcc.c-torture/execute/990208-1.x: New. XFAIL at -O3
	on ia64.

From-SVN: r45712
2001-09-20 18:06:39 +00:00
Richard Kenner
4c160717ca fold-const.c (hashtab.h): Include.
* fold-const.c (hashtab.h): Include.
	(int_const_binop): Remove FORSIZE arg and compute from type; all
	callers changed.
	Call size_int_type_wide for all single-word constants.
	(size_htab_hash, size_htab_eq): New functions.
	(size_int_type_wide): Rework to use hash table.
	* ggc-common.c (hashtab.h): Include.
	(struct d_htab_root): New struct.
	(d_htab_roots): New variable.
	(ggc_add_deletable_htab, ggc_htab_delete): New functions
	(ggc_mark_roots): Handle deletable htabs.
	* ggc-page.c (ggc_marked_p): New function.
	* ggc-simple.c (ggc_marked_p): Likewise.
	* ggc.h: Reformatting throughout.
	(ggc_marked_p, ggc_add_deletable_htab): New declarations.
	* tree.c (init_obstacks): Make type_hash_table a deletable root.
	(type_hash_add): Allocate struct type_hash from GC memory.
	(mark_hash_entry, mark_type_hash): Deleted.
	(type_hash_marked_p, type_hash_mark): New functions.
	* Makefile.in (ggc-common.o, fold-const.o): Include hashtab.h.

From-SVN: r45710
2001-09-20 11:12:54 -04:00
J"orn Rennecke
c762ab6ebb sh.c (shiftcosts): Don't use shiftcosts array for modes wider than SImode.
* sh.c (shiftcosts): Don't use shiftcosts array for modes wider
	than SImode.

From-SVN: r45709
2001-09-20 15:25:11 +01:00