aboutsummaryrefslogtreecommitdiff
path: root/gcc/target.h
AgeCommit message (Collapse)AuthorFilesLines
2005-05-25loop-doloop.c: Include "target.h".Adrian Straetling1-0/+3
2005-05-25 Adrian Straetling <straetling@de.ibm.com> * loop-doloop.c: Include "target.h". (doloop_valid_p): Move tests to function in targhooks.c. * target.h (struct gcc_target): New target hook "insn_valid_within_doloop". * target-def.h: Define default value for "insn_valid_within_doloop". (TARGET_INITIALIZER): Insert new target hook into initializer. * targhooks.c (default_insn_valid_within_doloop): New function. * targhooks.h (default_insn_valid_within_doloop): Declare. * hooks.c (hook_bool_rtx_true): New function. * hooks.h (hook_bool_rtx_true): Declare. * doc/tm.texi: Add documentation for new target hook. From-SVN: r100143
2005-05-02c-common.c (resolve_overloaded_builtin): Forward to target hook for ↵Paolo Bonzini1-1/+7
BUILT_IN_MD built-ins. 2005-05-02 Paolo Bonzini <bonzini@gnu.org> * c-common.c (resolve_overloaded_builtin): Forward to target hook for BUILT_IN_MD built-ins. * c-typeck.c (finish_call_expr): Call resolve_overloaded_builtin for all types of built-in. * target-def.h (TARGET_RESOLVE_OVERLOADED_BUILTIN): New. Use it in the definition of the target hooks struct. * target.h (struct gcc_target): Add resolve_overloaded_builtin. * config/rs6000/altivec.h: Rewritten. * config/rs6000/rs6000-c.c (struct altivec_builtin_types, altivec_resolve_overloaded_builtin, altivec_build_resolved_builtin, rs6000_builtin_type, rs6000_builtin_type_compatible, altivec_overloaded_builtins, rs6000_builtin_type, rs6000_builtin_type_compatible): New. * config/rs6000/rs6000.c (rs6000_builtin_types, rs6000_builtin_decls): New. (def_builtin): Turn into a function. Check for duplicates and store the builtin into rs6000_builtin_decls. (bdesc_3arg, bdesc_dst, bdesc_altivec_preds, bdesc_2arg, bdesc_1arg): Add overloaded builtins. (altivec_expand_builtin): Check for unresolved overloaded builtins, do not support ALTIVEC_COMPILETIME_ERROR. (rs6000_init_builtins): Add opaque 128-bit vector, and internal nodes to represent front-end types. (altivec_init_builtins, rs6000_common_init_builtins): Create builtins with opaque arguments and/or return values. * config/rs6000/rs6000.h (enum rs6000_builtins): Remove ALTIVEC_COMPILETIME_ERROR and add Altivec overloaded builtins. (rs6000_builtin_type_index): New. (is_ev64_opaque_type): Rename to... (rs6000_is_opaque_type): ... this. (rs6000_cpu_cpp_builtins): Install the resolve_overloaded_builtin target hook. cp: 2005-05-02 Paolo Bonzini <bonzini@gnu.org> * semantics.c (finish_call_expr): Call resolve_overloaded_builtin for BUILT_IN_MD built-ins. testsuite: 2005-05-02 Paolo Bonzini <bonzini@gnu.org> * gcc.dg/altivec-3.c (vec_store): Do not use the old __builtin_altivec_st_internal_4si built-in. From-SVN: r99103
2005-04-25target-def.h (TARGET_CXX_USE_AEABI_ATEXIT): Define.Paul Brook1-0/+3
* target-def.h (TARGET_CXX_USE_AEABI_ATEXIT): Define. * target.h (struct gcc_target): Add cxx.use_aeabi_atexit. * config/arm/arm.c (arm_cxx_atexit_name): New function. (TARGET_CXX_USE_AEABI_ATEXIT): New macro. * cp/decl.c (get_atexit_node): Reorder arguments for __aeabi_atexit. (register_dtor_fn): Likewise. * doc/tm.texi: Document TARGET_CXX_USE_AEABI_ATEXIT. From-SVN: r98732
2005-04-12target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove.Mark Mitchell1-4/+14
* target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove. (TARGET_CXX_DETERMINE_CLASS_VISIBILITY): New macro. (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise. (TARGET_CXX): Adjust accordingly. * target.h (struct gcc_target): Remove epxort_class_data. Add determine_class_data_visibility and class_data_always_comdat. * doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Remove. (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Document. (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise. * config/arm/arm.c (arm_cxx_export_class_data): Remove. (arm_cxx_determine_class_data_visibility): New. (arm_cxx_class_data_always_comdat): Likewise. (TARGET_CXX_EXPORT_CLASS_DATA): Remove. (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Define. (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise. * config/arm/arm.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define. * config/arm/symbian.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define. * decl2.c (determine_visibility): Don't use export_class_data. (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY. * testsuite/g++.dg/ext/visibility/arm2.C: New test. * testsuite/g++.dg/ext/visibility/arm3.C: Likewise. * testsuite/g++.dg/ext/visibility/symbian2.C: Likewise. From-SVN: r98010
2005-04-09tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD and ↵Jakub Jelinek1-0/+8
TI_VA_LIST_FPR_COUNTER_FIELD. * tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD and TI_VA_LIST_FPR_COUNTER_FIELD. (va_list_gpr_counter_field, va_list_fpr_counter_field): Define. * tree-pass.h (pass_stdarg): Add. * tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg. * tree-stdarg.c: New file. * tree-stdarg.h: New file. * Makefile.in (OBJS-common): Add tree-stdarg.o. (tree-stdarg.o): Add dependencies. * function.h (struct function): Add va_list_gpr_size and va_list_fpr_size fields. * function.c (allocate_struct_function): Initialize them. * target.h (struct gcc_target): Add stdarg_optimize_hook. * target-def.h (TARGET_STDARG_OPTIMIZE_HOOK): Define. (TARGET_INITIALIZER): Add it. * config/i386/i386.c (ix86_build_builtin_va_list): Initialize va_list_{g,f}pr_counter_field. (ix86_setup_incoming_varargs): Don't do anything if reg_save area will not be used. Only save registers that tree-stdarg.c detected they need saving. (ix86_va_start): Don't set up fields that won't be used. * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize va_list_{g,f}pr_counter_field. (setup_incoming_varargs): Don't do anything if reg_save area will not be used. Only save registers that tree-stdarg.c detected they need saving. (rs6000_va_start): Don't set up fields that won't be used. * config/alpha/alpha.c: Include tree-flow.h and tree-stdarg.h. (alpha_build_builtin_va_list): Initialize va_list_gpr_counter_field. (va_list_skip_additions, alpha_stdarg_optimize_hook): New functions. (TARGET_STDARG_OPTIMIZE_HOOK): Define. * gcc.dg/tree-ssa/stdarg-1.c: New test. * gcc.dg/tree-ssa/stdarg-2.c: New test. * gcc.dg/tree-ssa/stdarg-3.c: New test. * gcc.dg/tree-ssa/stdarg-4.c: New test. * gcc.dg/tree-ssa/stdarg-5.c: New test. * gcc.c-torture/execute/stdarg-4.c: New test. * gcc.dg/vmx/varargs-1.c (f1, f2, f3): Add missing va_end. From-SVN: r97916
2005-03-23tm.texi (TARGET_MD_ASM_CLOBBERS): Adjust wording to not imply that this is ↵Hans-Peter Nilsson1-2/+2
called once, independent of asms in code. * doc/tm.texi (TARGET_MD_ASM_CLOBBERS): Adjust wording to not imply that this is called once, independent of asms in code. Adjust to now being pased output and input lists. Mention helper function decl_overlaps_hard_reg_set_p. * hooks.c (hook_tree_tree_tree_tree_3rd_identity): Rename from hook_tree_tree_identity and to take three trees, returning third. * hooks.h (hook_tree_tree_tree_tree_3rd_identity): Adjust the prototype. * stmt.c: include hard-reg-set.h before tree.h. (decl_overlaps_hard_reg_set_p): New function, broken out from... (decl_conflicts_with_clobbers_p): Call decl_overlaps_hard_reg_set_p. (expand_asm_operands): Pass output and input lists in call to targetm.md_asm_clobbers. * target-def.h (TARGET_MD_ASM_CLOBBERS): Define as hook_tree_tree_tree_tree_3rd_identity. * target.h (struct gcc_target.md_asm_clobbers): Take three tree parameters. * tree.h [HARD_CONST] (decl_overlaps_hard_reg_set_p): Prototype. * config/i386/i386.c (ix86_md_asm_clobbers): Adjust to three parameters, first two unused. * config/cris/cris.c (cris_md_asm_clobbers): Adjust to added parameters. Only add MOF to clobbers if there's no 'h' mentioned in constraint letters and MOF is not mentioned as a asm-declared register in neither of the input and output lists. From-SVN: r96923
2005-03-20builtins.c (fold_builtin_1): Update a call to targetm.fold_builtin.Kazu Hirata1-1/+1
* builtins.c (fold_builtin_1): Update a call to targetm.fold_builtin. * hooks.c (hook_tree_tree_bool_null): Rename to hook_tree_tree_tree_bool_null. Take one more argument of type tree. * hooks.h: Update the prototype of hook_tree_tree_bool_null. * target-def.h (TARGET_FOLD_BUILTIN): Define it as hook_tree_tree_tree_bool_null. * target.h (gcc_target): Update the prototype of fold_builtin. * config/alpha/alpha.c (alpha_fold_builtin): Take decomposed arguments of CALL_EXPR. * doc/tm.texi (TARGET_FOLD_BUILTIN): Update. Mention the new prototype. From-SVN: r96762
2005-03-14config.gcc (extra_options): New variable for listing option files.Richard Sandiford1-0/+10
* config.gcc (extra_options): New variable for listing option files. Add ${cpu_type}/${cpu_type}.opt to it if that file exists. * configure.ac (extra_opt_files): New AC_SUBST variable. (tm_file_list, tm_include_list): Include options.h first. * configure: Regenerate. * Makefile.in (extra_opt_files, ALL_OPT_FILES): New variables. (s-options): Use $(ALL_OPT_FILES) instead of $(lang_opt_files) (s-options-h): New rule. (options.h): Depend on it. (TEXI_GCCINT_FILES): Add options.texi. * hooks.h (hook_bool_size_t_constcharptr_int_true): Declare. * hooks.c (hook_bool_size_t_constcharptr_int_true): New function. * target.h (gcc_target): Add default_target_flags and handle_option. * target-def.h (TARGET_DEFAULT_TARGET_FLAGS) (TARGET_HANDLE_OPTION): New macros. (TARGET_INITIALIZER): Include them. * opt-functions.awk (opt_args, nth_arg): New functions. (switch_flags): Handle the "Target" flag. (var_args): Delete. (var_name): Use opt_args and nth_arg. (var_set, var_ref): Likewise. Handle "Mask" and "InverseMask". * opth-gen.awk: Declare target_flags. Declare MASK_* and TARGET_* macros for the "Mask" and "InverseMask" options. * opts.h (cl_var_cond): New enum. (cl_option): Replace the "has_set_value" and "set_value" fields with "var_cond" and "var_value". (CL_TARGET): New macro. (option_enabled, print_filtered_help): Declare. (decode_options): Move definition. * opts.c (handle_option): Search for the original option before removing any "no-" prefix. Handle CL_TARGET. Adjust for the new var_cond and var_value fields. Use targetm.handle_option to handle target options. (decode_options): Set target_flags to targetm.default_target_flags. (print_filtered_help): Make global. Handle CL_TARGET. (option_enabled): New function. * toplev.c (target_switches): Guard with #ifdef TARGET_SWITCHES. (display_target_options, set_target_switch, print_switch_values) (default_pch_valid_p): Guard uses of target_switches with #ifdef TARGET_SWITCHES. Also... (display_target_options): Display the CL_TARGET entries in cl_options. (set_target_option): Don't complain about the "" option when TARGET_SWITCHES is undefined. (print_switch_values): Use option_enabled. (default_pch_valid_p): Check cl_options[] when looking for something that has changed the value of target_flags. * c.opt: Remove documentation from top of file. * doc/gccint.texi: Add an "Options" chapter. Include options.texi. * doc/sourecebuild.texi: Refer to the new options documentation instead of c.opt. Document machine-specific .opt files. * doc/tm.texi (target_flags): Say that this variable is declared by options.h. (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Document. (TARGET_SWITCHES, TARGET_OPTIONS): Refer to the option files as an alternative. * doc/options.texi: New file. From-SVN: r96448
2005-03-12cfglayout.c, [...]: Update copyright.Kazu Hirata1-1/+1
* cfglayout.c, loop-doloop.c, profile.c, target-def.h, target.h, targhooks.c, tracer.c, tree-ssa-loop-ch.c, tree-ssa-loop-unswitch.c, tree-ssa-loop.c, vec.c, vmsdbgout.c, config/m32r/m32r.md, config/xtensa/xtensa.h: Update copyright. From-SVN: r96320
2005-03-08Target Hook to issue diagnostics for AltiVec argument to funtion with ↵Fariborz Jahanian1-0/+5
unknown prototype. Target Hook to issue diagnostics for AltiVec argument to funtion with unknown prototype. OKed by Mark Mitchel. From-SVN: r96124
2004-12-29target.h (targetm.calls.arg_partial_bytes): New.Richard Henderson1-0/+6
* target.h (targetm.calls.arg_partial_bytes): New. * target-def.h (TARGET_ARG_PARTIAL_BYTES): New. * calls.c (store_unaligned_arguments_into_pseudos): Update for partial in bytes. (load_register_parameters): Likewise. (store_one_arg): Likewise. (initialize_argument_information): Use targetm.calls.arg_partial_bytes. (emit_library_call_value_1): Likewise. * expr.c (block_move_libcall_safe_for_call_parm): Likewise. (emit_push_insn): Update for partial in bytes. * expr.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * function.c (assign_parm_find_entry_rtl): Use targetm.calls.arg_partial_bytes. Update for result in bytes. (locate_and_pad_parm): Update for partial in bytes. * system.h (FUNCTION_ARG_PARTIAL_NREGS): Poison. * targhooks.c (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): New. * targhooks.h (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Declare. * doc/tm.texi (TARGET_ARG_PARTIAL_BYTES): Rename and update from FUNCTION_ARG_PARTIAL_NREGS. * config/arc/arc.h, config/c4x/c4x.h, config/i386/i386.h, config/i860/i860.h, config/m68hc11/m68hc11.h, config/m68k/m68k.h, config/pdp11/pdp11.h, config/s390/s390.h, config/stormy16/stormy16.h, config/xtensa/xtensa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/alpha/alpha.c (alpha_arg_partial_bytes): New. (TARGET_ARG_PARTIAL_BYTES): New. * config/alpha/alpha.h, config/alpha/unicosmk.h, config/alpha/vms.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/arm/arm.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/arm/arm.c (arm_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/cris/cris.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/cris/cris.c (cris_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/fr30/fr30.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/fr30/fr30.c (fr30_arg_partial_bytes): Rename from fr30_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/fr30/fr30-protos.h: Update. * config/frv/frv.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/frv/frv.c (frv_arg_partial_bytes): Rename from frv_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/frv/frv-protos.h: Update. * config/ia64/ia64.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/ia64/ia64.c (ia64_arg_partial_bytes): Rename from ia64_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/ia64/ia64-protos.h: Update. * config/iq2000/iq2000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/iq2000/iq2000.c (iq2000_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/iq2000/iq2000-protos.h: Update. * config/m32r/m32r.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/m32r/m32r.c (m32r_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/m32r/m32r-protos.h: Update. * config/mcore/mcore.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/mcore/mcore.c (mcore_arg_partial_bytes): Rename from mcore_function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/mcore/mcore-protos.h: Update. * config/mips/mips.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/mips/mips.c (mips_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/mips/mips-protos.h: Update. * config/mn10300/mn10300.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/mn10300/mn10300.c (mn10300_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/mn10300/mn10300-protos.h: Update. * config/ns32k/ns32k.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/ns32k/ns32k.c (ns32k_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/pa/pa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/pa/pa.c (pa_arg_partial_bytes): Rename from function_arg_partial_nregs. Handle 32-bit. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/pa/pa-protos.h: Update. * config/rs6000/rs6000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/rs6000/rs6000-protos.h: Update. * config/sh/sh.h (FUNCTION_ARG_PARTIAL_NREGS): Move ... * config/sh/sh.c (sh_arg_partial_bytes): ... here. (TARGET_ARG_PARTIAL_BYTES): New. * config/sparc/sparc.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/sparc/sparc.c (sparc_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/sparc/sparc-protos.h: Update. * config/v850/v850.h (FUNCTION_ARG_PARTIAL_NREGS): Remove. * config/v850/v850.c (v850_arg_partial_bytes): Rename from function_arg_partial_nregs. Adjust to return bytes. (TARGET_ARG_PARTIAL_BYTES): New. * config/v850/v850-protos.h: Update. From-SVN: r92726
2004-12-27Add memory barriers to the double-checked locking used for static ↵Jason Merrill1-0/+4
initialization. libstdc++: Add memory barriers to the double-checked locking used for static initialization. * libsupc++/guard.cc (__test_and_acquire): Define default. (_GLIBCXX_GUARD_TEST_AND_ACQUIRE, __set_and_release) (_GLIBCXX_GUARD_SET_AND_RELEASE): Likewise. (recursion_push, recursion_pop): New abstraction functions. (__cxa_guard_acquire): Use _GLIBCXX_GUARD_TEST_AND_ACQUIRE. (__cxa_guard_release): Use _GLIBCXX_GUARD_SET_AND_RELEASE. * config/cpu/generic/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST): Rename from _GLIBCXX_GUARD_ACQUIRE and reverse sense. (_GLIBCXX_GUARD_SET): Rename from _GLIBCXX_GUARD_RELEASE. * config/cpu/arm/cxxabi_tweaks.h: Likewise. * config/cpu/alpha/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER) (_GLIBCXX_WRITE_MEM_BARRIER): Define. * config/cpu/powerpc/atomic_word.h: Likewise. * config/cpu/sparc/atomic_word.h: Likewise. * config/cpu/generic/atomic_word.h: Define them, commented out. * include/bits/atomicity.h: Define defaults. * config/cpu/ia64/atomic_word.h (__test_and_acquire) (__set_and_release): New inlines. (_GLIBCXX_GUARD_TEST_AND_ACQUIRE): Define. (_GLIBCXX_GUARD_SET_AND_RELEASE): Define. * libsupc++/guard.cc (acquire_1): Use __builtin_trap instead of abort(); gcc: * doc/tm.texi (TARGET_RELAXED_ORDERING): Document. * target.h (struct gcc_target): Add relaxed_ordering field. * target-def.h (TARGET_RELAXED_ORDERING): Define default. (TARGET_INITIALIZER): Add it. * config/alpha/alpha.c (TARGET_RELAXED_ORDERING): Define. * config/ia64/ia64.c (TARGET_RELAXED_ORDERING): Define. * config/rs6000/rs6000.c (TARGET_RELAXED_ORDERING): Define. * config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define. * cp/decl.c (expand_static_init): Don't use shortcut if targetm.relaxed_ordering. From-SVN: r92659
2004-12-22optabs.h (OTI_movmisalign, [...]): New.Richard Henderson1-7/+0
* optabs.h (OTI_movmisalign, movmisalign_optab): New. * optabs.c (init_optabs): Create it. * genopinit.c (optabs): Initialize it. * expr.c (expand_expr_real_1) <MISALIGNED_INDIRECT_REF>: Use it. * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise. * target-def.h (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove. * target.h (vectorize.misaligned_mem_ok): Remove. * targhooks.c (default_vect_misaligned_mem_ok): Remove. * doc/md.texi (movmisalign): New. * doc/tm.texi (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove. From-SVN: r92537
2004-12-09genopinit.c (vec_realign_store_optab): Initialization removed.Dorit Naishlos1-3/+2
2004-12-09 Dorit Naishlos <dorit@il.ibm.com> * genopinit.c (vec_realign_store_optab): Initialization removed. * optabs.c (optab_for_tree_code): REALIGN_STORE_EXPR case removed. * optabs.h (optab_index): OTI_vec_realign_store Removed. (vec_realign_store_optab): Removed. * target-def.h (TARGET_VECTORIZE_BUILTIN_MASK_FOR_STORE): Removed. * target.h (builtin_mask_for_store): Removed. * tree.def (REALIGN_STORE_EXPR): Removed. * config/rs6000/rs6000.c (rs6000_builtin_mask_for_store): Removed. (altivec_builtin_mask_for_store): Removed. (altivec_init_builtins): Removed initialization of altivec_builtin_mask_for_store. * doc/tm.texi (TARGET_VECTORIZE_MISALIGNED_MEM_OK): New. (TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): New. From-SVN: r91932
2004-11-26target.h (struct gcc_target): New field 'dwarf_handle_frame_unspec'.Eric Botcazou1-0/+9
* target.h (struct gcc_target): New field 'dwarf_handle_frame_unspec'. * target_def.h (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to 0. (TARGET_INITIALIZER): Add TARGET_DWARF_HANDLE_FRAME_UNSPEC. * dwarf2out.c (dwarf2out_frame_debug_expr): Allow REG->REG move to a fixed reg if the source is the Return Address register. Implement new Rule 15. * doc/tm.texi (Frame Layout): Document TARGET_DWARF_HANDLE_FRAME_UNSPEC. * config/sparc/sparc.c (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to sparc_dwarf_handle_frame_unspec. (gen_save_register_window): New function. (emit_stack_pointer_increment): Rename into gen_stack_pointer_inc. (emit_stack_pointer_decrement): Rename into gen_stack_pointer_dec. (expand_prologue): Adjust calls to emit_stack_pointer_{in,de}crement. Set RTX_FRAME_RELATED_P on the appropriate insns and members of insns. (sparc_asm_function_prologue): Do not emit call frame debugging info. (emit_and_preserve): Adjust calls to emit_stack_pointer_{in,de}crement. (sparc_expand_epilogue): Likewise. (sparc_dwarf_handle_frame_unspec): New function. * config/sparc/sparc.md (save_register_window): Remove. (save_register_windowdi): Rewrite modelled on the callframe debug info. (save_register_windowsi): Likewise. From-SVN: r91346
2004-11-24target.h (late_rtl_prologue_epilogue): Remove.Eric Botcazou1-5/+0
* target.h (late_rtl_prologue_epilogue): Remove. * target-def.h (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): Remove. * system.h: Poison TARGET_LATE_RTL_PROLOGUE_EPILOGUE. * passes.c (rest_of_handle_prologue_epilogue): Remove and move remaining bits to... (rest_of_handle_flow2): ...here. (rest_of_compilation): Remove call to rest_of_handle_prologue_epilogue. * doc/tm.texi (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): Remove. From-SVN: r91140
2004-10-01dwarf2.h (dwarf_calling_convention): Add enum for renesas sh abi.Eric Christopher1-0/+7
2004-09-30 Eric Christopher <echristo@redhat.com> * dwarf2.h (dwarf_calling_convention): Add enum for renesas sh abi. * dwarf2out.c (add_calling_convention_attribute): New function. (gen_subroutine_type_die): Use. * target-def.h (TARGET_DWARF_CALLING_CONVENTION): New hook. * target.h (gcc_target): Add dwarf_calling_convention. * hooks.c (hook_int_tree_0): New function. * hooks.h: Prototype. * config/sh/sh.c: Include dwarf2.h. (sh_dwarf_calling_convention): New function. (TARGET_DWARF_CALLING_CONVENTION): Use. * doc/tm.texi (TARGET_DWARF_CALLING_CONVENTION): Document. From-SVN: r88382
2004-09-23tree.def (ALIGN_INDIRECT_REF, [...]): New tree-codes.Dorit Naishlos1-0/+17
2004-09-23 Dorit Naishlos <dorit@il.ibm.com> * tree.def (ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF): New tree-codes. * tree.h (REF_ORIGINAL): Consider ALIGN_INDIRECT_REF and MISALIGNED_INDIRECT_REF. * alias.c (get_alias_set, nonoverlapping_memrefs_p): Likewise. * emit-rtl.c (mem_expr_equal_p, set_mem_attributes_minus_bitpos): Likewise. * expr.c (safe_from_p, expand_expr_real_1, rewrite_address_base) (find_interesting_uses_address): Likewise. * fold-const.c (non_lvalue, operand_equal_p): Likewise. (build_fold_addr_expr_with_type): Likewise. * gimplify.c (gimplify_addr_expr, gimplify_expr): Likewise. * print-rtl.c (print_mem_expr): Likewise. * tree-dump.c (dequeue_and_dump): Likewise. * tree-eh.c (tree_could_trap_p): Likewise. * tree-gimple.c (is_gimple_addressable, get_base_address): Likewise. * tree-pretty-print.c (op_prio, op_symbol, dump_generic_node): Likewise. * tree-ssa-alias.c (find_ptr_dereference, ptr_is_dereferenced_by): Likewise. * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise. * tree-ssa-loop-im.c (for_each_index, is_call_clobbered_ref): Likewise. * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Likewise. (add_address_candidates, rewrite_address_base): Likewise. * tree-ssa-operands.c (get_expr_operands, get_indirect_ref_operands): Likewise. * tree.c (staticp, build1_stat): Likewise. * tree.def (REALIGN_LOAD_EXPR, REALIGN_STORE_EXPR): New tree-codes. * tree-pretty-print.c (dump_generic_node): Consider REALIGN_LOAD_EXPR. * tree-ssa-operands.c (get_expr_operands): Likewise. * expr.c (expand_expr_real_1): Likewise. * optabs.h (vec_realign_store_optab, vec_realign_load_optab): New optabs. (OTI_vec_realign_store, OTI_vec_realign_load): New optab_index values for the new optabs. (expand_ternary_op): New function. * genopinit.c (optabs): Handle the new optabs. * optabs.c (optab_for_tree_code): Add cases for the new tree-codes. (init_optabs): Initialize vec_realign_load_optab. (expand_ternary_op): New functions. * target-def.h (TARGET_VECTORIZE): New member for struct gcc_target. (TARGET_VECTORIZE_MISALIGNED_MEM_OK): New member for targetm.vectorize. (TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): Likewise. (TARGET_VECTORIZE_BUILTIN_MASK_FOR_STORE): Likewise. * target.h (struct vectorize): New member for struct gcc_target. (misaligned_mem_ok): New member for targetm.vectorize. (builtin_mask_for_load): Likewise. (builtin_mask_for_store): Likewise. * targethooks.c (default_vect_misaligned_mem_ok): New function. * targethooks.h (default_vect_misaligned_mem_ok): New function. * config/rs6000/altivec.md (build_vector_mask_for_load): New define_expand. (vec_realign_load_v4si, vec_realign_load_v4sf, vec_realign_load_v8hi) (vec_realign_load_v16qi): New define_insn. * config/rs6000/rs6000.h (ALTIVEC_BUILTIN_MASK_FOR_LOAD): (ALTIVEC_BUILTIN_MASK_FOR_STORE): New target builtins. * config/rs6000/rs6000.c (altivec_builtin_mask_for_load): (altivec_builtin_mask_for_store): New variables. (rs6000_builtin_mask_for_load): New function. Implements TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD. (rs6000_builtin_mask_for_store): New function. Implements TARGET_VECTORIZE_BUILTIN_MASK_FOR_STORE. (rs6000_expand_builtin): Expand the target builtins builtin_mask_for_load and builtin_mask_for_store. (altivec_init_builtins): Initialize the new target builtins. * config/i386/i386.c (ix86_misaligned_mem_ok): New function. Implements the target hook TARGET_VECTORIZE_MISALIGNED_MEM_OK. * tree-vectorizer.c (vect_create_data_ref): Renamed to vect_create_data_ref_ptr. Returns a pointer instead of an array-ref. (vect_create_addr_base_for_vector_ref): Additional argument (offset). (vectorizable_store): Call vect_create_data_ref_ptr with additional arguments, and create an indirect_ref with its return value data_ref. Check aligned_access_p. (vectorizable_load): Handle misaligned loads, using software-pipelined scheme with REALIGN_LOAD_EXPR and ALIGN_INDIRECT_REF if vec_realign_load_optab is supported, or using a scheme without software-pipelining with MISALIGNED_INDIRECT_REF if the target hook misaligned_mem_ok is supported. (vect_finish_stmt_generation): Typo. (vect_enhance_data_refs_alignment): Rename loop_vinfo to loop_info. (vect_analyze_data_refs_alignment): Don't fail vectorization in the presence of misaligned loads. (vect_analyze_data_ref_access): Add check for constant init. (vect_get_symbl_and_dr): Remove duplicate line. * tree-vectorizer.h (DR_MISALIGNMENT): Add comment. From-SVN: r87948
2004-09-20builtins.c (fold_builtin): Call the new omonymous target hook for ↵Paolo Bonzini1-0/+3
machine-dependent built-ins. 2004-09-20 Paolo Bonzini <bonzini@gnu.org> * builtins.c (fold_builtin): Call the new omonymous target hook for machine-dependent built-ins. * target-def.h (TARGET_FOLD_BUILTIN): New. * target.h (struct gcc_target): Add the fold_builtin hook. * targhooks.c (default_fold_builtin): New. * targhooks.h (default_fold_builtin): Declare it. From-SVN: r87756
2004-09-15configure.ac: Check for COMDAT support.Mark Mitchell1-3/+4
* configure.ac: Check for COMDAT support. Robustify check for SHF_MERGE support. * configure: Regenerated. * config.in: Likewise. * langhooks-def.h (lhd_comdat_group): New function. (LANG_HOOKS_COMDAT_GROUP): New macro. (LANG_HOOKS_DECLS): Use it. * langhooks.c (lhd_comdat_group): Define. * langhooks.h (lang_hooks_for_decls): Add comdat_group. * output.h (named_section_flags): Make it a macro. (named_section_real): New function. (default_no_named_section): Add decl parameter. (default_elf_asm_named_section): Likewise. (default_coff_asm_named_section): Likewise. (default_pe_asm_named_section): Likewise. * target.h (gcc_target): Adjust type of named_section. * varasm.c (named_section_flags): Rename to named_section_real. Add decl parameter. (default_no_named_section): Add decl parameter. (default_elf_asm_named_section): Use COMDAT, if available. Deal with the case that ASM_COMMENT_START is "@". (default_coff_asm_named_section): Add decl parameter. (default_pe_asm_named_section): Likewise. * config/alpha/alpha.c (vms_asm_named_section): Add decl parameter. (unicosmk_asm_named_section): Likewise. * config/arm/arm.c (arm_elf_asm_named_section): Remove. * config/arm/elf.h (TARGET_ASM_NAMED_SECTION): Likewise. * config/c4x/c4x.c (c4x_asm_named_section): Add decl parameter. * config/cris/cris-protos.h (cris_target_asm_named_section): Likewise. * config/cris/cris.c (cris_target_asm_named_section): Likewise. * config/h8300/h8300.c (h8300_asm_named_section): Likewise. * config/i386/i386-protos.h (i386_pe_asm_named_section): Likewise. * config/i386/winnt.c (i386_pe_asm_named_section): Likewise. * config/m68k/m68k.c (m68k_coff_asm_named_section): Likewise. * config/mcore/mcore.c (mcore_asm_named_section): Likewise. * config/rs6000/rs6000.c (rs6000_xcoff_asm_named_section): Likewise. * config/sparc/sparc.c (sparce_elf_asm_named_section): Likewise. * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define. * cp-tree.h (cxx_comdat_group): Declare. * decl.c (cxx_comdat_group): New function. From-SVN: r87557
2004-09-08function.c (reference_callee_copied): New.Richard Henderson1-0/+6
* function.c (reference_callee_copied): New. (assign_parm_setup_reg): Use it. * calls.c (initialize_argument_information): Likewise. (emit_library_call_value_1): Likewise. * function.h (reference_callee_copied): Declare. * target.h (struct gcc_target): Add callee_copies. * target-def.h (TARGET_CALLEE_COPIES): New. (TARGET_PASS_BY_REFERENCE): Update default. * expr.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * targhooks.c (hook_callee_copies_named): New. (hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Rename from hook_pass_by_reference_false. (hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): New. * targhooks.h: Update decls. * config/arc/arc.c (TARGET_CALLEE_COPIES): New. * config/arc/arc.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/frv/frv-protos.h (frv_function_arg_callee_copies): Remove. * config/frv/frv.c (frv_function_arg_callee_copies): Remove. * config/frv/frv.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/iq2000/iq2000.c (TARGET_CALLEE_COPIES): New. * config/iq2000/iq2000.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/m68hc11/m68hc11.c (TARGET_CALLEE_COPIES): New. * config/m68hc11/m68hc11.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/mips/mips.c (TARGET_CALLEE_COPIES): New. (mips_callee_copies): New. * config/mips/mips.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/mmix/mmix.c (TARGET_CALLEE_COPIES): New. * config/mmix/mmix.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/mn10300/mn10300.c (TARGET_CALLEE_COPIES): New. * config/mn10300/mn10300.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/pa/pa.c (TARGET_CALLEE_COPIES): New. * config/pa/pa.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/sh/sh.c (sh_callee_copies): New. (TARGET_CALLEE_COPIES): New. * config/sh/sh.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * config/v850/v850.c (TARGET_CALLEE_COPIES): New. * config/v850/v850.h (FUNCTION_ARG_CALLEE_COPIES): Remove. * doc/tm.texi (TARGET_CALLEE_COPIES): Replace documentation for FUNCTION_ARG_CALLEE_COPIES. * doc/rtl.texi (CALL_INSN_FUNCTION_USAGE): Update. From-SVN: r87195
2004-09-05c-common.c, [...]: Fix comment formatting.Kazu Hirata1-1/+1
* c-common.c, c-decl.c, combine.c, defaults.h, fold-const.c, gimplify.c, gthr-nks.h, hooks.c, lambda-code.c, lambda-mat.c, stor-layout.c, target.h, tree-cfg.c, tree-chrec.c, tree-if-conv.c, tree-inline.c, tree-into-ssa.c, tree-mudflap.c, tree-optimize.c, tree-scalar-evolution.c, tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-dce.c, tree-ssa-pre.c, tree-vectorizer.c, tree-vectorizer.h, tree.h, vec.h: Fix comment formatting. From-SVN: r87105
2004-09-04md.texi (shift patterns): New anchor.Richard Sandiford1-0/+4
* doc/md.texi (shift patterns): New anchor. Add reference to TARGET_SHIFT_TRUNCATION_MASK. * doc/tm.texi (TARGET_SHIFT_TRUNCATION_MASK): Document. * target.h (shift_truncation_mask): New target hook. * targhook.h (default_shift_truncation_mask): Declare. * targhook.c (default_shift_truncation_mask): Define. * target-def.h (TARGET_SHIFT_TRUNCATION_MASK): Define. (TARGET_INITIALIZER): Include it. * simplify-rtx.c (simplify_binary_operation): Combine ASHIFT, ASHIFTRT and LSHIFTRT cases. Truncate arg1 if SHIFT_COUNT_TRUNCATED, otherwise reject all out-of-range values. Fix sign-extension code for modes whose width is smaller than HOST_BITS_PER_WIDE_INT. * optabs.c (simplify_expand_binop, force_expand_binop): New functions. (expand_superword_shift, expand_subword_shift): Likewise. (expand_doubleword_shift_condmove, expand_doubleword_shift): Likewise. (expand_binop): Use them to implement double-word shifts. * config/arm/arm.c (arm_shift_truncation_mask): New function. (TARGET_SHIFT_TRUNCATION_MASK): Define. From-SVN: r87079
2004-09-01target-def.h (TARGET_CXX): Add TARGET_CXX_EXPORT_CLASS_DATA.Mark Mitchell1-0/+4
* target-def.h (TARGET_CXX): Add TARGET_CXX_EXPORT_CLASS_DATA. * target.h (cxx): Add export_class_data. * config/arm/arm.c (arm_cxx_export_class_data): New function. (TARGET_CXX_EXPORT_CLASS_DATA): Use it. * testsuite/g++.dg/ext/visibility/arm1.C: New test. * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro. * class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P. * decl2.c (determine_visibility): Honor TARGET_CXX_EXPORT_CLASS_DATA. * g++.dg/ext/visibility/arm1.C: New test. From-SVN: r86867
2004-08-31hooks.c (hook_bool_void_true): New function.Mark Mitchell1-0/+5
* hooks.c (hook_bool_void_true): New function. * hooks.h (hook_bool_void_true): Declare. * target-def.h (TARGET_CXX): Add TARGET_CXX_KEY_METHOD_MAY_BE_INLINE. * target.h (struct cxx): Add key_method_may_be_inline. * config/arm/arm.c (arm_cxx_key_method_may_be_inline): New function. (TARGET_CXX_KEY_METHOD_MAY_BE_INLINE): New macro. * config/arm/bpabi.h: Use __THUMB_INTERWORK__ instead of __THUMB_INTERWORK. * class.c (key_method): Rename to ... (determine_key_method): ... this. (finish_struct_1): Adjust accordingly. * cp-tree.h (key_method): Declare. * decl2.c (maybe_emit_vtables): Determine the key method here if it has not already been done. * g++.dg/abi/key1.C: New test. From-SVN: r86843
2004-08-25target-def.h (TARGET_SCALAR_MODE_SUPPORTED_P): New.Richard Henderson1-1/+8
* target-def.h (TARGET_SCALAR_MODE_SUPPORTED_P): New. * target.h (struct gcc_target): Add scalar_mode_supported_p. * targhooks.c (default_scalar_mode_supported_p): New. * targhooks.h (default_scalar_mode_supported_p): Declare. * doc/tm.texi (TARGET_SCALAR_MODE_SUPPORTED_P): Document. * c-common.c (handle_mode_attribute): Query scalar_mode_supported_p before attempting to create types. Tidy. * expr.c (vector_mode_valid_p): Use scalar_mode_supported_p. * config/alpha/alpha.c (alpha_scalar_mode_supported_p): New. (TARGET_SCALAR_MODE_SUPPORTED_P): New. From-SVN: r86593
2004-08-24defaults.h (VECTOR_MODE_SUPPORTED_P): Remove macro.Eric Christopher1-5/+8
2004-08-23 Eric Christopher <echristo@redhat.com> * defaults.h (VECTOR_MODE_SUPPORTED_P): Remove macro. * system.h (VECTOR_MODE_SUPPORTED_P): Poison. * target-def.h (TARGET_VECTOR_MODE_SUPPORTED_P): Define. * target.h: Ditto. * hooks.h: Include machmode.h. (hook_bool_mode_false): Declare. * hooks.c (hook_bool_mode_false): Define. * expr.c (vector_mode_valid_p): Use targetm.vector_mode_supported_p. * stor-layout.c (layout_type): Ditto. * config/alpha/alpha.c (alpha_vector_mode_supported_p): New function. Define to target macro. * config/alpha/alpha.h (VECTOR_MODE_SUPPORTED_P): Delete. * config/arm/arm.c: Ditto. Use. * config/arm/arm.h: Ditto. * config/arm/arm-protos.h: Ditto. * config/i386/i386.c: Ditto. * config/i386/i386.h: Ditto. * config/rs6000/rs6000.c: Ditto. * config/rs6000/rs6000.h: Ditto. * config/sh/sh.c: Ditto. * config/sh/sh.h: Ditto. * config/sh/sh-protos.h: Ditto. * config/sh/sh.md: Use. * doc/tm.texi: Move documentation for VECTOR_MODE_SUPPORTED_P to TARGET_VECTOR_MODE_SUPPORTED_P. 2004-08-23 Eric Christopher <echristo@redhat.com> * trans-types.c (gfc_type_for_mode): Remove VECTOR_TYPE_SUPPORTED_P usage. Use build_vector_type_for_mode for vector types. From-SVN: r86453
2004-08-16c-common.c (handle_used_attribute): Set DECL_PRESERVE_P.Devang Patel1-0/+5
* c-common.c (handle_used_attribute): Set DECL_PRESERVE_P. * print-tree.c (print_node): Print DECL_PRESERVE_P. * target-def.h (TARGET_ASM_MARK_DECL_PRESERVED): New #define. (TARGET_ASM_OUT): New member, TARGET_ASM_MARK_DECL_PRESERVED * target.h (struct gcc_target): New member, mark_decl_preserved. * hooks.c (hook_void_charptr): Rename to ... (hook_void_constcharptr): ... new name. * hooks.h (hook_void_charptr): Rename to .. (hook_void_constcharptr): ... new name. * tree.h (DECL_PRESERVE_P): New #define. (struct tree_decl): New member, preserve_flag. * varasm.c (assemble_start_function): Mark decl preserved. (assemble_variable): Same. * darwin.c (darwin_mark_decl_preserved): New function. * darwin.h (TARGET_ASM_MARK_DECL_preserved): New #define. * darwin-protos.h (darwin_mark_decl_preserved): New decl. * doc/tm.texi (TARGET_ASM_MARK_DECL_PRESERVED): Document. testsuite: * gcc.dg/darwin-20040809-1.c: New test. From-SVN: r86076
2004-08-16Patch to fix -mcpu=G5 interface to EH runtime library.Fariborz Jahanian1-0/+3
Reviewed by Geoff Keating. From-SVN: r86074
2004-08-12re PR c++/16276 ([3.4 only] G++ generates local references to linkonce sections)Jakub Jelinek1-0/+4
PR c++/16276 * output.h (default_function_rodata_section, default_no_function_rodata_section): New prototypes. * target.h (struct gcc_target): Add asm_out.function_rodata_section. * target-def.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Define. (TARGET_ASM_OUT): Add it. * varasm.c (default_function_rodata_section, default_no_function_rodata_section): New functions. * final.c (final_scan_insn): Call targetm.asm_out.function_rodata_section instead of readonly_data_section. * config/darwin.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Define. * config/mcore/mcore.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * config/ip2k/ip2k.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * config/rs6000/xcoff.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * config/alpha/alpha.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * config/i386/cygming.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * config/i386/i386-interix.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * config/arm/pe.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * config/avr/avr.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise. * doc/tm.texi (TARGET_ASM_FUNCTION_RODATA_SECTION): Document. * g++.old-deja/g++.other/comdat4.C: New test. * g++.old-deja/g++.other/comdat4-aux.cc: New. From-SVN: r85873
2004-08-04target-def.h (TARGET_CXX_CDTOR_RETURNS_THIS): Define.Paul Brook1-0/+2
gcc/ * target-def.h (TARGET_CXX_CDTOR_RETURNS_THIS): Define. (TARGET_CXX): Use it. * target.h (struct gcc_target): Add cdtor_returns_this. * config/arm/arm.c (arm_cxx_cdtor_returns_this): New function. (TARGET_CXX_CDTOR_RETURNS_THIS): Define. * doc/tm.texi: Document TARGET_CXX_CDTOR_RETURNS_THIS. gcc/cp/ * Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H. * cp-tree.h (struct language_function): Rename x_dtor_label to x_cdtor_label. (dtor_label): Rename ... (cdtor_label): ... to this. * decl.c (begin_constructor_body): Remove. (check_special_function_return_type): Maybe change the return type. (grokdeclarator): Pass the class type. (start_preparsed_function): Constructors may need a return label. (finish_constructor_body, finish_destructor_body): Set the return value. (begin_function_body): Don't call begin_constructor_body. (finish_function): Don't warn for constructors or destructors. (implicitly_declare_fn): Maybe change the return type. * optimize.c: Include target.h. (maybe_clone_body): Remap the function result. * semantics.c: Include target.h. (finish_return_stmt): Maybe jump to return label for constructors. From-SVN: r85561
2004-07-20genattr.c (struct range, [...]): Remove them.Paolo Bonzini1-6/+4
2004-07-19 Paolo Bonzini <bonzini@gnu.org> * genattr.c (struct range, struct function_unit, write_units, extend_range, init_range): Remove them. (main): Remove code dealing with DEFINE_FUNCTION_UNIT. Output "#define INSN_SCHEDULING" here. * genattrtab.c (struct range, struct function_unit_op, struct function_unit, struct dimension, enum operator, operate_exp, expand_units, simplify_knowing, encode_units_mask, simplify_by_exploding, find_and_mark_used_attributes, unmark_used_attributes, add_values_to_cover, increment_current_value, test_for_current_value, simplify_with_current_value, simplify_with_current_value_aux, gen_unit, write_unit_name, write_function_unit_info, write_complex_function, write_toplevel_expr, find_single_value, extend_range): Remove. (write_attr_get): Do not handle common_av->value being an FFS. (struct attr_desc): Remove func_units_p and blockage_p. (write_attr_valueq): Do not handle them. (find_attr): Do not clear them. (make_internal_attr): Do not initialize them. (main): Remove code dealing with DEFINE_FUNCTION_UNIT. * sched-vis.c (init_target_units, insn_print_units, init_block_visualization, print_block_visualization, visualize_scheduled_insns, visualize_no_unit, visualize_stall_cycles, visualize_alloc, visualize_free, target_units, get_visual_tbl_length, MAX_VISUAL_LINES, INSN_LEN, n_visual_lines, visual_tbl_line_length, visual_tbl, n_vis_no_unit, MAX_VISUAL_NO_UNIT, vis_no_unit): Remove. * haifa-sched.c (blockage_range, clear_units, schedule_unit, actual_hazard, potential_hazard, insn_unit, unit_last_insn, unit_tick, actual_hazard_this_instance, potential_hazard, schedule_unit, max_insn_queue_index_value): Remove. (MAX_INSN_QUEUE_INDEX): Removed, renamed throughout to max_insn_queue_index. * rtl.def (DEFINE_FUNCTION_UNIT): Remove. * doc/md.texi (Processor pipeline description): Remove references to old pipeline descriptions. (Automaton pipeline description): Merge with the above. (Old pipeline description, Comparison of the two descriptions): Remove. * bt-load.c (migrate_btr_def): Remove references to use_pipeline_interface. * haifa-sched.c (insn_cost, schedule_insn, schedule_block, advance_one_cycle, sched_init, queue_to_ready, sched_finish): Likewise. * modulo-sched.c (sms_schedule, advance_one_cycle, ps_has_conflicts): Likewise. * sched-rgn.c (init_ready): Likewise. (debug_dependencies): Likewise, and remove an "if (1)". * target.h (use_dfa_pipeline_interface): Remove. * config/alpha/alpha.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/arc/arc.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/arm/arm.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/c4x/c4x.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/frv/frv.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/i386/i386.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/ia64/ia64.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/iq2000/iq2000.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/m32r/m32r.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/mcore/mcore.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/mips/mips.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/pa/pa.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/rs6000/rs6000.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/s390/s390.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/sh/sh.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/sparc/sparc.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/v850/v850.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * config/xtensa/xtensa.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. * doc/tm.texi (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove. From-SVN: r84944
2004-07-15dwarf2out.c (dwarf2out_begin_prologue): Rename IA64_UNWIND_INFO to ↵Paul Brook1-0/+3
TARGET_UNWIND_INFO. * dwarf2out.c (dwarf2out_begin_prologue): Rename IA64_UNWIND_INFO to TARGET_UNWIND_INFO. * except.c (output_function_exception_table): Ditto. * except.h: Ditto. * opts.c (decode_options): Ditto. * passes.c (rest_of_handle_final): Ditto. * final.c (final_start_function): Ditto. (final_scan_insn, final_scan_insn): Replace IA64_UNWIND_EMIT with target hook. * targhooks.h (default_unwind_emit): Declare. * targhooks.c (default_unwind_emit): New function. * target-def.h: Define and use TARGET_UNWIND_EMIT. * target.h (struct gcc_target): Add unwind_emit. * config/ia64/ia64.c (TARGET_UNWIND_EMIT): Define. * config/ia64/ia64.h: Rename IA64_UNWIND_INFO to TARGET_UNWIND_INFO. Remove IA64_UNWIND_EMIT. * doc/tm.texi: Document TARGET_UNWIND_EMIT and TARGET_UNWIND_INFO. From-SVN: r84734
2004-07-13target.h (struct gcc_target): Add calls.pass_by_reference.Richard Henderson1-0/+7
* target.h (struct gcc_target): Add calls.pass_by_reference. * target-def.h (TARGET_PASS_BY_REFERENCE): New. * function.c (pass_by_reference): Use the hook. * system.h (FUNCTION_ARG_PASS_BY_REFERENCE): Poison. * targhooks.c, targhooks.h (hook_pass_by_reference_false): New. (hook_pass_by_reference_must_pass_in_stack): New. * config/alpha/alpha.c (function_arg): Don't query pass-by-ref. (alpha_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/alpha/alpha.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/arc/arc.c (arc_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/arc/arc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/arm/arm-protos.h (arm_function_arg_pass_by_reference): Remove. * config/arm/arm.c (TARGET_PASS_BY_REFERENCE): New. (arm_pass_by_reference): Rename from arm_function_arg_pass_by_reference. * config/arm/arm.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/c4x/c4x.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/cris/cris.c (cris_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/cris/cris.h (FUNCTION_ARG): Don't query pass-by-ref. (FUNCTION_INCOMING_ARG, FUNCTION_ARG_ADVANCE): Likewise. (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/fr30/fr30.c (TARGET_PASS_BY_REFERENCE): New. * config/fr30/fr30.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/frv/frv-protos.h (frv_function_arg_pass_by_reference): Kill. * config/frv/frv.c (TARGET_PASS_BY_REFERENCE): New. (frv_function_arg_pass_by_reference): Remove. * config/frv/frv.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/i386/i386-protos.h (function_arg_pass_by_reference): Remove. * config/i386/i386.c (TARGET_PASS_BY_REFERENCE): New. (ix86_pass_by_reference): Rename from function_arg_pass_by_reference. * config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/ia64/ia64-protos.h (ia64_function_arg_pass_by_reference): Kill. * config/ia64/ia64.c (TARGET_PASS_BY_REFERENCE): New. (ia64_pass_by_reference): Rename from ia64_function_arg_pass_by_reference. * config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/ip2k/ip2k.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/iq2000/iq2000-protos.h (function_arg_pass_by_reference): Kill. * config/iq2000/iq2000.c (TARGET_PASS_BY_REFERENCE): New. (iq2000_pass_by_reference): Rename from function_arg_pass_by_reference. * config/iq2000/iq2000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref. * config/m32r/m32r-protos.h (m32r_pass_by_reference): Remove. * config/m32r/m32r.c (TARGET_PASS_BY_REFERENCE): New. (m32r_pass_by_reference): Adjust prototype. Make static. Handle mode sizes correctly. * config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c (m68hc11_function_arg_pass_by_reference): Remove. * config/m68hc11/m68hc11.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref. * config/mcore/mcore.c (TARGET_PASS_BY_REFERENCE): New. * config/mcore/mcore.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/mips/mips-protos.h (function_arg_pass_by_reference): Remove. * config/mips/mips.c (TARGET_PASS_BY_REFERENCE): New. (mips_va_arg): Use pass_by_reference. (mips_pass_by_reference): Rename from function_arg_pass_by_reference. Handle mode sizes correctly. * config/mips/mips.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref. * config/mmix/mmix-protos.h (mmix_function_arg_pass_by_reference): Kill. * config/mmix/mmix.c (TARGET_PASS_BY_REFERENCE): New. (mmix_pass_by_reference): Rename from mmix_function_arg_pass_by_reference. * config/mmix/mmix.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/mn10300/mn10300.c (TARGET_PASS_BY_REFERENCE): New. (mn10300_pass_by_reference): New. * config/mn10300/mn10300.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/pa/pa.c (pa_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/pa/pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/rs6000/rs6000-protos.h (function_arg_pass_by_reference): Kill. * config/rs6000/rs6000.c (TARGET_PASS_BY_REFERENCE): New. (rs6000_pass_by_reference): Rename from function_arg_pass_by_reference. * config/rs6000/rs6000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/s390/s390-protos.h (s390_function_arg_pass_by_reference): Kill. * config/s390/s390.c (TARGET_PASS_BY_REFERENCE): New. (s390_pass_by_reference): Rename from s390_function_arg_pass_by_reference. (s390_function_arg_advance): Don't query pass-by-ref. (s390_function_arg): Likewise. (s390_gimplify_va_arg): Use pass_by_reference. (s390_call_saved_register_used): Likewise. * config/s390/s390.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/sh/sh.c (TARGET_PASS_BY_REFERENCE): New. (shcompact_byref, sh_pass_by_reference): New. * config/sh/sh.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (SHCOMPACT_BYREF): Remove. * config/sparc/sparc-protos.h (function_arg_pass_by_reference): Kill. * config/sparc/sparc.c (TARGET_PASS_BY_REFERENCE): New. (sparc_pass_by_reference): Rename from function_arg_pass_by_reference. (sparc_gimplify_va_arg): Use pass_by_reference. * config/sparc/sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/stormy16/stormy16.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/v850/v850.c (TARGET_PASS_BY_REFERENCE): New. (v850_pass_by_reference): New. * config/v850/v850.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * doc/tm.texi (TARGET_PASS_BY_REFERENCE): Update from FUNCTION_ARG_PASS_BY_REFERENCE docs. From-SVN: r84672
2004-07-13target-def.h (TARGET_MUST_PASS_IN_STACK): New.Richard Henderson1-0/+6
* target-def.h (TARGET_MUST_PASS_IN_STACK): New. * target.h (struct gcc_target): Add calls.must_pass_in_stack. * expr.h (MUST_PASS_IN_STACK): Remove. * system.h (MUST_PASS_IN_STACK): Poison. * tree.h (must_pass_in_stack_var_size): Declare. (must_pass_in_stack_var_size_or_pad): Declare. * calls.c (must_pass_in_stack_var_size): New. (must_pass_in_stack_var_size_or_pad): Rename from default_must_pass_in_stack. * config/alpha/alpha.c (unicosmk_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/alpha/unicosmk.h (MUST_PASS_IN_STACK): Remove. * config/fr30/fr30.c (fr30_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/fr30/fr30.h (MUST_PASS_IN_STACK): Remove. * config/frv/frv.c (frv_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/frv/frv.h (MUST_PASS_IN_STACK): Remove. * config/i386/i386-protos.h (ix86_must_pass_in_stack): Remove. * config/i386/i386.c (TARGET_MUST_PASS_IN_STACK): New. (ix86_must_pass_in_stack): Make static. * config/i386/i386.h (MUST_PASS_IN_STACK): Remove. * config/ia64/ia64.c (TARGET_MUST_PASS_IN_STACK): New. * config/ia64/ia64.h (MUST_PASS_IN_STACK): Remove. * config/m32r/m32r.c (TARGET_MUST_PASS_IN_STACK): New. * config/m32r/m32r.h (MUST_PASS_IN_STACK): Remove. * config/mcore/mcore-protos.h (mcore_must_pass_on_stack): Remove. * config/mcore/mcore.c (TARGET_MUST_PASS_IN_STACK): New. (mcore_must_pass_on_stack): Remove. * config/mcore/mcore.h (MUST_PASS_IN_STACK): Remove. * config/mips/mips.c (TARGET_MUST_PASS_IN_STACK): New. * config/mips/mips.h (MUST_PASS_IN_STACK): Remove. * config/pa/pa.c (TARGET_MUST_PASS_IN_STACK): New. * config/pa/pa.h (MUST_PASS_IN_STACK): Remove. * config/rs6000/aix.h (MUST_PASS_IN_STACK): Remove. * config/rs6000/linux64.h (MUST_PASS_IN_STACK): Remove. * config/rs6000/rs6000.c (rs6000_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/sh/sh.c (TARGET_MUST_PASS_IN_STACK): New. * config/sh/sh.h (MUST_PASS_IN_STACK): Remove. * config/sparc/sparc.c (TARGET_MUST_PASS_IN_STACK): New. * config/sparc/sparc.h (MUST_PASS_IN_STACK): Remove. * config/xtensa/xtensa.c (TARGET_MUST_PASS_IN_STACK): New. * config/xtensa/xtensa.h (MUST_PASS_IN_STACK): Remove. * doc/tm.texi (TARGET_MUST_PASS_IN_STACK): Update from MUST_PASS_IN_STACK. * calls.c, function.c, config/alpha/alpha.c, config/alpha/alpha.h, config/alpha/unicosmk.h, config/alpha/vms.h, config/c4x/c4x.c, config/cris/cris.h, config/fr30/fr30.c, config/fr30/fr30.h, config/frv/frv.c, config/i386/i386.c, config/iq2000/iq2000.c, config/mcore/mcore.c, config/mcore/mcore.h, config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h, config/rs6000/rs6000.c, config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c, config/xtensa/xtensa.c: Use target hook. From-SVN: r84606
2004-07-12target.h (struct gcc_target): Move gimplify_va_arg_expr next to ↵Richard Henderson1-4/+4
build_builtin_va_list. * target.h (struct gcc_target): Move gimplify_va_arg_expr next to build_builtin_va_list. * target-def.h (TARGET_GIMPLIFY_VA_ARG_EXPR): Update to match. * builtins.c (gimplify_va_arg_expr): Likewise. * gimplify.c (copy_if_shared_r): Likewise. From-SVN: r84578
2004-07-09md.texi (Processor pipeline description): Mention that the old pipeline ↵Steven Bosscher1-12/+0
description is deprecated. * doc/md.texi (Processor pipeline description): Mention that the old pipeline description is deprecated. * config/rs6000/7450.md (automaton ppc7450): Split up, move mciu_7450 function unit to... (automaton ppc7450mciu): ...new automaton. * haifa-sched.c (insert_schedule_bubbles_p): Remove. (schedule_block): Don't consider inserting bubbles. (sched_init): Don't initialize DFA bubbles. * target-def.h (TARGET_SCHED_INIT_DFA_BUBBLES, TARGET_SCHED_DFA_BUBBLE): Remove. * target.h (init_dfa_bubbles, dfa_bubble): Remove hooks. * doc/tm.texi (TARGET_SCHED_INIT_DFA_BUBBLES, TARGET_SCHED_DFA_BUBBLE): Remove documentation. * stmt.c (conditional_context): Remove prototype. * tree.h (conditional_context): Remove. * tree-cfg.c (pre_insert_on_edge): Remove. * c-common.h (c_expand_asm_operands): Remove prototype. * c-typeck.c (c_expand_asm_operands): Remove. cp/ * typeck.c (c_expand_asm_operands): Remove. From-SVN: r84411
2004-07-01target.h (struct gcc_target): Add new field to struct cxx: import_export_class.Nick Clifton1-0/+3
* target.h (struct gcc_target): Add new field to struct cxx: import_export_class. * target-def.h (TARGET_CXX): Initialise the new field. (TARGET_CXX_IMPORT_EXPORT_CLASS): Provide a default value for the new field. * doc/tm.texi: Document the new target hook. * decl2.c (import_export_class): Invoke the import_export_class field in the gcc_target structure if it is not empty. From-SVN: r83964
2004-06-30RTL prologue/epilogue for SPARCEric Botcazou1-0/+5
RTL prologue/epilogue for SPARC * config/sparc/sparc-protos.h (sparc_emitting_epilogue): Delete. (sparc_skip_caller_unimp): Likewise. (load_pic_register): Likewise. (leaf_return_peephole_ok): Likewise. (compute_frame_size): Rename into sparc_compute_frame_size. (sparc_expand_prologue): New prototype. (sparc_expand_epilogue): Likewise. (output_return): Likewise. (eligible_for_epilogue_delay): Rename into eligible_for_return_delay. * config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Adjust call to compute_frame_size. Move comment up. (DELAY_SLOTS_FOR_EPILOGUE): Delete. (ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise. (EPILOGUE_USES): Return true for %g1 if the function uses EH return. * config/sparc/sparc.md (UNSPECV_SAVEW): New constant. (type attribute): Add 'return' and 'savew'. (eligible_for_return_delay): New attribute. (return): New delay_slot. (sibcall_epilogue): Call sparc_expand_epilogue. (prologue): Likewise. Move up. (save_register_window): New expander. (save_register_windowsi): New pattern. (save_register_windowdi): Likewise. (epilogue): New expander. (return_internal): New pattern. (Return peepholes): Delete. * config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): New macro. (sparc_emitting_epilogue): Delete. (sparc_skip_caller_unimp): Likewise. (sparc_sr_alias_set): New global variable. (frame_base_name): Delete. (frame_base_reg): New global variable. (sparc_override_options): Get new alias set for save/restore. (leaf_return_peephole_ok): Delete. (eligible_for_epilogue_delay): Rename into eligible_for_return_delay. Factor out code into eligible_for_restore_insn_delay. (eligible_for_restore_insn_delay): New function extraced from above. Use IN_UNCOND_BRANCH_DELAY_TRUE instead of IN_BRANCH_DELAY_TRUE. (eligible_for_sibcall_delay): Use SIBCALL_SLOT_EMPTY_P. Factor out code into eligible_for_restore_insn_delay. (load_pic_register): Make static. Remove check. (save_regs): Delete. (restore_regs): Likewise. (compute_frame_size): Rename into sparc_compute_frame_size. Rename leaf_function into leaf_function_p. (build_big_number): Delete. (save_or_restore_regs): New function. (emit_save_regs): Likewise. (emit_restore_regs): Likewise. (emit_stack_pointer_increment ): Likewise. (emit_stack_pointer_decrement): Likewise. (sparc_expand_prologue): Likewise. (sparc_function_prologue): Rename into sparc_asm_function_prologue. Remove all code to emit instructions. (sparc_expand_epilogue): New function. (sparc_function_epilogue): Rename into sparc_asm_function_epilogue. Remove all code to emit instructions. (output_restore): New function. (output_return): Likewise. (output_sibcall): Factor out code into output_restore. (print_operand): Adjust for frame_base_reg. * target.h (struct gcc_target): New field 'late_rtl_prologue_epilogue'. * target-def.h (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): New define. (TARGET_INITIALIZER): Add it. * passes.c (rest_of_compilation): Set the conditional predicate 'current_function_uses_only_leaf_regs' before sched2. If target has 'late_rtl_prologue_epilogue', emit RTL prologue/epilogue right before sched2. * reorg.c (return_insn_p): New predicate. (find_end_label): Use it. (relax_delay_slots): Do not thread an unconditional jump that points to the end return label. * doc/tm.texi (Registers) <Leaf Functions>: Clarify the validity domain of 'current_function_uses_only_leaf_regs'. (Stack and Calling) <Function Entry>: Document new target hook TARGET_LATE_RTL_PROLOGUE_EPILOGUE. From-SVN: r83901
2004-06-29target-def.h (TARGET_CXX_GET_COOKIE_SIZE, [...]): Define.Paul Brook1-0/+5
gcc/ * target-def.h (TARGET_CXX_GET_COOKIE_SIZE, TARGET_CXX_COOKIE_HAS_SIZE): Define. (TARGET_CXX): Use them. * target.h (struct gcc_target): Add cxx.get_cookie_size and cxx.cookie_has_size. * targhooks.c (default_cxx_get_cookie_size): New fucntion. * targhooks.h (default_cxx_get_cookie_size): Add prototype. * config/arm/arm.c (TARGET_CXX_GET_COOKIE_SIZE, TARGET_CXX_COOKIE_HAS_SIZE): Define. (arm_get_cookie_size, arm_cookie_has_size): New functions. * Make-lang.in (cp/init.o): Add dependency on $(TARGET_H). * doc/tm.texi: Document TARGET_CXX_GET_COOKIE_SIZE and TARGET_CXX_COOKIE_HAS_SIZE. gcc/cp/ * init.c: Include target.h. (get_cookie_size): Remove and replace with target hook. Update callers. (build_new_1): Store the element size in the cookie. libstdc++-v3/ * libsupc++/vec.cc (__cxa_vec_new2, __cxa_vec_new3): Store the element size in the cookie. testsuite/ * g++.old-deja/g++.abi/arraynew.C: Handle ARM EABI cookies. * g++.old-deja/g++.abi/cxa_vec.C: Allocate larger cookies for AEABI. From-SVN: r83854
2004-06-28m32r.c (m32r_sched_odd_word_p, [...]): Remove.Steven Bosscher1-1/+1
* config/m32r/m32r.c (m32r_sched_odd_word_p, m32r_adjust_cost, m32r_sched_init, m32r_sched_reorder, m32r_variable_issue): Remove. (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_INIT, TARGET_SCHED_REORDER): Don't define. * config/m32r/m32r.md: Rewrite the pipeline description as a DFA. From-SVN: r83829
2004-06-25target-def.h (TARGET_CXX_GUARD_TYPE, [...]): Define.Paul Brook1-0/+8
gcc/ * target-def.h (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT, TARGET_CXX): Define. (TARGET_INITIALIZER): Use TARGET_CXX. * target.h (struct gcc_target): Add struct cxx. * targhooks.h (default_cxx_guard_type): Add prototype. * targhooks.c (default_cxx_guard_type): New function. * config/arm/arm.c (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT): Define. (arm_cxx_guard_type, arm_cxx_guard_mask_bit): New functions. * doc/tm.texi: Document TARGET_CXX_GUARD_TYPE and TARGET_CXX_GUARD_MASK_BIT. gcc/cp/ * decl2.c (get_guard): Call targetm.cxx.guard_type. (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit. libstdc++/ * libsupc++/cxxabi.h: Define __ARM_EABI__ (__guard): Use it. * libsupc++/guard.h (__cxa_guard_acquire, __cxa_guard_release): Ditto. From-SVN: r83660
2004-06-20c-common.h (has_c_linkage): New interface.Zack Weinberg1-0/+6
* c-common.h (has_c_linkage): New interface. * c-cppbuiltin.c: Include target.h. (c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and __PRAGMA_EXTERN_PREFIX when appropriate. * c-pragma.c: Include target.h. Document clarified semantics of symbol-renaming #pragmas. (handle_pragma_redefine_extname, handle_pragma_extern_prefix) (maybe_apply_renaming_pragma): Rewrite according to clarified semantics. Always recognize, but do not necessarily execute. (init_pragma): Unconditionally register symbol-renaming pragmas. * system.h: Poison HANDLE_PRAGMA_REDEFINE_EXTNAME and HANDLE_PRAGMA_EXTERN_PREFIX. * target.h (struct gcc_target): Add handle_pragma_redefine_extname and handle_pragma_extern_prefix flags. * target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME and TARGET_HANDLE_PRAGMA_EXTERN_PREFIX. * Makefile.in (c-pragma.o, c-cppbuiltin.o): Update dependencies. * config/sol2.h: Define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME, not HANDLE_PRAGMA_REDEFINE_EXTNAME. (TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_REDEFINE_EXTNAME. (TRANSFER_FROM_TRAMPOLINE): Prototype mprotect. * config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX, not HANDLE_PRAGMA_EXTERN_PREFIX. (TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_EXTERN_PREFIX. * doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine into one section "Symbol-Renaming Pragmas"; clarify; document adjusted semantics. * builtins.c (expand_builtin): Do not issue error for a builtin with no special case code and no DECL_ASSEMBLER_NAME; just do the library call. * c-decl.c (builtin_function): Don't call make_decl_rtl. * c-objc-common.c (has_c_linkage): Stub implementation. * cgraphunit.c (cgraph_expand_function) (cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS. cp: * cp-lang.c (has_c_linkage): Implement. * cp-tree.h (set_mangled_name_for_decl): Don't prototype. * decl.c (duplicate_decls): Use COPY_DECL_RTL. (builtin_function_1): Don't call make_decl_rtl. (build_cp_library_fn): Don't call set_mangled_name_for_decl. (grokvardecl): Don't call mangle_decl. * except.c (nothrow_libfn_p): Look at DECL_NAME, not DECL_ASSEMBLER_NAME. * method.c (set_mangled_name_for_decl): Delete. * name-lookup.c (pushdecl): When a local extern shadows a file-scope declaration of the same object, give both DECLs the same DECL_UID. * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE on DECL_ASSEMBLER_NAME. testsuite: * g++.dg/expr/enum1.C, g++.dg/opt/const3.C: Declare abort with extern "C". * g++.dg/other/pragma-re-1.C: Add comments. From-SVN: r83405
2004-06-10target.h (struct gcc_target): Change gimplify_va_arg_expr hook signature.Jason Merrill1-1/+1
* target.h (struct gcc_target): Change gimplify_va_arg_expr hook signature. * tree-gimple.h: Adjust. * config/alpha/alpha.c (alpha_gimplify_va_arg): Adjust. * config/i386/i386.c (ix86_gimplify_va_arg): Adjust. Use fold_convert. * config/ia64/ia64.c (ia64_gimplify_va_arg): Adjust. * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust. Use COMPLEX_EXPR for complex numbers. Use fold_convert. * builtins.c (std_gimplify_va_arg_expr): Adjust. Use fold_convert. (gimplify_va_arg_expr): Return GS_ERROR in error case. Gimplify valist rather than calling stabilize_va_list. From-SVN: r82925
2004-06-09Gimplify VA_ARG_EXPR into simpler forms.Jason Merrill1-0/+4
* target.h: Add gimplify_va_arg_expr hook. * target-def.h: Add TARGET_GIMPLIFY_VA_ARG_EXPR. * fold-const.c (build_fold_addr_expr) (build_fold_addr_expr_with_type): Move from gimplify.c. * tree.h: Declare them. * gimplify.c (gimplify_and_add): New fn. (build_addr_expr, build_addr_expr_with_type): Move to fold-const.c. (gimplify_array_ref_to_plus, gimplify_modify_expr) (gimplify_expr): Use build_fold_*. (copy_if_shared_r): Only mark VA_ARG_EXPR volatile if we don't know how to gimplify it. * builtins.c (std_gimplify_va_arg_expr): New fn. (dummy_object): New static fn. (gimplify_va_arg_expr): New fn. (stabilize_va_list): Use build_fold_*. * tree-gimple.h: Declare new fns. * config/i386/i386.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define. (ix86_gimplify_va_arg): New fn. * config/i386/ia64.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define. (ia64_gimplify_va_arg): New fn. * config/i386/rs6000.c (rs6000_gimplify_va_arg): New fn. (TARGET_GIMPLIFY_VA_ARG_EXPR): Define. * config/i386/sparc.c (sparc_gimplify_va_arg): New fn. * alias.c (get_varargs_alias_set): Just return 0 for now. * c-objc-common.c (c_tree_printer): Improve handling of %T. From-SVN: r82838
2004-06-03Makefile.in (RA_H, [...]): New.Jerry Quinn1-0/+6
2004-06-03 Jerry Quinn <jlquinn@optonline.net> * Makefile.in (RA_H, RESOURCE_H, SCHED_INT_H, CFGLAYOUT_H, CFGLOOP_H, DF_H, DDG_H, TREE_SSA_LIVE_H): New. (TARGET_H): Add insn-modes.h. (tree-ssa.o, tree-cfg.o, tree-ssa-loop.o, toplev.o, passes.o, loop.o, loop-doloop.o, unroll.o, cfgloop.o, cfgloopanal.o, loop-iv.o, cfgloopmanip.o, loop-init.o, loop-unswitch.o, loop-unroll.o, ddg.o, modulo-sched.o, predict.o, cfglayout.o, ifcvt.o): Replace cfgloop.h with CFGLOOP_H. (toplev.o, passes.o, cfghooks.o, cfgloopmanip.o, loop-init.o, loop-unswitch.o, loop-unroll.o, ddg.o, modulo-sched.o, bb-reorder.o, tracer.o, cfglayout.o): Replace cfglayout.h with CFGLAYOUT_H. (ra.o, ra-build.o, ra-colorize.o, ra-debug.o, ra-rewrite.o): Replace ra.h with RA_H. (resource.o, regrename.o, insn-conditions.o, insn-emit.o, insn-recog.o): Replace resource.h with RESOURCE_H. (ddg.o, modulo-sched.o, haifa-sched.o, sched-deps.o, sched-rgn.o, sched-ebb.o, sched-vis.o, out_object_file): Replace sched-int.h with SCHED_INT_H. (web.o, lcm.o, df.o, ra.o, ra-build.o, ra-colorize.o, ra-debug.o, ra-rewrite.o): Replace df.h with DF_H. (ddg.o, modulo-sched.o): Replace ddf.h with DDG_H. (tree-outof-ssa.o, tree-ssa-live.o, tree-ssa-copyrename.o): Replace tree-ssa-live.h with TREE_SSA_LIVE_H. (insn-conditions.o): Remove unused reload.h. * cfglayout.h: Add include guard. Include basic-block.h. * cfgloop.h: Add include guard. Include basic-block.h, rtl.h. * ddg.h: Include sbitmap.h, basic-block.h, df.h. * df.h: Add include guard. Include bitmap.h, sbitmap.h, basic-block.h. * genconditions.c: Remove reload.h. * ra.h: Add include guard. Include bitmap.h, sbitmap.h, hard-reg-set.h, insn-modes.h. * resource.h: Add include guard. Include hard-reg-set.h. * sched-int.h: Add include guard. Include insn-attr.h, basic-block.h, rtl.h. * target.h: Add include guard. Include insn-modes.h. * tree-ssa-live.h: Include partition.h. From-SVN: r82600
2004-05-30bb-reorder.c, [...]: Fix comment formatting.Kazu Hirata1-1/+1
* bb-reorder.c, builtins.c, c-common.c, c-gimplify.c, c-incpath.c, cgraphunit.c, ddg.c, defaults.h, dwarf2out.c, expmed.c, flags.h, gcc.c, gensupport.c, gimplify.c, global.c, passes.c, reg-stack.c, target.h, toplev.c, tree-alias-ander.c, tree-alias-common.c, tree-cfg.c, tree-complex.c, tree-dfa.c, tree-eh.c, tree-mudflap.c, tree-mudflap.h, tree-outof-ssa.c, tree-phinodes.c, tree-pretty-print.c, tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-live.c, tree-ssa-live.h, tree-ssa-pre.c, tree.h, value-prof.h, varasm.c: Fix comment formatting. From-SVN: r82463
2004-05-19tm.texi (TARGET_ASM_EMIT_UNWIND_LABEL): Add argument to indicate if this ↵Mike Stump1-2/+3
label is for eh. * doc/tm.texi (TARGET_ASM_EMIT_UNWIND_LABEL): Add argument to indicate if this label is for eh. * config/darwin-protos.h (darwin_emit_unwind_label): Likewise. * config/darwin.c (darwin_emit_unwind_label): Likewise. * dwarf2out.c (output_call_frame_info): Likewise. * output.h (default_emit_unwind_label): Likewise. * target.h (unwind_label): Likewise. * varasm.c (default_emit_unwind_label): Likewise. * config/darwin.h (DWARF2_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE, DEBUG_FRAME_SECTION, DEBUG_INFO_SECTION, DEBUG_ABBREV_SECTION, DEBUG_ARANGES_SECTION, DEBUG_MACINFO_SECTION, DEBUG_LINE_SECTION, DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_STR_SECTION, DEBUG_RANGES_SECTION): Define. Radar 3657068. Co-Authored-By: Devang Patel <dpatel@apple.com> From-SVN: r82016
2004-05-14stor-layout.c (update_alignment_for_field): Use targetm.align_anon_bitfield.Paul Brook1-0/+3
* stor-layout.c (update_alignment_for_field): Use targetm.align_anon_bitfield. * target-def.h (TARGET_ALIGN_ANON_BITFIELD): Define. (TARGET_INITIALIZER): Use it. * target.h (struct gcc_target): Add align_anon_bitfield. * config/arm/arm.c (arm_align_anon_bitfield): New function. (TARGET_ALIGN_ANON_BITFIELD): Define. * doc/tm.texi: Document TARGET_ALIGN_ANON_BITFIELD. From-SVN: r81838
2004-03-24hooks.c (hook_constcharptr_tree_null): New hook.Ziemowit Laski1-0/+5
[gcc/ChangeLog] 2004-03-23 Ziemowit Laski <zlaski@apple.com> * hooks.c (hook_constcharptr_tree_null): New hook. * hooks.h (hook_constcharptr_tree_null): New prototype. * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): New target hook. * target.h (mangle_fundamental_type): New target hook. * config/rs6000/rs6000.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Point target hook at rs6000_mangle_fundamental_type. (rs6000_mangle_fundamental_type): New function. * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Document. [gcc/cp/ChangeLog] 2004-03-23 Ziemowit Laski <zlaski@apple.com> * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H). * mangle.c (write_type): Add call to 'mangle_fundamental_type' target hook. [gcc/testsuite/ChangeLog] 2004-03-23 Ziemowit Laski <zlaski@apple.com> * g++.dg/ext/altivec-7.C: New test. From-SVN: r79885