Commit Graph

666 Commits

Author SHA1 Message Date
Matt Austern
968b41a166 c-common.c (handle_visibility_attribute): Set DECL_VISIBILITY field instead of hanging an attribute object off the decl.
* c-common.c (handle_visibility_attribute): Set DECL_VISIBILITY
	field instead of hanging an attribute object off the decl.
	* tree.h (DECL_VISIBLITY): New accessor macro for
	symbol_visibility field in struct tree_decl.
	(enum symbol_visibility): Move definition to before tree_decl.
	(struct tree_decl): Define new two-bit field, symbol_visibility.
	(decl_visibility): Remove declaration.
	* varasm.c (maybe_assemble_visibility): Use DECL_VISIBILITY
	instead of decl_visibility.
	(default_binds_local_p_1):  Use DECL_VISIBILITY	instead of
	decl_visibility.
	(decl_visibility): Remove.
	* cp/decl.c (duplicate_decls): copy DECL_VISIBILITY field.
	* cp/method.c (use_thunk): give thunk same visibility as function.
	* cp/optimize.c (maybe_clone_body): copy DECL_VISIBILITY field.

From-SVN: r73320
2003-11-06 22:08:26 +00:00
Richard Sandiford
21e9fc4735 emit-rtl.c (copy_rtx_if_shared): Don't allow MEMs with constant addresses to be shared.
* emit-rtl.c (copy_rtx_if_shared): Don't allow MEMs with constant
	addresses to be shared.
	(force_const_mem): Return a copy of the pool entry.

From-SVN: r73248
2003-11-04 09:14:18 +00:00
Zack Weinberg
02befdf47f genmodes.c (struct mode_data): Add contained and next_cont fields.
* genmodes.c (struct mode_data): Add contained and next_cont
	fields.
	(complete_mode): Maintain linked list of modes that have a
	given component.
	(emit_mode_unit_size): Delete.
	(emit_mode_nunits): New.
	(emit_insn_modes_c): Update to match.
	(emit_mode_adjustments): Propagate size and alignment
	adjustments from component modes to their containers.
	* machmode.h (mode_unit_size): Delete.
	(mode_nunits): New.
	(GET_MODE_NUNITS): Just return the value in the table.
	(GET_MODE_UNIT_SIZE): Compute using GET_MODE_INNER and
	GET_MODE_SIZE.
	* expmed.c (store_bit_field, extract_bit_field): Can use a
	plain move instruction if bitsize >= GET_MODE_BITSIZE of
	destination/source mode, respectively.
	* varasm.c (assemble_real): Write out the full size of the
	constant, not just its bitsize.
	(output_constant): Honor TYPE_MODE of TREE_REAL_CSTs.

	* config/ia64/ia64-modes.def: Define XFmode as well as TFmode.
	Use ADJUST_BYTESIZE and ADJUST_ALIGNMENT to set size and
	alignment of XF and TF modes in compliance with ia64 ABIs.
	Can now hardwire the format of both modes.
	* config/ia64/ia64.c: Change TFmode to XFmode wherever appropriate.
	(general_tfmode_operand, destination_tfmode_operand)
	(tfreg_or_fp01_operand, spill_tfmode_operand): Rename to
	general_xfmode_operand, destination_xfmode_operand,
	xfreg_or_fp01_operand, spill_xfmode_operand respectively.
	(ia64_init_builtins): Make TYPE_PRECISION of fpreg_type
	and float80_type be 96 so they get XFmode.  Use !TARGET_HPUX,
	not INTEL_EXTENDED_IEEE_FORMAT, to decide how to define
	__float128.
	* config/ia64/ia64.h: Default TARGET_HPUX to 0.
	Change TFmode to XFmode wherever appropriate.  Remove all
	references to INTEL_EXTENDED_IEEE_FORMAT.
	(LONG_DOUBLE_TYPE_SIZE): Varies with TARGET_HPUX.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define (always 96).
	(PREDICATE_CODES): Update to match function renames.
	* config/ia64/ia64.md: Change TF to XF throughout; rename all
	patterns to match.  Remove all references to
	INTEL_EXTENDED_IEEE_FORMAT.  Update predicate calls to match
	function renames.
	* config/ia64/ia64-protos.c: Update all prototypes to match
	renamed functions.
	* config/ia64/hpux.h: Redefine TARGET_HPUX to 1.
	Remove all references to INTEL_EXTENDED_IEEE_FORMAT.
	* config/ia64/lib1funcs.asm: Add __divxf3 as new name for
	__divtf3; keep old name for backward compatibility.
	(L__compat): New section providing forwarding stubs for
	__fixtfti, __fixunstfti, __floattitf.
	* config/ia64/t-ia64: Add __compat to LIB1ASMFUNCS.

From-SVN: r72916
2003-10-25 02:03:40 +00:00
Jan Hubicka
0f3340356d re PR c++/12624 ([unit-at-a-time] ICE in notice_global_symbol)
PR c++/12624
	* varasm.c (notice_global_symbol): Disqualify global registers.

From-SVN: r72880
2003-10-24 07:39:26 +00:00
Andrew Haley
907393db60 varasm.c (output_constructor): Make constructor annotation conditional on ASM_COMMENT_START.
2003-10-22  Andrew Haley  <aph@redhat.com>

	* varasm.c (output_constructor): Make constructor annotation
	conditional on ASM_COMMENT_START.

From-SVN: r72793
2003-10-22 09:50:06 +00:00
Andrew Haley
bce988a2f5 varasm.c (output_constructor): Annotate constructor.
2003-10-21  Andrew Haley  <aph@redhat.com>

        * varasm.c (output_constructor): Annotate constructor.

From-SVN: r72759
2003-10-21 15:32:27 +00:00
Jan Hubicka
8af11e80aa varasm.c (notice_global_symbol): Fix handling of variables; avoid re-computing of variable.
* varasm.c (notice_global_symbol):  Fix handling of variables; avoid
	re-computing of variable.

From-SVN: r72343
2003-10-11 17:38:29 +00:00
Josef Zlomek
eae216e8c3 Waldek Hebisch <hebisch@math.uni.wroc.pl> PR/12072
Waldek Hebisch <hebisch@math.uni.wroc.pl>
	PR/12072
	* varasm.c (compare_constant): Fix thinko.

From-SVN: r72028
2003-10-02 14:47:51 +00:00
Alexandre Oliva
b2218cc139 output.h (compute_reloc_for_constant): Declare.
* output.h (compute_reloc_for_constant): Declare.
* varasm.c (compute_reloc_for_constant): Extract from...
(output_addressed_constants): ... here.  Adjust all callers.

From-SVN: r72000
2003-10-01 22:57:57 +00:00
Zack Weinberg
b409761a1f varasm.c (assemble_real): Use real_to_target directly...
* varasm.c (assemble_real): Use real_to_target directly,
	calculate the number of significant elements of the result
	array and write them out in a loop, instead of using a giant
	switch statement to pick the correct REAL_VALUE_TO_TARGET_*
	macro.

From-SVN: r71917
2003-09-29 21:29:11 +00:00
Jan Hubicka
f820b0cf2c re PR c++/12175 (Tru64 UNIX bootstrap failure: multiply defined symbols linking libstdc++.so)
PR c++/12175
	* varasm.c (notice_global_symbol): Discard external symbols.

	PR optimization/12286
	* gcov-io.c (gcov_read_words): Fix memmove call.
	* profile.c (compute_branch_probabilities): Add extra sanity checks.

	PR C++/12047
	* except.c (build_eh_type_type): Call mark_used on the type.

From-SVN: r71916
2003-09-29 21:19:10 +00:00
Rainer Orth
5d4856a011 configure.in (HAVE_GAS_SHF_MERGE): Always define to test result.
* configure.in (HAVE_GAS_SHF_MERGE): Always define to test result.
	Update description.
	* configure: Regenerate.
	* config.in: Likewise.
	* dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test for
	HAVE_GAS_SHF_MERGE value.
	* varasm.c (mergeable_string_section): Likewise.
	(mergeable_constant_section): Likewise.

From-SVN: r71691
2003-09-23 19:47:00 +00:00
Rainer Orth
6773a41c43 target.h (struct gcc_target): New member external_libcall.
* target.h (struct gcc_target): New member external_libcall.
	* target-def.h (TARGET_ASM_EXTERNAL_LIBCALL): Provide default.
	(TARGET_ASM_OUT): Use it.
	* doc/tm.texi (TARGET_ASM_EXTERNAL_LIBCALL): Document.
	* targhooks.c: Convert to ISO C 90.
	(default_external_libcall): New function.
	* targhooks.h (default_external_libcall): Declare.
	* varasm.c (assemble_external_libcall): Use
	targetm.asm_out.external_libcall instead of
	ASM_OUTPUT_EXTERNAL_LIBCALL.
	* config/mips/mips-protos.h [TARGET_IRIX5 || TARGET_IRIX 6]
	(mips_output_external_libcall): Declare.
	* config/mips/mips.c (mips_output_external_libcall): Change
	definition guard.
	Change to match TARGET_ASM_EXTERNAL_LIBCALL.
	Only operate for O32 ABI.
	* config/mips/iris5.h (TARGET_ASM_EXTERNAL_LIBCALL): Define
	instead of ASM_OUTPUT_EXTERNAL_LIBCALL.
	* config/mips/iris6.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Don't undef,
	superceded by TARGET_ASM_EXTERNAL_LIBCALL.

From-SVN: r71689
2003-09-23 19:17:49 +00:00
Richard Henderson
ddd2d57e72 c-format.c (gcc_diag_char_table): Add %J.
* c-format.c (gcc_diag_char_table): Add %J.
        (gcc_cdiag_char_table, gcc_cxxdiag_char_table): Likewise.
        (check_format_types): Fix wanted_type name lookup.
        (init_dynamic_diag_info): Setup %J.
        * diagnostic.c (text_specifies_location): Implement %J.
        * c-common.c, c-decl.c, c-objc-common.c, c-pragma.c, calls.c,
        dwarfout.c, expr.c, function.c, stmt.c, stor-layout.c, toplev.c,
        tree-inline.c, tree-optimize.c, varasm.c, config/arm/pe.c,
        config/i386/winnt.c, config/ia64/ia64.c, config/mcore/mcore.c,
        config/v850/v850.c, objc/objc-act.c: Use %J in diagnostics.

        * tree-inline.c: Include intl.h
        (inline_forbidden_p_1): Fix i18n of inline_forbidden_reason.
        * Makefile.in (tree-inline.o): Update.
cp/
        * decl.c, decl2.c, pt.c: Use %J in diagnostics.
java/
        * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
testsuite/
        * gcc.dg/format/gcc_diag-1.c: Add tests for %J.

From-SVN: r71619
2003-09-20 22:07:20 -07:00
Jan Hubicka
f098590080 * varasm.c (notice_global_symbol): Properly deal with weak symbols.
From-SVN: r71236
2003-09-09 13:37:17 +00:00
Mark Mitchell
cf9ad9a773 re PR c++/11852 (ICE: g++ with bad struct initializer.)
PR c++/11852
	* varasm.c (initializer_constant_valid_p): Correct logic for
	CONSTRUCTORs.

	PR c++/11852
	* g++.dg/init/struct1.C: New test.

From-SVN: r71187
2003-09-07 23:48:33 +00:00
Richard Henderson
8dafba3ca4 cgraph.c (cgraph_mark_reachable_node): Split out from ...
* cgraph.c (cgraph_mark_reachable_node): Split out from ...
        (cgraph_mark_needed_node): Remove needed argument.
        * cgraph.h: Update to match.
        * cgraphunit.c (decide_is_function_needed): Split out from ...
        (cgraph_finalize_function): Reorg.  Avoid deferred_inline_function
        if we generated the function.
        (record_call_1): Update for cgraph_mark_reachable_node.
        * varasm.c (mark_referenced): Likewise.
        * objc/objc-act.c (mark_referenced_methods): Likewise.

        * decl2.c (mark_member_pointers_and_eh_handlers): Update for
        change in cgraph_mark_needed_node arguments.

From-SVN: r71104
2003-09-04 21:24:30 -07:00
Jan Hubicka
810db5799b cgraph.c (cgraph_mark_needed_node): Call notice_global_symbol.
* cgraph.c (cgraph_mark_needed_node): Call notice_global_symbol.
	(cgraph_varpool_mark_needed_node): Likewise.
	* cgraph.h (notice_global_symbol): Declare
	* varasm.c (notice_global_symbol): Break out from ...
	(assemble_start_function): ... here; update for variables.
	(assemble_variable): Use notice_global_symbol.

From-SVN: r70559
2003-08-19 07:37:07 +00:00
Richard Henderson
75c2098081 system.h: Poison ASM_SIMPLIFY_DWARF_ADDR.
* system.h: Poison ASM_SIMPLIFY_DWARF_ADDR.

        * varasm.c (lookup_constant_def): New function.
        * rtl.h (lookup_constant_def): Declare it.
        * dwarf2out.c (loc_descriptor_from_tree): Use it.
        Use targetm.delegitimize_address, not ASM_SIMPLIFY_DWARF_ADDR.

From-SVN: r70072
2003-08-01 14:51:13 -07:00
Jan Hubicka
a0c8285b03 re PR c/10320 (gcc 3.4 gets rid of static inline function that does not get inlined)
* gcse.c (insert_store): Ignore fake edges.

	* c-common.c (flag_vtable_gc): Kill.
	* c-common.g (flag_vtable_gc): Kill.
	* c-opts (c_common_handle_option): Kill.
	* c.opt (fvtable-gc): Kill.
	* final.c (final_scan_insn): Do not call assemble_vtable_entry.
	* output.h (assemble_vtable_entry, assemble_vtable_inherit): Kill.
	* varasm.c (assemble_vtable_entry, assemble_vtable_inherit): Kill.

	* invoke.texi (-ftable-gc): Kill documentation.

	PR C/10320
	* tree-inline.c (inlinable_function_p): Don't set DECL_UNINLINABLE
	just because function body is missing.

	* i386.c (pic_symbolic_operand): Properly detect RIP relative unspecs.

	* class.c (build_vtable_entry_ref): Kill.
	(build_vtbl_ref_1): Do not call build_vtable_entry_ref.
	(build_vfn_ref): Do not call build_vtable_entry_ref.
	* cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
	* cp-tree.h (prepare_assemble_variable): Kill.
	* cp-decl.c (prepare_assemble_variable): Kill.

From-SVN: r69964
2003-07-30 17:27:17 +00:00
Geoffrey Keating
18f3e349aa varasm.c (output_constant_def_contents): Use ASM_DECLARE_CONSTANT_NAME if defined.
* varasm.c (output_constant_def_contents): Use
	ASM_DECLARE_CONSTANT_NAME if defined.
	* doc/tm.texi (Label Output): Document ASM_DECLARE_CONSTANT_NAME.
	* config/darwin.h (ASM_DECLARE_OBJECT_NAME): Ensure zero-sized
	objects get at least one byte to prevent assembler problems.
	(ASM_DECLARE_CONSTANT_NAME): New.

Index: testsuite/ChangeLog
	* gcc.c-torture/compile/zero-strct-2.c: New test.

From-SVN: r69842
2003-07-27 01:48:11 +00:00
Gabriel Dos Reis
b6fe0bb8c5 Remove pedwarn_with_decl, warning_with_decl and error_with_decl from GCC.
Remove pedwarn_with_decl, warning_with_decl and error_with_decl
        from GCC.
        * calls.c (try_to_integrate): Don't use xxx_with_decl.
        (expand_call): Likewise.
        * dwarfout.c (output_reg_number): Likewise.
        * expr.c (expand_expr): Likewise.
        * function.c (assign_temp): Likewise.
        (uninitialized_vars_warning): Likewise.
        (setjmp_args_warning): Likewise.
        (expand_function_end): Likewise.
        * stmt.c (fixup_gotos): Likewise.
        (warn_about_unused_variables): Likewise.
        (expand_end_bindings): Likewise.
        * stor-layout.c (layout_decl): Likewise.
        (place_field): Likewise.
        * toplev.c (check_global_declarations): Likewise.
        (rest_of_handle_inlining): Likewise.
        (default_tree_printer): New function.
        (general_init): Initialize diagnostic machinery before routing
        signals to the ICE machinery.  Set default tree printer.
        * toplev.h (pedwarn_with_decl): Remove declaration.
        (warning_with_decl): Likewise.
        (error_with_decl): Likewise.
        (pedwarn): Remove attribute for the time being.
        * tree-inline.c (expand_call_inline): Don't use xxx_with_decl.
        * varasm.c (named_section): Likewise.
        (make_decl_rtl): Likewise.
        (assemble_variable): Likewise.
        (merge_weak): Likewise.
        (declare_weak): Likewise.

        * diagnostic.h: Move non-diagnostic stuff into pretty-print.h.
        * diagnostic.c: Move non-diagnostic stuff into pretty-print.c.
        (format_with_decl): Remove.
        (diagnostic_for_decl): Likewise.
        (pedwarn_with_decl): Likewise.
        (warning_with_decl): Likewise.
        (error_with_decl): Likewise.
        (diagnostic_initialize): Adjust.
        (diagnostic_count_diagnostic): Likewise.
        (announce_function): Likewise.
        (lhd_print_error_function): Likewise.
        (diagnostic_report_current_module): Likewise.
        (default_diagnostic_starter): Likewise.
        (diagnostic_report_diagnostic): Likewise.
        (default_diagnostic_finalizer): Likewise.
        (verbatim): Likewise.
        (error): Likewise.
        (warning): Likewise.
        * opts.c (common_handle_option): Likewise.
        * pretty-print.c: New file.
        * c-pretty-print.h (pp_base): Override.
        * c-pretty-print.c: Adjust use of macros throughout.
        (pp_buffer): New macro.
        (pp_newline): Likewise.
        * c-objc-common.c (c_tree_printer): Adjust prototype. Tidy.
        * Makefile.in (DIAGNOSTIC_H): New variable.
        (c-errors.o): Use it.
        (c-objc-common.o): Likewise.
        (c-common.o): Likewise.
        (c-opts.o): Likewise.
        (c-format.o): Likewise.
        (diagnostic.o): Likewise.
        (opts.o): Likewise.
        (toplev.o): Likewise.
        (rtl-error.o): Likewise.
        (dwarf2out.o): Likewise.
        (jump.o): Likewise.
        (pretty-print.o): New rule.

cp/
        * Make-lang.in (cp/error.o): Depend on DIAGNOSTIC_H.
        * error.c: Use the new pretty-printer fraamework.

From-SVN: r69773
2003-07-25 09:52:32 +00:00
Mark Mitchell
a5ac359a6d fold-const.c (force_fit_type): Handle OFFSET_TYPE.
* fold-const.c (force_fit_type): Handle OFFSET_TYPE.
	* varasam.c (output_constant): Likewise.

2003-07-22  Mark Mitchell  <mark@codesourcery.com>

	Eliminate use of POINTER_TYPE for pointers-to-members.
	* call.c (standard_conversion): Rework pointer-to-member handling.
	Add comments.
	(add_builtin_candidate): Likewise.
	(resolve_scoped_fn_name): Remove.
	(build_conditional_expr): Rework pointer-to-member handling.
	(compare_ics): Likewise.
	* class.c (check_field_decls): Use TYPE_PTR_P.
	* cp-lang.c (cp_var_mod_type_p): Rework pointer-to-member
	handling.
	* cp-tree.h (SCALAR_TYPE_P): Use TYPE_PTR_TO_MEMBER_P.
	(TYPE_PTRMEM_P): Add comment.
	(TYPE_PTR_P): Simplify.
	(TYPE_PTROB_P): Correct definition.
	(TYPE_PTR_TO_MEMBER_P): New macro.
	(TYPE_PTRMEM_CLASS_TYPE): Adjust.
	(TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
	(resolved_scoped_fn_name): Remove declaration.
	(build_offset_ref): Change prototype.
	(resolve_offset_ref): Remove.
	(comp_target_types): Remove.
	* cvt.c (cp_convert_to_pointer): Rework pointer-to-member
	handling.
	(convert_to_reference): Use can_convert.
	(ocp_convert): Improve error handling.  Rework pointer-to-member
	handling.
	(perform_qualification_conversions): Rework pointer-to-member
	handling.
	* decl.c (build_ptrmem_type): Handle functions too.
	(create_array_type_for_decl): Remove OFFSET_TYPE error message.
	(grokdeclarator): Use OFFSET_TYPE for pointers to data members.
	(grokparms): Remove OFFSET_TYPE error message.
	* dump.c (cp_dump_tree): Rework pointer-to-member handling.
	* error.c (dump_type_prefix): Likewise.
	* expr.c (cplus_expand_constant): Use build_nop.
	* init.c (build_offset_ref): Add address_p parameter.  Fold in
	necessary bits from resolve_offset_ref.
	(resolve_offset_ref): Remove.
	* parser.c (cp_parser_postfix_expression): Remove special case
	code for OFFSET_TYPE.
	* pt.c (convert_nontype_argument): Rework pointer-to-member
	handling.
	(convert_template_argument): Likewise.
	(unify): Likewise.
	(invalid_nontype_parm_type_p): Likewise.
	(dependent_type_p_r): Likewise.
	* rtti.c (get_tinfo_decl): Remove OFFSET_TYPE special case.
	(target_incomplete_p_): Rework pointer-to-member
	handling.
	(get_pseudo_ti_init): Likewise.
	(get_pseudo_ti_desc): Likewise.
	* semantics.c (finish_qualified_id_expr): Adjust call to
	build_offset_ref.  Remove use of resolve_offset_ref.
	* tree.c (pod_type_p): Use TYPE_PTR_TO_MEMBER_P.
	* typeck.c (target_type): Use TYPE_PTRMEM_P.
	(type_unknown_p): Remove obsolete code about the time before
	non-dependent expressions were handled correctly.
	(qualify_type_recursive): Remove.
	(composite_pointer_type_r): New function.
	(composite_pointer_type): Use it.
	(merge_types): Remove dead comments.
	(comp_cv_target_types): Remove.
	(comp_target_types): Likewise.
	(comp_target_parms): Likewise.
	(cxx_sizeof_or_alignof_type): Remove OFFSET_TYPE error.
	(build_indirect_ref): Use TYPE_PTR_TO_MEMBER_P.
	(build_binary_op): Do not use of comp_target_types.
	(pointer_diff): Remove OFFSET_TYPE case.
	(build_unary_op): Adjust pointer-to-member handling.
	(unary_complex_lvalue): Likewise.
	(check_for_casting_away_constness): Add description parameter.
	(build_static_cast): Pass it.
	(build_reinterpret_cast): Use check_for_casting_away_constness.
	(build_const_cast): Adjust pointer-to-member handling.
	(build_c_cast): Likewise.
	(convert_for_assignment): Remove OFFSET_TYPE error message.
	(comp_ptr_ttypes_real): Adjust pointer-to-member handling.
	(comp_ptr_ttypes_reinterpret): Remove.
	(casts_away_constness_r): Adjust pointer-to-member handling.
	(casts_away_constness): Liekwise.
	(strip_all_pointer_quals): Remove.
	* typeck2.c (digest_init): Adjust pointer-to-member handling.
	(build_m_component_ref): Likewise.

From-SVN: r69691
2003-07-22 23:30:22 +00:00
Kaveh R. Ghazi
703ad42b4b alias.c [...]: Remove unnecessary casts.
* alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.c
	c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in
	c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c
	collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c
	cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c
	cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c
	dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c
	fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c
	gcse.c genattr.c genattrtab.c genautomata.c genconditions.c
	genemit.c genextract.c genoutput.c genrecog.c gensupport.c
	ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c
	integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c
	loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c
	postreload.c prefix.c print-tree.c protoize.c ra-build.c
	ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c
	regmove.c regrename.c reload.c reload1.c reorg.c resource.c
	sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c
	simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c
	tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c
	varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary
	casts.

From-SVN: r69587
2003-07-19 14:47:15 +00:00
Geoffrey Keating
26e0dcb326 re PR middle-end/11498 (asm can't be used to give a variable its own name)
PR 11498
	* Makefile.in (c-opts.o): Add $(LANGHOOKS_DEF_H).
	(langhooks.o): Add $(GGC_H), gt-langhooks.h.
	(GTFILES): Add langhooks.c.
	(gt-langhooks.h): New.
	* c-common.h (c_static_assembler_name): Prototype.
	* c-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Define.
	* objc/objc-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Define.
	* c-opts.c: Include langhooks-def.h.
	(c_static_assembler_name): New.
	* langhooks.c: Include ggc.h.  Include gt-langhooks.h.
	(var_labelno): New.
	(lhd_set_decl_assembler_name): Give static objects with context
	unique names.
	* varasm.c (var_labelno): Delete.
	(make_decl_rtl): Don't change the assembler name once it's set.

From-SVN: r69527
2003-07-17 21:52:51 +00:00
Mark Mitchell
a44cea75a7 varasm.c (make_decl_rtl): Treat decls with a DECL_CONTEXT of TRANSLATION_UNIT_DECL as top_level.
* varasm.c (make_decl_rtl): Treat decls with a DECL_CONTEXT of
	TRANSLATION_UNIT_DECL as top_level.

From-SVN: r69244
2003-07-11 21:20:18 +00:00
James E Wilson
8338d44d83 re PR rtl-optimization/9812 ([m68k] ICE in extract_insn, at recog.c:2148)
PR optimization/9812
* rtl.h (mem_for_const_double): Delete prototype.
* varasm.c (mem_for_const_double): Delete function.
* config/m68k/hp320.h, config/m68k/linux.h, config/m68k/m68kelf.h,
config/m68k/m68kv4.h, config/m68k/netbsd-elf.h
(LEGITIMATE_PIC_OPERAND_P): Delete duplicate definitions.
* config/m68k/m68k.h (LEGITIMATE_CONSTANT_P): Disallow XFmode.
(LEGITIMATE_PIC_OPERAND_P): Delete CONST_DOUBLE tests.
* config/m68k/m68k.md (movxf): Add reload_in_progress guard.  Add
comment about confused support for XFmode constants.

From-SVN: r69027
2003-07-06 20:42:23 -07:00
Andreas Jaeger
2e1eedd6bb unroll.c: Convert prototypes to ISO C90.
* unroll.c: Convert prototypes to ISO C90.
	* varasm.c: Likewise.
	* varray.c: Likewise.
	* varray.h: Likewise.
	* vmsdbgout.c: Likewise.
	* xcoffout.c: Likewise.
	* xcoffout.h: Likewise.

From-SVN: r69007
2003-07-06 18:53:24 +02:00
Kazu Hirata
f9da506452 alloc-pool.c: Fix comment formatting.
* alloc-pool.c: Fix comment formatting.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* bt-load.c: Likewise.
	* builtins.c: Likewise.
	* caller-save.c: Likewise.
	* cfganal.c: Likewise.
	* cfgrtl.c: Likewise.
	* collect2.c: Likewise.
	* cse.c: Likewise.
	* df.c: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expmed.c: Likewise.
	* final.c: Likewise.
	* flags.h: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* genattrtab.c: Likewise.
	* genautomata.c: Likewise.
	* libgcov.c: Likewise.
	* mips-tfile.c: Likewise.
	* optabs.c: Likewise.
	* prefix.c: Likewise.
	* rtlanal.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r68672
2003-06-29 13:53:12 +00:00
Jan Hubicka
4d7d0451bc c-common.c (handle_used_attribute): Use mark_referenced.
* c-common.c (handle_used_attribute): Use mark_referenced.
	* varasm.c (mark_referenced): Break out from ...
	(assemble_name): ... here.
	* tree.h (mark_referenced): Declare.

From-SVN: r68500
2003-06-25 22:14:26 +00:00
Jan Hubicka
380e198464 varasm.c (assemble_name): Mark needed variables even when global info is ready.
* varasm.c (assemble_name): Mark needed variables even when
	global info is ready.

From-SVN: r68472
2003-06-25 09:32:44 +00:00
Jan Hubicka
e69529cd53 Makefile.in (cgraph.o): Depend on output.h, not depend on tree-inline.h
* Makefile.in (cgraph.o): Depend on output.h, not depend on
	tree-inline.h
	* cgraph.c: Do not include tree-inline.h; include output.h
	(known_fns): Rename to ...
	(known_decls): ... this one; update all uses.
	(cgraph_varpool_hash): New static variable.
	(cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): New global
	variables.
	(cgraph_varpool_hash_node, eq_cgraph_varpool_node, cgraph_varpool_node,
	cgraph_varpool_node_for_identifier, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_assemble_pending_decls):
	New functions.
	* cgraph.h (cgraph_varpool_node): New structure.
	(cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): Declare.
	(cgraph_varpool_node, cgraph_varpool_node_for_identifier,
	cgraph_varpool_finalize_decl, cgraph_varpool_mark_needed_node,
	cgraph_varpool_asemble_pending_decls): Declare.
	* cgraphunit.c (record_call_1): Notice variable references.
	(cgraph_finalize_compilation_unit): Assemble pending variables.
	* toplev.c (wrapup_global_declarations): Use varpool.
	(compile_file): Assemble pending declarations.
	(rest_of_decl_compilation): Use varpool in unit-at-a-time mode.
	* varasm.c (assemble_name): Notice varpool references.

From-SVN: r68426
2003-06-24 16:50:29 +00:00
Jan Hubicka
d35543c0dd langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): New macro.
* langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): New macro.
	* langhooks.h (lang_hooks_for_decls): Add prepare_assemble_variable.
	* varasm.c (assemble_variable): Call prepare_assemble_variable.
	* class.c (build_vtable): Make vtables.
	* cp-tree.h (DECL_VTABLE_OR_VTT_P): New macro.
	* decl2.c (output_vtable_inherit): Rename to ...
	(prepare_assemble_variable): ... this one; change interface.
	(maybe_emit_vtables): Do not call output_vtable_inherit.
	* cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Define.
	* cp-tree.h (prepare_assemble_variable): New.

From-SVN: r68418
2003-06-24 11:54:01 +00:00
Jan Hubicka
1668aabc22 cgraph.c (cgraph_nodes_queue): Declare.
* cgraph.c (cgraph_nodes_queue): Declare.
	(eq_node): Take identifier as p2.
	(cgraph_node): Update htab_find_slot_with_hash call.
	(cgraph_node_for_identifier): New.
	(cgraph_mark_needed_node): Move here from cgraphunit.c.
	* cgraph.h (cgraph_nodes_queue): Declare.
	(cgraph_node_for_identifier): Declare.
	* cgraphunit.c (cgraph_finalize_function): Collect entry points here
	instead of in cgraph_finalize_compilation_unit; constructors and
	destructors are entry points.
	(cgraph_finalize_compilation_unit): Reorganize debug outout;
	examine nested functions after lowerng; call collect_functions hook.
	(cgraph_mark_local_functions): DECL_COMDAT functions are not local.
	(cgraph_finalize_compilation_unit): Do not collect entry points.
	* varasm.c: Include cgraph.h
	(assemble_name): Mark referenced identifier as needed.

	* cgraphunit.c (record_call_1): Use get_callee_fndecl.

From-SVN: r68390
2003-06-23 21:11:44 +00:00
Jakub Jelinek
89ce1c8f76 i386.c (x86_output_mi_thunk): Don't pass MEM to %P0, just SYMBOL_REF.
* config/i386/i386.c (x86_output_mi_thunk): Don't pass MEM to %P0,
	just SYMBOL_REF.
	* config/s390/s390.c (s390_output_mi_thunk): Avoid .plt in -m31
	mode, as it requires pic register loaded.

	* varasm.c (resolve_unique_section): Remove prototype.  No longer
	static.
	* tree.h (resolve_unique_section): New prototype.
cp/
	* method.c (thunk_labelno): New variable.
	(make_alias_for_thunk): New function.
	(use_thunk): Use it if defined ASM_OUTPUT_DEF.  Put the thunk
	into the same section as the function it is calling.
	Include gt-cp-method.h.
	* Make-lang.in (gt-cp-method.h): Depend on s-gtype.
	(cp/method.o): Depend on gt-cp-method.h.
	* config-lang.in (gtfiles): Add $(srcdir)/cp/method.c.

From-SVN: r68389
2003-06-23 22:52:14 +02:00
Zack Weinberg
1bc7c5b629 target.h (asm_out.file_start, [...]): New hooks.
* target.h (asm_out.file_start, file_start_app_off,
	file_start_file_directive): New hooks.
	* target-def.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE,
	TARGET_ASM_FILE_START_APP_OFF, TARGET_ASM_FILE_START):
	New hook-definition macros.
	* doc/tm.texi: Document new hooks; remove docs of ASM_FILE_START.
	* varasm.c (default_file_start): New.
	* output.h: Prototype it.
	* toplev.c (init_asm_output): Use targetm.asm_out.file_start.
	* system.h: Poison ASM_FILE_START.

	* config/alpha/alpha.c (alpha_write_verstamp): Delete.
	(alpha_file_start): New, define if !TARGET_ABI_UNICOSMK.
	(unicosmk_asm_file_start): Rename unicosmk_file_start,
	make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_END,
	TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set as appropriate.
	* config/alpha/unicosmk.h: Don't define ASM_FILE_START nor
	TARGET_ASM_FILE_END.  Remove reference to ASM_FILE_START in
	comment.
	* config/arc/arc.c (arc_asm_file_start): Rename
	arc_file_start, take no arguments, make static.
	(TARGET_ASM_FILE_START): Set it.
	* config/arm/arm.c (aof_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it, when appropriate.
	* config/arm/coff.h, config/arm/elf.h:
	Set TARGET_ASM_FILE_START_APP_OFF to true.
	* config/avr/avr.c (asm_file_start): Rename avr_file_start,
	take no arguments, make static.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
	Set them.
	* config/c4x/c4x.c (c4x_file_start): New static function.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
	Set them.
	* config/cris/cris.c (cris_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/dsp16xx/dsp16xx.c (coff_dsp16xx_file_start): Rename
	dsp16xx_file_start, make static.
	(luxworks_dsp16xx_file_start): Delete.
	(TARGET_ASM_FILE_START): Set it.
	* config/h8300/h8300.c (asm_file_start): Rename
	h8300_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START): Set it.
	* config/i370/i370.c (i370_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/i386/i386.c (x86_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/i386/i386.h (X86_FILE_START_VERSION_DIRECTIVE,
	X86_FILE_START_FLTUSED): New macros, default to false.
	* config/i386/i386-interix.h: Override X86_FILE_START_FLTUSED to 1.
	* config/i386/sysv4.h, config/i386/sco5.h: Override
	X86_FILE_START_VERSION_DIRECTIVE to true.
	* config/ia64/ia64.c (ia64_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	(emit_safe_across_calls): Take no arguments.
	* config/ia64/ia64.md: Update to match.
	* config/m32r/m32r.c (m32r_asm_file_start): Rename
	m32r_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START): Set it.
	* config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Rename
	m68hc11_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	(print_options): Delete.
	* config/m68k/m68k.c (m68k_hp320_file_start): New static function.
	(TARGET_ASM_FILE_START_APP_OFF): Set.
	* config/m68k/hp320.h: Set TARGET_ASM_FILE_START to
	m68k_hp320_file_start.
	* config/mips/mips.c (iris6_asm_file_start, mips_asm_file_start):
	Make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/mmix/mmix.c (mmix_asm_file_start): Rename
	mmix_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/mn10300/mn10300.c (asm_file_start): Rename
	mn10300_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/ns32k/ns32k.c (TARGET_ASM_FILE_START_APP_OFF): Set.
	* config/pa/pa.c (pa_file_start_level, pa_file_start_space,
	pa_file_start_file, pa_file_start_mcount, pa_elf_file_start,
	pa_som_file_start, pa_linux_file_start, pa_hpux64_gas_file_start,
	pa_hpux64_hpas_file_start): New static functions.
	* config/pa/elf.h: Set TARGET_ASM_FILE_START to pa_elf_file_start.
	* config/pa/pa-linux.h: Set TARGET_ASM_FILE_START to
	pa_linux_file_start.
	* config/pa/pa64-hpux.h: Set TARGET_ASM_FILE_START to
	pa_hpux64_gas_file_start or pa_hpux64_hpas_file_start, as
	appropriate.
	* config/pa/som.h: Set TARGET_ASM_FILE_START to pa_som_file_start.
	* config/rs6000/rs6000.c: Include xcoffout.h when TARGET_XCOFF.
	(rs6000_file_start): Make static, take no arguments.  Reset
	default_cpu under certain conditions.
	(rs6000_xcoff_file_start): New function.
	* config/rs6000/rs6000.h (TARGET_ASM_FILE_START): Set.
	* config/rs6000/xcoff.h (TARGET_ASM_FILE_START,
	TARGET_ASM_FILE_START_FILE_DIRECTIVE): Override.
	* config/sh/sh.c (output_file_start): Rename
	sh_file_start, make static, take no arguments.  Merge in old
	code from sh/elf.h's ASM_FILE_START, conditioned on TARGET_ELF.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/sh/sh.c (TARGET_ELF): Define to 0.
	* config/sh/elf.h (TARGET_ELF): Redefine to 1.
	* config/v850/v850.c (asm_file_start): Delete.
	(TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/vax/vax.c (vax_file_start): New static function.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_APP_OFF): Set.

	* config/darwin.h: Override ASM_FILE_START_FILE_DIRECTIVE to false.
	* config/elfos.h, config/svr3.h, config/arm/elf.h, config/arm/pe.h
	* config/i386/att.h, config/i386/gas.h, config/i386/linux.h
	* config/i386/sysv4.h, config/i386/sco5.h, config/i960/i960-coff.h
	* config/m68k/coff.h, config/m68k/hp320.h, config/mcore/mcore-pe.h
	* config/vax/vaxv.h: Set ASM_FILE_START_FILE_DIRECTIVE to true.

	* config/darwin.h, config/elfos.h, config/alpha/elf.h
	* config/alpha/openbsd.h, config/alpha/osf.h, config/alpha/vms.h
	* config/arc/arc.h, config/arm/aof.h, config/arm/aout.h
	* config/arm/coff.h, config/arm/elf.h, config/arm/pe.h
	* config/avr/avr.h, config/c4x/c4x.h, config/cris/cris.h
	* config/dsp16xx/dsp16xx.h, config/h8300/elf.h, config/h8300/h8300.h
	* config/i370/i370.h, config/i386/att.h, config/i386/gas.h
	* config/i386/i386-interix.h, config/i386/linux.h, config/i386/sysv4.h
	* config/i386/sco5.h, config/i960/i960-coff.h, config/i960/i960.h
	* config/ia64/ia64.h, config/ia64/sysv4.h, config/m32r/m32r.h
	* config/m68hc11/m68hc11.h, config/m68k/coff.h, config/m68k/m68k.h
	* config/mcore/mcore-pe.h, config/mips/iris6.h, config/mips/mips.h
	* config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h
	* config/pa/elf.h, config/pa/pa-linux.h, config/pa/pa64-hpux.h
	* config/pa/som.h, config/pdp11/pdp11.h, config/rs6000/linux64.h
	* config/rs6000/lynx.h, config/rs6000/xcoff.h, config/sh/elf.h
	* config/sh/sh.h, config/sparc/sparc.h, config/v850/v850.h
	* config/vax/vax.h, config/vax/vaxv.h: Don't (re)define ASM_FILE_START.

	* config/alpha/alpha-protos.h, config/arc/arc-protos.h
	* config/avr/avr-protos.h, config/dsp16xx/dsp16xx-protos.h
	* config/h8300/h8300-protos.h, config/ia64/ia64-protos.h
	* config/m32r/m32r-protos.h, config/m68hc11/m68hc11-protos.h
	* config/mips/mips-protos.h, config/mmix/mmix-protos.h
	* config/mn10300/mn10300-protos.h, config/rs6000/rs6000-protos.h
	* config/sh/sh-protos.h, config/v850/v850-protos.h: Update.

	* xcoffout.h, config/rs6000/aix.h, config/rs6000/xcoff.h:
	Remove reference to ASM_FILE_START in comment.
	* config/arm/aof.h, config/arm/aout.h, config/arm/freebsd.h
	* config/arm/linux-gas.h, config/arm/netbsd-elf.h
	* config/arm/netbsd.h: Delete definition of ARM_OS_NAME.

From-SVN: r68229
2003-06-19 21:47:26 +00:00
Kaveh R. Ghazi
fad205ffba decl.c, [...]: Don't use the PTR macro.
cp:
	* cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR
	macro.

gcc:
	* bitmap.c, builtins.c, c-incpath.c, cgraph.c, config/frv/frv.c,
	config/mips/mips.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c,
	dwarf2out.c, dwarfout.c, except.c, expr.c, expr.h, fold-const.c,
	function.c, gcc.c, genoutput.c, gensupport.c, global.c,
	haifa-sched.c, hashtable.c, ifcvt.c, integrate.c, local-alloc.c,
	loop.c, mips-tdump.c, mips-tfile.c, mkdeps.c, protoize.c,
	read-rtl.c, recog.h, reload1.c, sbitmap.c, ssa-dce.c,
	stringpool.c, tlink.c, tree.c, varasm.c, varray.c: Don't use
	the PTR macro.

From-SVN: r68043
2003-06-16 21:41:10 +00:00
Kaveh R. Ghazi
f8950e171a * varasm.c: Don't include c-tree.h.
From-SVN: r67644
2003-06-09 02:20:32 +00:00
Zack Weinberg
a5fe455b12 config.gcc (with_cpu handling): Translate sparc64 in $machine to --with-cpu=v9.
* config.gcc (with_cpu handling): Translate sparc64 in
	$machine to --with-cpu=v9.
	* config/alpha/alpha.c
	(TARGET_ASM_GLOBALIZE_LABEL [TARGET_ABI_UNICOSMK]): Correct definition.
	(alpha_setup_incoming_varargs): #ifdef out when TARGET_ABI_UNICOSMK.

	* target.h: New hook asm_out.file_end.
	* target.h: Update to match.  New hook macro TARGET_ASM_FILE_END.
	* toplev.c (compile_file: Use targetm.asm_out.file_end.
	* system.h: Poison ASM_FILE_END.
	* varasm.c (file_end_indicate_exec_stack): New.
	* output.h: Prototype it.
	* doc/tm.texi: Document TARGET_ASM_FILE_END and
	file_end_indicate_exec_stack.  Delete references to attasm.h.

	* config/darwin.h (TARGET_ASM_FILE_END): Reset to darwin_file_end.
	(ASM_FILE_END): Delete; move code...
	* config/darwin.c (darwin_file_end): Here; new function.
	* config/darwin-protos.h: Prototype it.
	* config/alpha/alpha.c (unicosmk_asm_file_end): Make static,
	rename unicosmk_file_end.
	* config/arm/aof.h (ASM_FILE_END): Delete; move code...
	* config/arm/arm.c (aof_file_end): ... here; new static function.
	Set TARGET_ASM_FILE_END to aof_file_end if AOF_ASSEMBLER.
	Make aof_dump_imports and aof_dump_pic_table static.
	* config/avr/avr.c (asm_file_end): Rename avr_file_end, make static.
	Set TARGET_ASM_FILE_END to avr_file_end.
	* config/c4x/c4x.c (c4x_file_end): Make static.  Take no arguments.
	Set TARGET_ASM_FILE_END to c4x_file_end.
	* config/h8300/h8300.c (asm_file_end): Rename h8300_file_end,
	make static. Take no arguments.  Set TARGET_ASM_FILE_END to
	h8300_file_end.
	* config/i370/i370.h (ASM_FILE_END): Delete; move code...
	* config/i370/i370.c (i370_file_end): ... here; new static function.
	Set TARGET_ASM_FILE_END to i370_file_end.
	 * config/i386/i386.c (ix86_asm_file_end): Rename ix86_file_end.
	 Take no arguments.  Call file_end_indicate_exec_stack if
	 NEED_INDICATE_EXEC_STACK; don't use SUBTARGET_FILE_END.
	* config/i386/i386.h: Set TARGET_ASM_FILE_END, not ASM_FILE_END.
	Define NEED_INDICATE_EXEC_STACK to 0.
	* config/i386/linux.h, config/i386/linux64.h: Redefine
	NEED_INDICATE_EXEC_STACK to 1 instead of setting SUBTARGET_FILE_END.
	* config/i386/winnt.c (i386_pe_asm_file_end): Rename to
	i386_pe_file_end.  Take no arguments.  Use ix86_file_end.
	* config/ia64/ia64.c (ia64_hpux_asm_file_end): Rename to
	ia64_hpux_file_end, make static.  Take no arguments.
	* config/ip2k/ip2k.c (asm_file_start, asm_file_end,
	commands_in_prologues, commands_in_epilogues): Delete.
	(function_epilogue): Update to match.
	* config/mips/mips.c (mips_asm_file_end): Rename mips_file_end,
	make static.  Take no arguments.
	(iris6_asm_file_end): Rename iris6_file_end, make static, use
	mips_file_end, take no arguments.
	Set TARGET_ASM_FILE_END to iris6_file_end or mips_file_end as
	appropriate.
	* config/mmix/mmix.c (mmix_asm_file_end): Rename mmix_file_end,
	make static, take no arguments. Set TARGET_ASM_FILE_END to
	mmix_file_end.
	* config/pa/pa.c (output_deferred_plabels): Make static, take
	no arguments.  Set TARGET_ASM_FILE_END to output_deferred_plabels.
	* config/rs6000/xcoff.h (TARGET_ASM_FILE_END): Set it.
	(ASM_FILE_END): Delete; move code...
	* config/rs6000/rs6000.c (rs6000_xcoff_file_end): ... here;
	new static function.

	* config/avr/avr.h, config/cris/cris.h, config/h8300/h8300.h
	* config/mmix/mmix.h, config/mips/iris6.h, config/mips/mips.h:
	Don't set ASM_FILE_END.
	* config/alpha/linux-elf.h, config/m68k/linux.h, config/rs6000/linux.h
	* config/rs6000/linux64.h, config/s390/linux.h, config/sparc/linux.h
	* config/sparc/linux64.h: Set TARGET_ASM_FILE_END to
	file_end_indicate_exec_stack; don't set ASM_FILE_END.
	* config/alpha/unicosmk.h, config/i386/cygming.h
	* config/ia64/hpux.h: Set TARGET_ASM_FILE_END, not ASM_FILE_END.
	* config/arm/arm-protos.h, config/alpha/alpha-protos.h
	* config/avr/avr-protos.h, config/c4x/c4x-protos.h
	* config/h8300/h8300-protos.h, config/ia64/ia64-protos.h
	* config/ip2k/ip2k-protos.h, config/mips/mips-protos.h
	* config/mmix/mmix-protos.h, config/pa/pa-protos.h: Update.

From-SVN: r67591
2003-06-07 17:11:48 +00:00
Roger Sayle
1063147cc0 varasm.c (force_const_mem): Handle alignment of constants not representable as a type in the front-end language.
* varasm.c (force_const_mem): Handle alignment of constants not
	representable as a type in the front-end language.

From-SVN: r67416
2003-06-04 04:36:53 +00:00
Jakub Jelinek
24a4dd31f8 configure.in (HAVE_LD_PIE): Check for ld -pie.
* configure.in (HAVE_LD_PIE): Check for ld -pie.
	* config.in: Rebuilt.
	* configure: Rebuilt.
	* toplev.c (flag_pie, flag_shlib): New variables.
	(f_options): Add -fpie and -fPIE.
	(parse_options_and_default_flags): Set flag_pic if -fpie/-fPIE.
	Set flag_shlib if flag_pic and not -fpie/-fPIE.
	* flags.h (flag_pic, flag_shlib): Add.
	* varasm.c (default_binds_local_p): Use flag_shlib instead of
	flag_pic.
	* gcc.c (LINK_PIE_SPEC): Define.
	(LINK_COMMAND_SPEC): Use LINK_PIE_SPEC.
	(option_map): Add --pie -> -pie mapping.
	* config/sol2.h (ASM_SPEC): Handle -fpie the same way as -fpic
	and -fPIE the same way as -fPIC.
	* config/openbsd.h (ASM_SPEC): Likewise.
	* config/frv/frv.h (ASM_SPEC): Likewise.
	* config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Likewise.
	* config/arm/semi.h (ASM_SPEC): Likewise.
	* config/arm/netbsd-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
	* config/freebsd-spec.h (FBSD_CPP_SPEC): Likewise.
	* config/i386/beos-elf.h (CC1_SPEC): Likewise.
	* config/i386/freebsd-aout.h (ASM_SPEC): Likewise.
	* config/m68k/linux.h (CPP_SPEC): Likewise.
	* config/m68k/netbsd.h (ASM_SPEC): Likewise.
	* config/m68k/openbsd.h (ASM_SPEC): Likewise.
	* config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
	* config/mips/linux.h (SUBTARGET_CPP_SPEC): Likewise.
	* config/mips/openbsd.h (SUBTARGET_ASM_SPEC): Likewise.
	* config/pa/pa-linux.h (CPP_SPEC): Likewise.
	* config/netbsd-aout.h (ASM_SPEC): Likewise.
	* config/rs6000/sysv4.h (ASM_SPEC, CPP_SYSV_SPEC): Likewise.
	* config/rs6000/vxworks.h (CPP_SPEC): Likewise.
	* config/sparc/linux.h (CPP_SUBTARGET_SPEC, ASM_SPEC): Likewise.
	* config/sparc/linux64.h (CPP_SUBTARGET_SPEC, ASM_SPEC): Likewise.
	* config/sparc/sparc.h (ASM_SPEC): Likewise.
	* config/sparc/sp64-elf.h (ASM_SPEC): Likewise.
	* config/sparc/sysv4.h (ASM_SPEC): Likewise.
	* config/sparc/netbsd-elf.h (ASM_SPEC): Likewise.
	* config/sparc/openbsd64.h (ASM_SPEC): Likewise.
	* config/cris/linux.h (CRIS_ASM_SUBTARGET_SPEC): Likewise.
	* config/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Handle -pie.
	Simplify.
	* config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/i386/linux64.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/ia64/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/rs6000/sysv4.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/rs6000/linux64.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/sparc/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/sparc/linux64.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* doc/invoke.texi: Document -pie, -fpie and -fPIE options.

From-SVN: r67359
2003-06-03 11:06:55 +02:00
Kaveh R. Ghazi
90ff44cfd6 cfgloopanal.c (test_for_iteration): Use string concatentation on HOST_WIDE_INT_PRINT_* format specifier to collapse...
gcc:
	* cfgloopanal.c (test_for_iteration): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.
	* dbxout.c (dbxout_symbol): Likewise.
	* defaults.h (ASM_OUTPUT_SIZE_DIRECTIVE): Likewise.
	* dwarf2asm.c (dw2_asm_output_data_uleb128,
	dw2_asm_output_data_sleb128): Likewise.
	* genrecog.c (debug_decision_2): Likewise.
	* loop.c (emit_prefetch_instructions): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* ra-debug.c (dump_igraph, dump_graph_cost,
	dump_static_insn_cost): Likewise.
	* ra-rewrite.c (dump_cost): Likewise.
	* sdbout.c (PUT_SDB_INT_VAL, PUT_SDB_SIZE): Likewise.
	* sreal.c (dump_sreal): Likewise.
	* unroll.c (unroll_loop, precondition_loop_p): Likewise.
	* varasm.c (assemble_vtable_entry): Likewise.

cp:
	* ptree.c (cxx_print_type, cxx_print_xnode): Use string
	concatentation on HOST_WIDE_INT_PRINT_* format specifier to
	collapse multiple function calls into one.
	* tree.c (debug_binfo): Likewise.

java:
	* parse.y (print_int_node): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.

From-SVN: r66900
2003-05-17 01:40:45 +00:00
Richard Henderson
2adb9af1f8 rtl.h (TREE_CONSTANT_POOL_ADDRESS_P): Rename from DEFERRED_CONSTANT_P.
* rtl.h (TREE_CONSTANT_POOL_ADDRESS_P): Rename from
        DEFERRED_CONSTANT_P.
        * integrate.c (copy_rtx_and_substitute): Update use.
        * varasm.c (build_constant_desc): Set SYMBOL_REF_DECL
        to the copy generated.
        (maybe_output_constant_def_contents): Examine TREE_ASM_WRITTEN
        of the constant to see if we should emit.
        (mark_constant): Similarly.
        (output_constant_def_contents): Set TREE_ASM_WRITTEN.

From-SVN: r66807
2003-05-14 10:44:01 -07:00
Zack Weinberg
a2a6a79b5b varasm.c (notice_rtl_inlining_of_deferred_constant): New function.
* varasm.c (notice_rtl_inlining_of_deferred_constant): New function.
	* rtl.h: Prototype it.
	* integrate.c (copy_rtx_and_substitute <SYMBOL_REF>): Call it
	when appropriate.

From-SVN: r66762
2003-05-13 16:23:02 +00:00
Jan Hubicka
d3e0dffb76 * varasm.c (output_constant): Fix underflow.
From-SVN: r66732
2003-05-12 19:54:26 +00:00
Jan Hubicka
58e15542fc Mon May 12 11:32:53 CEST 2003 Jan Hubicka <jh@suse.cz>
* expr.h (assemble_static_space): Update prototype.
	* output.h (assemble_zeros, output_constant): Likewise.
	* elfos.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON): Make it 64bit clean
	* alpha.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASK_OUTPUT_LOCAL): Make
	it 64bit clean.
	* elf.h (ASM_OTUPUT_SKIP): Likewise.
	* unicosmk.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMM): Likewise.
	* arm.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* aout.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* unknown-elf.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* avr.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_SKIP): Expect
	HOST_WIDE_INT operand.
	* c4x.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP,
	ASM_OUTPUT_BSS): Expect HOST_WIDE_INT operand.
	* aout.h (ASM_OTUPUT_SKIP): Likewise.
	* cris.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise.
	* darwin.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON): Likewise.
	* dsp16xx.h (ASM_OTUPUT_SKIP): Likewise.
	* frv.h (ASM_OTUPUT_SKIP): Likewise.
	* h8300.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_LOCAL): Likewise.
	* 370.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Make it 64bit
	clean.
	* att.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT operand.
	* bsd.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Make it 64bit clean.
	* darwin.h (ASM_OUTPUT_SKIP): Make it 64bit clean..
	* sco5.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Expect
	HOST_WIDE_INT operand
	* svr3gas.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Expect HOST_WIDE_INT operand
	* sysv3.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT operand
	* i960.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_ALIGNED_LOCAL): Expect HOST_WIDE_INT operand
	* ip2k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* m32r.h (ASM_OUTPUT_COMMON): Likewise.
	* 3b1.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* amix.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* crds.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* hp320.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* m68k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* m68kelf.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* m68kv4.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* mot3300.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP): Likewise.
	* netbsd-elf.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_SKIP): Likewise.
	* sgs.h (ASM_OUTPUT_SKIP): Likewise.
	* tower-as.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_SKIP): Likewise.
	* m88k.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON, ASM_OUTPUT_SKIP):
	Likewise.
	* mcore.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_BSS, ASM_OUTPUT_SKIP): Likewise.
	* iris.h (ASM_OUTPUT_LOCAL): Likewise.
	* mips.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP): Likewise.
	* ns32k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Make it 64bit clean.
	* pa-pro-end.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL):
	Make it 64bit clean.
	* pa.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL,
	ASM_OUTPUT_SKIP): Make it 64bit clean.
	* hpux.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL): Make it
	64bit clean.
	* romp.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON): Expect
	HOST_WIDE_INT argument
	* s390.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT argument.
	* sh.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON): Expect
	HOST_WIDE_INT argument
	* sol2.h (ASM_OUTPUT_SKIP): HOST_WIDE_INT argument
	* sparc.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON): HOST_WIDE_INT argument
	* svr3.h (ASM_OUTPUT_SKIP): HOST_WIDE_INT argument
	* vax.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	HOST_WIDE_INT argument
	* vaxv.h (ASM_OUTPUT_LOCAL): HOST_WIDE_INT argument
	* xtensa.h (ASM_OUTPUT_LOCAL): HOST_WIDE_INT argument
	* varasm.c (asm_output_bss, asm_output_aligned_bss,
	asm_emit_uninitialized, assemble_zeros, assemble_static_space):
	HOST_WIDE_INT argument

From-SVN: r66713
2003-05-12 09:51:36 +00:00
Richard Kenner
a71c8ddcf5 * varasm.c (copy_constant, case VIEW_CONVERT_EXPR): New case.
From-SVN: r66692
2003-05-11 11:47:54 -04:00
Zack Weinberg
046e4e367e stmt.c (force_label_rtx): New function, based on logic formerly found in expand_expr.
* stmt.c (force_label_rtx): New function, based on logic
	formerly found in expand_expr.
	* expr.h: Prototype it.
	* expr.c (expand_expr <LABEL_DECL>): Use force_label_rtx if
	appropriate.
	* varasm.c (decode_addr_const <LABEL_DECL>): Use force_label_rtx.

	* print-tree.c (debug_tree): Free the table after we're done
	with it.  Use putc.

treelang:
	* Make-lang.in: Set -Wno-error for treelang/lex.o.

From-SVN: r66579
2003-05-07 21:14:48 +00:00
Zack Weinberg
10b6a27401 rtl.h (STRING_POOL_ADDRESS_P): Rename to DEFERRED_CONSTANT_P.
* rtl.h (STRING_POOL_ADDRESS_P): Rename to DEFERRED_CONSTANT_P.
	* varasm.c (struct varasm_status): Add deferred_constants field.
	(n_deferred_strings): Delete variable.
	(n_deferred_constants): New #define.
	(struct constant_descriptor_tree): Kill next and label fields.
	(const_hash_table, MAX_HASH_TABLE): Delete.
	(const_desc_htab): New static variable.
	(const_hash): Rename const_desc_hash, and make it fit the
	hashtab.h interface.
	(const_desc_eq): New.
	(const_hash_1, compare_constant): Const-ify arguments.
	(build_constant_desc): Set DEFERRED_CONSTANT_P on all new
	SYMBOL_REFs.  Clarify comments.  Don't set desc->label.
	(output_constant_def): Do the lookup/insert using the
	hashtab.h interface.  Don't muck with n_deferred_constants or
	DEFERRED_CONSTANT_P here.
	Always call maybe_output_constant_def_contents.
	(maybe_output_constant_def_contents): Take a pointer to the
	descriptor, not the EXP and RTL separately.  Return
	immediately if this constant is not deferred.  Defer output of
	everything, except writable string constants.  Update
	n_deferred_constants here.
	(output_constant_def_contents): Now takes just one argument,
	an rtx.  Clear DEFERRED_CONSTANT_P here.
	(mark_constant_pool): Update for rename of n_deferred_strings.
	(mark_constant): Don't clear DEFERRED_CONSTANT_P here.

	(init_varasm_status): Clear p->deferred_constants.
	(init_varasm_once): Call htab_create_ggc for const_desc_htab.

	* gcc.dg/const-elim-1.c, gcc.dg/const-elim-2.c: New testcases.

From-SVN: r66505
2003-05-05 21:57:54 +00:00
Gabriel Dos Reis
3d8856836f * varasm.c (assemble_variable): Don't use error_with_file_and_line.
From-SVN: r66454
2003-05-04 14:27:17 +00:00
J"orn Rennecke
267594f312 * varasm.c (default_assemble_visibility): Use assemble_name.
From-SVN: r66220
2003-04-29 13:18:17 +01:00
Zack Weinberg
0864034eb2 tree.h (TREE_CST_RTL, [...]): Delete.
* tree.h (TREE_CST_RTL, CST_OR_CONSTRUCTOR_CHECK): Delete.
	(struct tree_int_cst, struct tree_real_cst, struct tree_string,
	struct tree_complex, struct tree_vector): Remove RTL field.
	(CONSTRUCTOR_ELTS): Use elt 0.
	* tree.def (CONSTRUCTOR): Delete first of its two operands.
	* varasm.c (output_constant_def): Remove early exit if
	TREE_CST_RTL is set.  Don't set TREE_CST_RTL.
	(decode_addr_const): Don't mention TREE_CST_RTL in comment.
	* target.h (select_section): Don't mention TREE_CST_RTL in comment.
	* doc/tm.texi (encode_section_info): Don't talk about TREE_CST_RTL.

ada:
	* utils.c (convert): No need to clear TREE_CST_RTL.

From-SVN: r66182
2003-04-28 20:02:28 +00:00
Zack Weinberg
afc6aaab24 expr.c (expand_expr <COMPLEX_CST, [...]): Always call output_constant_def, use its result instead of TREE_CST_RTL (exp).
* expr.c (expand_expr <COMPLEX_CST, STRING_CST>): Always call
        output_constant_def, use its result instead of TREE_CST_RTL (exp).
        Can assume it has the form (mem (symbol_ref ".LCxxx")).
        (expand_expr <COMPONENT_REF>): Can always just extract the
        relevant field of a CONSTRUCTOR.
        (expand_expr <ARRAY_REF, COMPONENT_REF, BIT_FIELD_REF,
        ARRAY_RANGE_REF>): Make control flow explicit.
        * varasm.c (output_constant_def): Can look at TREE_CST_RTL of
        an INTEGER_CST.

From-SVN: r66148
2003-04-28 04:13:48 +00:00
Zack Weinberg
32a619073c varasm.c (const_str_htab_hash, [...]): Kill.
* varasm.c (const_str_htab_hash, const_str_htab_eq, STRHASH,
	struct deferred_string, const_str_htab): Kill.
	(n_deferred_strings): New static variable.
	(build_constant_desc): Set SYMBOL_REF_DECL of the new
	symbol_ref to point to the constant.
	(output_constant_def): When a deferred string is forced out,
	just clear STRING_POOL_ADDRESS_P and decrement n_deferred_strings.
	(mark_constant): Likewise.
	(maybe_output_constant_def_contents): When deferring a string
	constant, just set STRING_POOL_ADDRESS_P and increment
	n_deferred_strings.
	(mark_constant_pool): Check n_deferred_strings, not the size
	of const_str_htab.
	(init_varasm_once): No need to create const_str_htab.

	* rtl.def, rtl.h, doc/rtl.texi: Document possibility that
	SYMBOL_REF_DECL points to a constant.

From-SVN: r66133
2003-04-27 18:57:51 +00:00
Zack Weinberg
293107d161 varasm.c (output_constant_def): Split out two new static functions...
* varasm.c (output_constant_def): Split out two new static
	functions, build_constant_desc and maybe_output_constant_def_contents.
	Restructure for comprehensibility.  Don't call
	output_addressed_constants.  Treat defstr being non-NULL for
	STRING_POOL_ADDRESS_P constants as an invariant.
	(struct deferred_string): Remove labelno field.
	(output_constant_def_contents): Kill labelno argument.  Call
	output_addressed_constants here.  Use ASM_OUTPUT_LABEL, not
	asm_out.internal_label.
	(mark_constant): Update call to output_constant_def_contents.
	Treat defstr being non-NULL for STRING_POOL_ADDRESS_P
	constants as an invariant.

From-SVN: r66129
2003-04-27 03:50:27 +00:00
Zack Weinberg
b20cbca237 * varasm.c (struct deferred_constant, defer_addressed_constants_flag)
(defer_addressed_constants, output_deferred_addressed_constants): Kill.
	(output_constant_def): Remove code predicated on
	defer_addressed_constants_flag.

	* output.h: Remove prototypes of deleted functions.
	* c-typeck.c (constructor_subconstants_deferred): Kill.
	(struct initializer_stack): Remove 'deferred' field.
	(start_init): Remove all references to the above.
	(finish_init): Likewise. Also remove never-executed call to
	output_deferred_addressed_constants.  Pull assignment to
	defstr out of if expression.

From-SVN: r65865
2003-04-20 22:43:59 +00:00
Zack Weinberg
c6a2438aaf target.h (encode_section_info): Add new argument carrying the RTL to be modified by the hook.
* target.h (encode_section_info): Add new argument carrying
	the RTL to be modified by the hook.

	* varasm.c (make_decl_rtl, output_constant_def): Update calls
	to encode_section_info.
	(default_encode_section_info): Take and use RTL argument,
	don't use TREE_CST_RTL or DECL_RTL.
	* output.h: Update prototype of default_encode_section_info.
	* config/darwin.h (ASM_DECLARE_OBJECT_NAME)
	(ASM_DECLARE_FUNCTION_NAME, ASM_OUTPUT_ALIGNED_DECL_LOCAL):
	Update calls to encode_section_info.

	* config/darwin.c, config/arm/arm.c, config/arm/pe.c
	* config/h8300/h8300.c, config/i386/winnt.c, config/m32r/m32r.c
	* config/m68hc11/m68hc11.c, config/m88k/m88k.c, config/mcore/mcore.c
	* config/mips/mips.c, config/mmix/mmix.c, config/pa/pa.c
	* config/romp/romp.c, config/rs6000/rs6000.c, config/s390/s390.c
	* config/v850/v850.c (TARGET_ENCODE_SECTION_INFO definitions):
	Take and use RTL argument, don't use TREE_CST_RTL or DECL_RTL,
	except for PE dllimport/dllexport.  Update calls to
	default_encode_section_info.

	* config/darwin-protos.h, config/arm/arm-protos.h, config/i386-protos.h:
	Update prototypes.

	* doc/tm.texi (TARGET_ENCODE_SECTION_INFO): Update.

From-SVN: r65859
2003-04-20 18:20:39 +00:00
Richard Henderson
1b8135a411 varasm.c (default_encode_section_info): Don't set SYMBOL_FLAG_EXTERNAL if not TREE_PUBLIC.
* varasm.c (default_encode_section_info): Don't set
        SYMBOL_FLAG_EXTERNAL if not TREE_PUBLIC.
        * config/i370/i370.c (i370_encode_section_info): Remove.
        * config/i370/i370.h (CONSTANT_ADDRESS_P): Use SYMBOL_REF_EXTERNAL_P.
        (PRINT_OPERAND, PRINT_OPERAND_ADDRESS): Likewise.
        * config/i370/i370.md (movsi): Likewise.

        * config/i370/t-i370: Add missing backslash.

From-SVN: r65728
2003-04-17 00:34:34 -07:00
Zack Weinberg
0b78a9b6a0 varasm.c (output_constant_def): Do not consult CONSTANT_AFTER_FUNCTION_P.
* varasm.c (output_constant_def): Do not consult
	CONSTANT_AFTER_FUNCTION_P.  Remove all code predicated on it.
	(after_function_constants, output_after_function_constants): Delete.
	* doc/tm.texi: Delete documentation of CONSTANT_AFTER_FUNCTION_P.
	* config/mips/mips-protos.h, config/mips/mips.c
	(mips16_constant_after_function_p): Delete.
	* config/mips/mips.h: Delete #if-0-ed definition of
	CONSTANT_AFTER_FUNCTION_P.
	* config/d30v/d30v.h, config/stormy16/stormy16.h: Remove
	mention of CONSTANT_AFTER_FUNCTION_P in comment.

From-SVN: r65663
2003-04-15 20:57:12 +00:00
Richard Henderson
52859c77e9 rtl.def (SYMBOL_REF): Add two 0 fields.
* rtl.def (SYMBOL_REF): Add two 0 fields.
        * gengtype.c (adjust_field_rtx_def): Handle them.
        * print-rtl.c (print_rtx): Print them.
        * rtl.h (SYMBOL_REF_DECL, SYMBOL_REF_FLAGS): New.
        (SYMBOL_FLAG_FUNCTION, SYMBOL_REF_FUNCTION_P): New.
        (SYMBOL_FLAG_LOCAL, SYMBOL_REF_LOCAL_P): New.
        (SYMBOL_FLAG_SMALL, SYMBOL_REF_SMALL_P): New.
        (SYMBOL_FLAG_TLS_SHIFT, SYMBOL_REF_TLS_MODEL): New.
        (SYMBOL_FLAG_EXTERNAL, SYMBOL_REF_EXTERNAL_P): New.
        (SYMBOL_FLAG_MACH_DEP): New.
        * optabs.c (init_one_libfunc): Zap fake SYMBOL_REF_DECL.
        * varasm.c (make_decl_rtl): Set SYMBOL_REF_DECL.
        (assemble_static_space): Set SYMBOL_REF_FLAGS.
        (assemble_trampoline_template): Likewise.
        (output_constant_def, force_const_mem): Likewise.
        (default_encode_section_info): New.
        * output.h: Declare it.
        * target-def.h (TARGET_ENCODE_SECTION_INFO): Use it.

From-SVN: r65479
2003-04-11 14:15:36 -07:00
Franz Sirl
7d4444ea03 combine.c (merge_outer_ops): Fix typo.
2003-04-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* combine.c (merge_outer_ops): Fix typo.

	* varasm.c (make_decl_one_only): Revert 2003-03-09 patch.

From-SVN: r65136
2003-04-01 18:33:51 +00:00
Aldy Hernandez
d744e06e5e simd-3.c: New.
* testsuite/gcc.c-torture/execute/simd-3.c: New.

        * expr.c (expand_expr): Handle VECTOR_CST.
        (const_vector_from_tree): New.

        * varasm.c (output_constant): Handle VECTOR_CST.

        * c-typeck.c (digest_init): Build a vector constant from a
        VECTOR_TYPE.

        * config/rs6000/rs6000.c: Remove prototype for
        easy_vector_constant.
        (easy_vector_constant): Add mode parameter.  Rewrite to handle
        more easy constants.
        (rs6000_emit_move): Pass mode to easy_vector_constant.
        Call emit_easy_vector_insn for SPE V2SI vector constant moves.
        (emit_easy_vector_insn): New.
        (easy_vector_same): New.
        (EASY_VECTOR_15): New macro.
        (EASY_VECTOR_15_ADD_SELF): New macro.
        (bdesc_2arg): Rename to xorv2si3.
        (easy_vector_constant_add_self): New.
        (input_operand): Allow vector constants.

        * config/rs6000/rs6000.h (PREDICATE_CODES): Add
        easy_vector_constant, easy_vector_constant_add_self.
        (EXTRA_CONSTRAINT): Add 'W'.

        * config/rs6000/rs6000-protos.h: Add prototype for
        easy_vector_constant, emit_easy_vector_insn.

        * config/rs6000/altivec.md (xorv8hi3): New.
        (xorv16qi3): New.
        Remove all _const0 patterns.
        (movv4si_internal): Rewrite to use code.  Add vector constant to
        vector alternative.  Add splitter.
        (movv8hi_internal): Same.
        (movv16qi_internal): Same.
        (movv4sf_internal): Same.
        Change the unspecs for vspltis* to use constants.

        * config/rs6000/spe.md ("xorv4hi3"): New.
        ("spe_evxor"): Rename to xorv2si3.
        ("xorv1di3"): New.
        Remove all _const0 patterns.
        (movv2si_internal): Rewrite to use code.  Add vector constant to
        alternatives.  Add splitter.
        (movv4hi_internal): Add vector constant to alternatives.
        (movv1di_internal): Same.
        (movv2sf_internal): Same.

From-SVN: r65130
2003-04-01 13:40:11 +00:00
Ulrich Weigand
2436a91b34 varasm.c (struct rtx_const): Change type of un.addr member to struct holding an additional 'symbol' member.
* varasm.c (struct rtx_const): Change type of un.addr member
	to struct holding an additional 'symbol' member.
	(decode_rtx_const): Re-enable optimization to count SYMBOL_REFs
	with equal string addresses as equal.
	(simplify_subtraction): Adapt to struct rtx_const change.

From-SVN: r64406
2003-03-15 16:30:35 +00:00
Jason Merrill
af75fb675d re PR rtl-optimization/6871 (const objects shouldn't be moved to .bss)
PR optimization/6871
        * varasm.c (assemble_variable): Leave constant zeroes in .rodata.

From-SVN: r64387
2003-03-14 20:43:07 -05:00
Franz Sirl
e1a0421226 varasm.c (make_decl_one_only): Use declare_weak().
2003-03-09  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* varasm.c (make_decl_one_only): Use declare_weak().

From-SVN: r64044
2003-03-09 20:41:31 +00:00
Andreas Schwab
4b550d9f65 * varasm.c (asm_output_aligned_bss): Declare as possibly unused.
From-SVN: r62282
2003-02-02 17:30:49 +00:00
Richard Sandiford
271bd540d1 flags.h (flag_volatile): Remove declaration.
* flags.h (flag_volatile): Remove declaration.
	(flag_volatile_global, flag_volatile_static): Likewise.
	* c-typeck.c (build_indirect_ref): Don't check flag_volatile.
	* toplev.c (flag_volatile): Remove definition.
	(flag_volatile_global, flag_volatile_static): Likewise.
	(f_options): Remove corresponding entries here.
	* varasm.c (make_decl_rtl): Don't check flag_volatile_global
	or flag_volatile_static.
	* doc/invoke.texi: Remove documentation of -fvolatile,
	-fvolatile-global and -fvolatile-static.

cp/
	* typeck.c (build_indirect_ref): Don't check flag_volatile.

ada/
	* utils2.c (build_unary_op): Don't check flag_volatile.
	* gnat_ug.texi: Remove -fvolatile from example.
	* gnat_ug_vxw.texi: Likewise.

testsuite/
	* g++.dg/init/new1.C: Remove -fvolatile dg-options line.
	* g++.dg/init/new2.C: Likewise.
	* g++.dg/other/new1.C: Likewise.

From-SVN: r62245
2003-02-01 13:09:41 +00:00
Geoffrey Keating
63af3bd1a2 varasm.c (struct constant_descriptor_rtx): Remove unused `label' field.
* varasm.c (struct constant_descriptor_rtx): Remove unused
	`label' field.

From-SVN: r61182
2003-01-11 00:47:36 +00:00
Geoffrey Keating
17211ab553 Merge from pch-branch.
From-SVN: r61136
2003-01-10 02:22:34 +00:00
Kazu Hirata
14b493d64d regmove.c: Fix comment typos.
* regmove.c: Fix comment typos.
	* reload.c: Likewise.
	* reload1.c: Likewise.
	* resource.c: Likewise.
	* rtl.def: Likewise.
	* rtl.h: Likewise.
	* rtlanal.c: Likewise.
	* sched-deps.c: Likewise.
	* sched-rgn.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* ssa-ccp.c: Likewise.
	* ssa.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* system.h: Likewise.
	* tlink.c: Likewise.
	* toplev.c: Likewise.
	* tracer.c: Likewise.
	* tree-inline.c: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.
	* unroll.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r60473
2002-12-24 08:30:34 +00:00
Kazu Hirata
5bdc58781b c-pretty-print.h: Fix comment typos.
* c-pretty-print.h: Fix comment typos.
	* integrate.c: Likewise.
	* varasm.c: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/c4x/c4x.md: Likewise.
	* config/fr30/fr30.md: Likewise.
	* config/frv/frv.c: Likewise.
	* config/h8300/h8300.c: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ip2k/ip2k.md: Likewise.
	* config/m68hc11/m68hc11-crt0.S: Likewise.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/m68hc11/m68hc11.md: Likewise.
	* config/m68hc11/m68hc12.h: Likewise.
	* config/mcore/mcore.md: Likewise.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mmix/mmix-modes.def: Likewise.
	* config/pa/pa.c: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/rs6000/rs6000.md: Likewise.

From-SVN: r60354
2002-12-20 04:30:57 +00:00
Kazu Hirata
272d0bee76 ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.2: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* cppexp.c: Likewise.
	* df.c: Likewise.
	* gcov.c: Likewise.
	* gengtype.c: Likewise.
	* reload1.c: Likewise.
	* sched-rgn.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* timevar.c: Likewise.
	* toplev.c: Likewise.
	* tree.h: Likewise.
	* varasm.c: Likewise.
	* config/fr30/fr30.md: Likewise.
	* config/i386/i386.c: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/pa/pa.c: Likewise.

From-SVN: r60281
2002-12-19 05:18:13 +00:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Richard Henderson
5d5cd66f11 tree.h (MODULE_LOCAL_P): Kill.
* tree.h (MODULE_LOCAL_P): Kill.
        * varasm.c (default_binds_local_p_1): Use decl_visibility instead.

From-SVN: r60040
2002-12-11 10:28:26 -08:00
Richard Henderson
3a04ff6433 target.h (gcc_target): Add cannot_force_const_mem.
* target.h (gcc_target): Add cannot_force_const_mem.
        * target-def.h (TARGET_CANNOT_FORCE_CONST_MEM): New.
        (TARGET_INITIALIZER): Add it.
        * varasm.c (force_const_mem): Fail if cannot_force_const_mem.
        * expr.c (emit_move_insn): Be prepared for force_const_mem to fail.
        * reload1.c (reload): Likewise.
        * hooks.c (hook_bool_rtx_false): New.
        * hooks.h: Declare it.

        * config/i386/i386.c (ix86_cannot_force_const_mem): New.
        (TARGET_CANNOT_FORCE_CONST_MEM): New.
        (ix86_expand_move): Remove de-const-pooling hack.

	* gcc.dg/tls/opt-4.c: New.

From-SVN: r59971
2002-12-09 15:54:01 -08:00
Richard Henderson
25fdb4dc97 c-common.c (handle_visibility_attribute): Accept "default".
* c-common.c (handle_visibility_attribute): Accept "default".
	* tree.h (enum symbol_visibility): New.
	(decl_visibility): Declare.
	* target.h (gcc_target.visibility): Take visibility arg as integer.
	* varasm.c (default_assemble_visibility): Likewise.
	(decl_visibility): New.
	(maybe_assemble_visibility): Use it.
	* output.h (default_assemble_visibility): Update prototype.
	* config/rs6000/rs6000.c (rs6000_assemble_visibility): Take
	visibility arg as integer.

From-SVN: r59559
2002-11-26 22:13:23 -08:00
Jakub Jelinek
f411159305 varasm.c (output_constant_pool): For pool constants in mergeable section ensure each constant is padded to...
* varasm.c (output_constant_pool): For pool constants in mergeable
	section ensure each constant is padded to multiple of entity size.

From-SVN: r59508
2002-11-26 13:36:09 +01:00
Jakub Jelinek
96d0f4dc5c varasm.c (default_exception_section): Move to...
* varasm.c (default_exception_section): Move to...
	* except.c (default_exception_section): ... here. Make
	.gcc_except_table read-only if it is not expected to have any
	dynamic relocations and linker handles it.
	* dwarf2out.c (default_eh_frame_section): Make .eh_frame read-only
	if it is not expected to have any dynamic relocations and linker
	handles it.
	* configure.in (HAVE_LD_RO_RW_SECTION_MIXING): Check what ld does
	when linking read-only and read-write sections together.
	* configure, config.in: Rebuilt.
	* crtstuff.c (EH_FRAME_SECTION_CONST): Define.
	(__EH_FRAME_BEGIN__, __FRAME_END__): Add it.

From-SVN: r59507
2002-11-26 13:34:25 +01:00
Jakub Jelinek
7eca317a0f varasm.c (output_addressed_constants): Clear reloc if both operands contain local relocations.
* varasm.c (output_addressed_constants) [MINUS_EXPR]: Clear reloc if
	both operands contain local relocations.
	(categorize_decl_for_section): Don't use mergeable sections if
	initializer has any relocations.

	* gcc.dg/20021029-1.c: New test.
	* gcc.dg/20021029-2.c: New test.

From-SVN: r59097
2002-11-14 08:56:54 +01:00
Mark Mitchell
9b5b7e3a8f re PR c++/8333 (c++ emits double .globals for symbols [ regression from 3.0.4 ])
PR c++/8333
	* varasm.c (asm_output_aligned_bss): Do not call
	ASM_GLOBALIZE_LABEL.

From-SVN: r58658
2002-10-30 19:23:27 +00:00
Igor Shevlyakov
7a360cce09 * varasm.c (struct rtx_const): Array size 16 for V16QImode.
From-SVN: r58509
2002-10-24 16:00:32 -07:00
Alan Modra
6a0a6ac4c1 output.h (SECTION_NOTYPE): Define.
* output.h (SECTION_NOTYPE): Define.
	* varasm.c (default_section_type_flags_1): Set SECTION_NOTYPE for
	init array sections.
	(default_elf_asm_named_section): Mind SECTION_NOTYPE.
	* config/arm/arm.c (arm_elf_asm_named_section): Likewise.  Also
	merge TLS support.

From-SVN: r58404
2002-10-22 17:29:41 +09:30
Kaveh R. Ghazi
7bdfd72e8d decl.c (typename_hash): Use htab_hash_pointer.
cp:
	* decl.c (typename_hash): Use htab_hash_pointer.

gcc:
	* fold-const.c (size_htab_hash): Use htab_hash_pointer.
	* function.c (insns_for_mem_hash): Likewise.
	* varasm.c (STRHASH): Likewise.

java:
	* class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.

From-SVN: r58036
2002-10-11 01:28:28 +00:00
Roger Sayle
f963b5d977 re PR rtl-optimization/6627 (-fno-align-functions regression from 2.95)
PR optimization/6627
	* toplev.c (force_align_functions_log): New global variable.
	* flags.h (force_align_functions_log): Add extern prototype.
	* varasm.c (assemble_start_function): Use it to force minimum
	function alignment.
	* config/i386/i386.h (FUNCTION_BOUNDARY): Set the correct
	minimum function alignment to one byte.
	(TARGET_PTRMEMFUNC_VBIT_LOCATION): Store the virtual bit in
	the least significant bit of vtable member function pointers.
	* tree.h (enum ptrmemfunc_vbit_where_t): Move definition to
	here from cp/cp-tree.h.

	* cp/cp-tree.h (enum ptrmemfunc_vbit_where_t): Delete definition
	from here, and move it to tree.h.
	* cp/decl.c (cxx_init_decl_processing): If storing the vbit
	in function pointers, ensure that force_align_functions_log
	is atleast one.

	* java/lang.c (java_init): If storing the vbit in function
	pointers, ensure that force_align_functions_log is atleast
	one to aid compatability with g++ vtables.

From-SVN: r57745
2002-10-02 18:46:45 +00:00
Jakub Jelinek
dce81a1a59 extend.texi (tls_model): Document.
* doc/extend.texi (tls_model): Document.
	* varasm.c (decl_tls_model): New.
	* c-common.c (handle_tls_model_attribute): New.
	(c_common_attribute_table): Add tls_model.
	* config/alpha/alpha.c (alpha_encode_section_info): Use
	decl_tls_model.
	* flags.h (enum tls_model, flag_tls_default): Move...
	* tree.h (enum tls_model, flag_tls_default): ...here.
	(decl_tls_model): New prototype.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/i386/i386.c (ix86_encode_section_info): Likewise.
	* config/i386/i386.md (tls_global_dynamic, tls_local_dynamic_base):
	Allow !flag_pic.

From-SVN: r57588
2002-09-27 15:30:10 +02:00
Kazu Hirata
0e9e1e0a42 LANGUAGES: Follow spelling conventions.
* LANGUAGES: Follow spelling conventions.
	* rtl.def: Likewise.
	* sbitmap.c: Likewise.
	* sched-int.h: Likewise.
	* sched-rgn.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* ssa.c: Likewise.
	* stab.def: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* target.h: Likewise.
	* timevar.c: Likewise.
	* toplev.c: Likewise.
	* tree-dump.c: Likewise.
	* tree-inline.c: Likewise.
	* tree.c: Likewise.
	* tree.def: Likewise.
	* tree.h: Likewise.
	* unroll.c: Likewise.
	* varasm.c: Likewise.
	* vmsdbgout.c: Likewise.
	* treelang/treelang.texi: Likewise.
	* treelang/treetree.c: Likewise.

From-SVN: r57587
2002-09-27 12:48:07 +00:00
Richard Henderson
46b33600d5 real.c (real_hash): New.
* real.c (real_hash): New.
        * real.h: Declare it.
        * cse.c (canon_hash): Use it.
        * cselib.c (hash_rtx): Likewise.
        * emit-rtl.c (const_double_htab_hash): Likewise.
        * rtl.h (CONST_DOUBLE_REAL_VALUE): New.
        * varasm.c (struct rtx_const): Reduce vector size; separate
        integer and fp vectors.
        (HASHBITS): Remove.
        (const_hash_1): Rename from const_hash.  Use real_hash.  Do not
        take modulus MAX_HASH_TABLE.
        (const_hash): New.  Do take modulus MAX_HASH_TABLE.
        (output_constant_def): Do not take modulus MAX_HASH_TABLE.
        (SYMHASH): Don't use HASHBITS.
        (decode_rtx_const): Copy only active bits from REAL_VALUE_TYPE.
        Fix CONST_VECTOR thinko wrt fp vectors.  Fix kind comparison.
        (simplify_subtraction): Fix kind comparison.
        (const_hash_rtx): Return unsigned int.  Don't use HASHBITS.
        Use a union to pun integer array.
        * config/rs6000/rs6000.c (rs6000_hash_constant): Use real_hash;
        only hash two words of integral CONST_DOUBLE.

From-SVN: r57356
2002-09-20 10:50:48 -07:00
Kazu Hirata
4b7e68e7d2 basic-block.h: Fix comment formatting.
* basic-block.h: Fix comment formatting.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-lex.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloop.c: Likewise.
	* defaults.h: Likewise.
	* et-forest.c: Likewise.
	* explow.c: Likewise.
	* function.h: Likewise.
	* gcov.c: Likewise.
	* genattrtab.c: Likewise.
	* gengtype.c: Likewise.
	* ifcvt.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* profile.c: Likewise.
	* ra-build.c: Likewise.
	* real.c: Likewise.
	* rtl.h: Likewise.
	* tracer.c: Likewise.
	* tree-inline.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r56952
2002-09-08 12:47:27 +00:00
Alan Modra
bd79540a03 varasm.c (default_assemble_visibility): Rename from assemble_visibility.
* varasm.c (default_assemble_visibility): Rename from
	assemble_visibility.
	* output.h: Here too.
	* target-def.h (TARGET_ASM_ASSEMBLE_VISIBILITY): And here.
	* config/rs6000/rs6000.c (rs6000_assemble_visibility): And here.

From-SVN: r56948
2002-09-08 19:00:21 +09:30
Igor Shevlyakov
5dd7822000 varasm.c (decode_rtx_const): Don't check undefined field for CONST_VECTOR.
* varasm.c (decode_rtx_const): Don't check undefined field for
	CONST_VECTOR.

From-SVN: r56934
2002-09-07 21:08:11 -07:00
Alan Modra
93638d7a89 tm.texi (TARGET_ASM_ASSEMBLE_VISIBILITY): Describe.
* doc/tm.texi (TARGET_ASM_ASSEMBLE_VISIBILITY): Describe.
	* target-def.h (TARGET_ASM_ASSEMBLE_VISIBILITY): Define.
	(TARGET_ASM_OUT): Add the above here.
	* target.h (struct gcc_target): Add "visibility" field.
	* varasm.c (maybe_assemble_visibility): Call targetm visibility func.
	* config/rs6000/rs6000.c (rs6000_assemble_visibility): New function.
	(TARGET_ASM_ASSEMBLE_VISIBILITY): Define.
	(rs6000_legitimize_reload_address, first_reg_to_save): Formatting.

From-SVN: r56906
2002-09-07 09:49:27 +09:30
Dale Johannesen
f57f9cb867 Fix struct rtx_const so veclo and vechi don't share storage.
From-SVN: r56825
2002-09-04 23:59:56 +00:00
David Edelsohn
275b6d80ed target-def.h (TARGET_HAVE_SRODATA_SECTION): New macro.
* target-def.h (TARGET_HAVE_SRODATA_SECTION): New macro.
        * target.h (gcc_target): Add have_srodata_section member.
        * varasm.c (section_category): Add SECCAT_SRODATA.
        (categorize_decl_for_section): Return SECCAT_SRODATA for sdata if
        READONLY_SDATA_SECTION defined.
        (decl_readonly_section_1): True for SECCAT_SRODATA also.
        (default_elf_select_section_1): Map SECCAT_SRODATA to .sdata2.
        (default_unique_section_1): Likewise.

From-SVN: r56806
2002-09-04 14:11:18 -04:00
David Edelsohn
2cc9fb4ca3 varasm.c (default_section_type_flags): Append _1 to name with shlib parameter.
* varasm.c (default_section_type_flags): Append _1 to name with
        shlib parameter.  Use original name to call new function with
        implicit flag_pic.
        (decl_readonly_section): Likewise.
        (default_elf_select_section): Likewise.
        (default_unique_section): Likewise.
        (default_bind_local_p): Likewise.
        (categorize_decl_for_section): Add shlib parameter to use in place
        of implicit flag_pic.
        * output.h: Declare new functions with _1 and shlib argument.

From-SVN: r56780
2002-09-03 21:56:12 -04:00
Kaveh R. Ghazi
5eb99654a2 alpha.c (TARGET_ASM_GLOBALIZE_LABEL): Define for unicosmk.
* alpha.c (TARGET_ASM_GLOBALIZE_LABEL): Define for unicosmk.
	* alpha/elf.h (ASM_OUTPUT_EXTERNAL_LIBCALL,
	ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* alpha/osf.h (ASM_OUTPUT_WEAK_ALIAS): Likewise.
	* alpha/unicosmk.h (ASM_GLOBALIZE_LABEL): Delete.
	* arm/aof.h (ASM_GLOBALIZE_LABEL): Likewise.
	(GLOBAL_ASM_OP): Define.
	* arm.c (aof_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for AOF.
	* arm/unknown-elf.h (ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* c4x.c (c4x_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for c4x.
	* c4x.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* cris/aout.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Use target hook.
	* darwin-protos.h (darwin_globalize_label): Declare.
	* darwin.c (darwin_globalize_label): New function.
	* darwin.h (ASM_DECLARE_CLASS_REFERENCE): Use target hook.
	(ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP, TARGET_ASM_GLOBALIZE_LABEL): Define.
	* dsp16xx.c (asm_output_common): Use target hook.
	* elfos.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Likewise.
	* frv.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* i370.c (i370_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for i370.
	* i370.h (ASM_GLOBALIZE_LABEL): Delete.
	* i386.c (ix86_asm_file_end): Use target hook.
	* i386/sco5.h (ASM_GLOBALIZE_LABEL): Don't undef.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Use target hook.
	* ia64.c (ia64_asm_output_external): Likewise.
	* ia64/sysv4.h: Update comment.
	* m32r.h (ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* mips/elf.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* mips/iris5.h (ASM_OUTPUT_WEAK_ALIAS): Use target hook.
	* mips/linux.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* mips.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Use target hook.
	* mmix-protos.h (mmix_asm_globalize_label): Delete.
	* mmix.c (mmix_asm_globalize_label): Likewise.
	* mmix.h (ASM_GLOBALIZE_LABEL): Likewise.
	(GLOBAL_ASM_OP): Define.
	* ns32k.c (ns32k_globalize_label): New function.
	* ns32k.h (TARGET_ASM_GLOBALIZE_LABEL): Define for ns32k.
	(ASM_GLOBALIZE_LABEL): Delete.
	* pa/pa-linux.h (ASM_GLOBALIZE_LABEL): Don't undef.
	(TARGET_ASM_GLOBALIZE_LABEL): Undefine.
	* pa.c (pa_globalize_label): New function.
	* pa.h (ASM_GLOBALIZE_LABEL): Delete.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for pa.
	* rs6000/darwin.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	(TARGET_ASM_GLOBALIZE_LABEL): Undef.
	* rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* rs6000/xcoff.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* v850.c (v850_output_aligned_bss): Use target hook.
	* vax.c (vms_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for vms.
	* vax/vms.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* defaults.h (ASM_GLOBALIZE_LABEL): Delete.
	* doc/tm.texi: Update docs.
	* dwarf2out.c (default_eh_frame_section, output_die_symbol): Use
	target hook.
	* final.c (output_alternate_entry_point): Likewise.
	* hooks.c (hook_FILEptr_constcharptr_void): New function.
	* hooks.h (hook_FILEptr_constcharptr_void): Declare.
	* output.h (assemble_global): Delete.
	(default_globalize_label): Declare.
	* system.h (ASM_GLOBALIZE_LABEL): Poison.
	* target-def.h (TARGET_ASM_GLOBALIZE_LABEL): Define.
	(TARGET_ASM_OUT): Add TARGET_ASM_GLOBALIZE_LABEL.
	* target.h (gcc_target): Add globalize_label member.
	* varasm.c (asm_output_bss, asm_output_aligned_bss,
	globalize_decl): Use target hook.
	(assemble_global): Delete.
	(default_globalize_label): New function.

From-SVN: r56478
2002-08-21 02:41:51 +00:00
Kaveh R. Ghazi
cbf2f4797d m68k.c (m68k_output_function_prologue, [...]): Delete versions for DPX2/MOTOROLA and NEWS/MOTOROLA.
* m68k.c (m68k_output_function_prologue,
	m68k_output_function_epilogue): Delete versions for DPX2/MOTOROLA
	and NEWS/MOTOROLA.
	* genattrtab.c: Remove dpx2 comment.
	* libgcc2.c (__enable_execute_stack): Delete versions for
	NeXT/__MACH__, __convex__, __sysV88__, __pyr__ and
	sony_news/SYSTYPE_BSD.
	* longlong.h: Delete code for __a29k__, _AM29K, __clipper__,
	__gmicro__, __i860__, __NeXT__ and __pyr__.
	* rtl.h: Remove convex comment.
	* varasm.c: Likewise.

From-SVN: r56272
2002-08-14 03:16:05 +00:00
Geoffrey Keating
6d9f628e05 Index: ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (sdbout.o): Doesn't need $(OBSTACK_H).
	* collect2.h (permanent_obstack): Delete declaration.
	* collect2.c (permanent_obstack): Delete definition.
	(main): Don't initialise permanent_obstack.  Use xstrdup instead.
	* expr.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* function.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* integrate.c: Don't include obstack.h.
	(function_maybepermanent_obstack): Delete declaration.
	* print-tree.c (debug_tree): Use x*alloc not permalloc.
	* sdbout.c (gen_fake_label): Use x*alloc not permalloc.
	* tlink.c (pfgets): Use xstrdup not permanent_obstack.
	* toplev.c (lang_independent_init): Rename init_obstacks to init_ttree.
	* tree.h: Rename init_obstacks to init_ttree.  Remove declarations
	of permalloc, expralloc, perm_calloc.
	* tree.c (permanent_obstack): Delete definition.
	(init_ttree): Rename from init_obstacks.
	(permalloc): Delete.
	(perm_calloc): Delete.
	(dump_tree_statistics): Don't print information about
	permanent_obstack.
	* varasm.c (assemble_start_function): Use xstrdup instead of
	permalloc/strcpy.
	(assemble_variable): Likewise.
	* config/alpha/alpha.c (unicosmk_need_dex): Use xmalloc instead of
	permalloc.
	(unicosmk_add_extern): Likewise.
	* config/c4x/c4x.c (c4x_external_ref): Likewise.
	(c4x_global_label): Likewise.
	* config/frv/frv.c (frv_encode_section_info): Likewise.
	* config/i386/winnt.c (i386_pe_record_external_function): Likewise.
	(i386_pe_record_exported_symbol): Likewise.
	* config/mips/mips.c (mips_output_external): Likewise.
	(mips_output_external_libcall): Likewise.
	* config/pa/pa.c: (permanent_obstack): Delete declaration.
	(output_call): Use ggc_strdup instead of allocating on
	permanent_obstack.
	* config/romp/romp.c: Include ggc.h.
	(get_symref): Don't declare permanent_obstack, use ggc_strdup
	intead of permanent_obstack.
	* config/rs6000/aix31.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/rs6000/rs6000.c (rs6000_gen_section_name): Use xmalloc
	instead of permalloc
	* config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/vax/vax.c (vms_check_external): Use xmalloc instead of
	permalloc.

Index: cp/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* cvt.c (ocp_convert): Delete obsolete code.
	* parse.y (permanent_obstack): Delete declaration.
	* pt.c (permanent_obstack): Delete declaration.
	* repo.c (permanent_obstack): Delete declaration.
	(open_repo_file): Use xmalloc instead of permanent_obstack.
	(init_repo): Use xstrdup instead of permanent_obstack.

Index: java/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* class.c: (permanent_obstack): Delete declaration.
	* constants.c: (permanent_obstack): Delete declaration.
	* except.c: (permanent_obstack): Delete declaration.
	* expr.c: (permanent_obstack): Delete declaration.
	* jcf-parse.c: (permanent_obstack): Delete declaration.
	(saveable_obstack): Delete declaration.
	* parse.h: (permanent_obstack): Delete declaration.
	* typeck.c: (permanent_obstack): Delete declaration.

From-SVN: r56035
2002-08-04 22:45:31 +00:00
David Edelsohn
54fbf6a1b4 varasm.c (asm_emit_uninitialized): Return false if global BSS and ASM_EMIT_BSS not supported by target.
* varasm.c (asm_emit_uninitialized): Return false if global BSS
        and ASM_EMIT_BSS not supported by target.
        (assemble_variable): Do not duplicate uninitialized logic.
        Fall through if asm_emit_uninitialized failed.

From-SVN: r55964
2002-08-01 21:12:09 -04:00
H.J. Lu
4e4d733e19 output.h (DECL_READONLY_SECTION): Remove.
* output.h (DECL_READONLY_SECTION): Remove.
        (decl_readonly_section): Declare.
        * varasm.c (decl_readonly_section): New.
        (default_section_type_flags, default_select_section): Use it.
        * config/arm/pe.c (arm_pe_unique_section): Likewise.
        * config/i386/interix.c (i386_pe_unique_section): Likewise.
        * config/i386/winnt.c (i386_pe_unique_section): Likewise.
        * config/mcore/mcore.c (mcore_unique_section): Likewise.
        * config/mips/mips.c (mips_unique_section): Likewise.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r55957
2002-08-01 16:29:55 -07:00
Jakub Jelinek
81e602b572 varasm.c (assemble_visibility): Strip name encoding.
* varasm.c (assemble_visibility): Strip name encoding.

	* gcc.dg/ia64-visibility-2.c: New test.

From-SVN: r55953
2002-08-01 23:59:36 +02:00
David Edelsohn
af673a52ec varasm.c (assemble_variable): Narrow test for uninitialized without BSS target support.
* varasm.c (assemble_variable): Narrow test for uninitialized
        without BSS target support.

From-SVN: r55843
2002-07-29 15:01:55 -04:00
Kaveh R. Ghazi
c7836bcd97 * varasm.c: Include real.h before output.h.
From-SVN: r55010
2002-06-26 15:16:01 +00:00
Jakub Jelinek
5d056e9be5 varasm.c (const_hash): Handle FDESC_EXPR like ADDR_EXPR.
* varasm.c (const_hash): Handle FDESC_EXPR like ADDR_EXPR.
	(compare_constant): Likewise.
	(output_addressed_constants): Likewise.

	* g++.dg/opt/vt1.C: New test.

From-SVN: r54459
2002-06-10 23:43:26 +02:00
Eric Christopher
b2e2d0cc3a varasm.c (make_decl_rtl): Fix comment for removed halfpic.c.
2002-06-05  Eric Christopher  <echristo@redhat.com>

	* varasm.c (make_decl_rtl): Fix comment for removed
	halfpic.c.

From-SVN: r54298
2002-06-06 03:05:37 +00:00
Jason Thorpe
a5d1f75b65 * varasm.c (mark_constants): Handle RTX format 'B'.
From-SVN: r54247
2002-06-04 16:22:49 +00:00
Geoffrey Keating
e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
Kazu Hirata
41077ce4b3 target.h: Fix formatting.
* target.h: Fix formatting.
	* timevar.h: Likewise.
	* tlink.c: Likewise.
	* toplev.c: Likewise.
	* toplev.h: Likewise.
	* tree.c: Likewise.
	* tree-dump.h: Likewise.
	* tree.h: Likewise.
	* tree-inline.h: Likewise.
	* unroll.c: Likewise.
	* unwind-dw2.c: Likewise.
	* unwind-dw2-fde.c: Likewise.
	* unwind-dw2-fde-glibc.c: Likewise.
	* unwind-dw2-fde.h: Likewise.
	* unwind.h: Likewise.
	* unwind-sjlj.c: Likewise.
	* varasm.c: Likewise.
	* varray.h: Likewise.
	* vmsdbg.h: Likewise.
	* vmsdbgout.c: Likewise.
	* xcoffout.h: Likewise.

From-SVN: r54123
2002-05-31 22:15:42 +00:00
Alan Lehotsky
afdfb380cd *** empty log message ***
From-SVN: r54108
2002-05-31 08:49:27 -04:00
Richard Henderson
923c7cdfa7 varasm.c (default_binds_local_p): Check TREE_PUBLIC before DECL_EXTERNAL.
* varasm.c (default_binds_local_p): Check TREE_PUBLIC before
        DECL_EXTERNAL.

From-SVN: r53963
2002-05-28 13:08:29 -07:00
Richard Henderson
95bfe95f01 varasm.c (asm_output_bss): Always output one byte.
* varasm.c (asm_output_bss): Always output one byte.
        * config/alpha/elf.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.

From-SVN: r53847
2002-05-24 11:30:48 -07:00
Mark Mitchell
5ff225fc29 varasm.c (make_decl_rtl): Don't allow weak variables to be placed in common.
* varasm.c (make_decl_rtl): Don't allow weak variables to be
	placed in common.

	* gcc/testsuite/gcc.dg/weak-8.c: New test.

From-SVN: r53798
2002-05-23 18:11:04 +00:00
Richard Henderson
6f001fdf2b varasm.c (default_section_type_flags): Check for VAR_DECL before using DECL_THREAD_LOCAL.
* varasm.c (default_section_type_flags): Check for VAR_DECL
        before using DECL_THREAD_LOCAL.

        * decl.c (obscure_complex_init): Check for VAR_DECL
        before using DECL_THREAD_LOCAL.

From-SVN: r53761
2002-05-22 22:14:02 -07:00
Richard Henderson
c711ba8e2e varasm.c (default_section_type_flags): Handle tls data and default sections.
* varasm.c (default_section_type_flags): Handle tls data and
        default sections.
        (default_unique_section): Handle tls sections.

From-SVN: r53753
2002-05-22 16:31:48 -07:00
Richard Henderson
3d78f2e96e c-common.h (enum rid): Add RID_THREAD.
* c-common.h (enum rid): Add RID_THREAD.
        * c-decl.c (start_decl): Do not set DECL_COMMON for tls variables.
        (grokdeclarator): Grok __thread.
        * c-parse.in (reswords): Add __thread.
        (rid_to_yy): Add RID_THREAD.
        * cp/lex.c (rid_to_yy): Add RID_THREAD.

        * tree.h (DECL_THREAD_LOCAL): New.
        (struct tree_decl): Add thread_local_flag.
        * print-tree.c (print_node): Dump DECL_THREAD_LOCAL.
        * tree.c (staticp): TLS variables are not static.

        * target-def.h (TARGET_HAVE_TLS): New.
        * target.h (have_tls): New.
        * output.h (SECTION_TLS): New.
        * varasm.c (assemble_variable): TLS variables can't be common for now.
        (default_section_type_flags): Handle .tdata and .tbss.
        (default_elf_asm_named_section): Handle SECTION_TLS.
        (categorize_decl_for_section): Handle DECL_THREAD_LOCAL.

        * flags.h (flag_tls_default): Declare.
        * toplev.c (flag_tls_default): Define.
        (display_help): Display help for it.
        (decode_f_option): Set it.

        * doc/extend.texi (Thread-Local): New node describing language-level
        thread-local storage.
        * doc/invoke.texi (-ftls-model): Document.

        * fixinc/inclhack.def (thread_keyword): New.
        * fixinc/fixincl.x: Rebuild.

From-SVN: r53715
2002-05-21 18:11:29 -07:00
Richard Henderson
121f5c2c13 * varasm.c (default_binds_local_p): Fix typo.
From-SVN: r53639
2002-05-19 13:17:50 -07:00
Richard Henderson
47754fd548 target-def.h (TARGET_BINDS_LOCAL_P): New.
* target-def.h (TARGET_BINDS_LOCAL_P): New.
	* target.h (struct gcc_target): Move boolean fields to the end.
	Add binds_local_p.
	* varasm.c (default_binds_local_p): New.
	* output.h: Declare it.

	* config/alpha/alpha.c (alpha_encode_section_info): Use the new hook.
	* config/cris/cris.c (cris_encode_section_info): Likewise.
	* config/i386/i386.c (i386_encode_section_info): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/sh/sh.c (sh_encode_section_info): Likewise.

	* doc/tm.texi (TARGET_IN_SMALL_DATA_P): New.
	(TARGET_BINDS_LOCAL_P): New.

From-SVN: r53620
2002-05-19 02:50:27 -07:00
Richard Henderson
772c526579 system.h (STRIP_NAME_ENCODING): Poison it.
* system.h (STRIP_NAME_ENCODING): Poison it.
	* output.h (STRIP_NAME_ENCODING): Remove.
	(default_strip_name_encoding): Declare.
	* target-def.h (TARGET_STRIP_NAME_ENCODING): New.
	* target.h (strip_name_encoding): New.
	* varasm.c (default_strip_name_encoding): New.

	* dwarf2asm.c, varasm.c, config/darwin.c, config/darwin.h,
	config/alpha/alpha.c, config/arm/pe.c, config/avr/avr.c,
	config/cris/cris.c, config/i386/cygwin.h, config/i386/interix.c,
	config/i386/winnt.c, config/m32r/m32r.h, config/mcore/mcore-elf.h,
	config/mcore/mcore-pe.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/mips/mips.c, config/mn10200/mn10200.h, config/mn10300/mn10300.h,
	config/pa/pa.c, config/pa/pa.h, config/pa/som.h,
	config/rs6000/rs6000.c, config/rs6000/sysv4.h, config/rs6000/xcoff.h,
	config/v850/v850.h: Use the hook, not the macro.

	* config/darwin-protos.h, config/darwin.c, config/darwin.h,
	config/alpha/alpha.c, config/alpha/alpha.h, config/h8300/h8300.c,
	config/h8300/h8300.h, config/i386/cygwin.h, config/i386/i386-interix.h,
	config/i386/i386-protos.h, config/i386/win32.h, config/i386/winnt.c,
	config/ia64/ia64.c, config/ia64/ia64.h, config/m32r/m32r.c,
	config/m32r/m32r.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/pa/pa.c, config/rs6000/rs6000.c, config/rs6000/sysv4.h,
	config/rs6000/xcoff.h, config/sh/sh.c, config/sh/sh.h,
	config/v850/v850.c, config/v850/v850.h:
	Move STRIP_NAME_ENCODING to out-of-line function and add
	TARGET_STRIP_NAME_ENCODING.

	* config/arm/arm.c, config/arm/arm.h, config/mmix/mmix-protos.h,
	config/mmix/mmix.c, config/mmix/mmix.h: Replace STRIP_NAME_ENCODING
	with TARGET_STRIP_NAME_ENCODING referencing existing function;
	make function static.

	* xcoffout.c: Include target.h
	* Makefile.in (xcoffout.o): Update.

	* config/avr/avr.c (avr_encode_section_info): Correct prototype.
	* config/avr/avr.h (STRIP_NAME_ENCODING): Remove.
	* config/rs6000/rs6000.c (rs6000_xcoff_unique_section): Mark
	reloc argument unused.
	* config/sh/sh.c (TARGET_ENCODE_SECTION_INFO): New.

	* doc/tm.texi (TARGET_STRIP_NAME_ENCODING): Update from previous
	STRIP_NAME_ENCODING docs.

From-SVN: r53615
2002-05-19 00:55:48 -07:00
Richard Henderson
fb49053ffd system.h (ENCODE_SECTION_INFO): Poison it.
* system.h (ENCODE_SECTION_INFO): Poison it.
	* target-def.h (TARGET_ENCODE_SECTION_INFO): New.
	* target.h (encode_section_info): New.
	* varasm.c (make_decl_rtl, output_constant_def): Use it.
	* hooks.c (hook_tree_int_void): New.
	* hooks.h: Declare it.

	* config/darwin.h, config/alpha/alpha-protos.h, config/alpha/alpha.c,
	config/alpha/alpha.h, config/arm/pe.h, config/avr/avr-protos.h,
	config/avr/avr.c, config/avr/avr.h, config/c4x/c4x-protos.h,
	config/c4x/c4x.c, config/c4x/c4x.h, config/cris/cris-protos.h,
	config/cris/cris.c, config/cris/cris.h, config/i386/cygwin.h,
	config/i386/win32.h, config/ia64/ia64-protos.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m32r/m32r-protos.h, config/m32r/m32r.c,
	config/m32r/m32r.h, config/m68hc11/m68hc11-protos.h,
	config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
	config/mcore/mcore-protos.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mmix/mmix-protos.h, config/mmix/mmix.c,
	config/mmix/mmix.h, config/rs6000/rs6000-protos.h,
	config/rs6000/sysv4.h, config/stormy16/stormy16-protos.h,
	config/stormy16/stormy16.c, config/stormy16/stormy16.h:
	Replace ENCODE_SECTION_INFO with TARGET_ENCODE_SECTION_INFO
	referencing existing function.  Make function static.

	* config/a29k/a29k.c, config/a29k/a29k.h, config/arc/arc.c,
	config/arc/arc.h, config/arm/arm.c, config/arm/arm.h,
	config/h8300/h8300.c, config/h8300/h8300.h, config/i370/i370.c,
	config/i370/i370.h, config/i386/i386-interix.h, config/i386/i386.c,
	config/i386/i386.h, config/i386/interix.c, config/m88k/m88k.c,
	config/m88k/m88k.h, config/mips/mips.c, config/mips/mips.h,
	config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa.c,
	config/pa/pa.h, config/romp/romp.c, config/romp/romp.h,
	config/rs6000/linux64.h, config/rs6000/xcoff.h, config/s390/s390.c,
	config/s390/s390.h, config/sh/sh.c, config/sh/sh.h,
	config/sparc/sparc.c, config/sparc/sparc.h, config/v850/v850.c,
	config/v850/v850.h, config/vax/vax.c, config/vax/vms.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h:
	Move ENCODE_SECTION_INFO to out-of-line function and add
	TARGET_ENCODE_SECTION_INFO.

	* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): Use hook, not macro.
	(ASM_DECLARE_OBJECT_NAME, ASM_OUTPUT_ALIGNED_DECL_LOCAL): Likewise.

	* config/arm/pe.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Rename
	from SUBTARGET_*
	(switch_to_section): Replace in_rdata case with in_readonly_data.

	* config/h8300/h8300.c (h8300_encode_label): Make static.
	* config/h8300/h8300-protos.h: Update.

	* config/rs6000/rs6000.c (rs6000_elf_encode_section_info): Rename
	from rs6000_encode_section_info; make static.
	(rs6000_xcoff_encode_section_info): New.

	* config/v850/v850.c (v850_encode_data_area): Make static.
	* config/v850/v850-protos.h: Update.

	* config/vax/vax.c: Include flags.h.
	(vms_select_section): Fix typo.

	* doc/tm.texi (TARGET_ENCODE_SECTION_INFO): Update from previous
	ENCODE_SECTION_INFO docs.

From-SVN: r53606
2002-05-18 22:23:27 -07:00
Richard Henderson
b64a1b533c system.h (SELECT_RTX_SECTION): Poison.
* system.h (SELECT_RTX_SECTION): Poison.
	* target-def.h (TARGET_ASM_SELECT_RTX_SECTION): New.
	* target.h (select_rtx_section): New.
	* varasm.c (output_constant_pool): Use it.
	(default_select_rtx_section, default_elf_select_rtx_section): New.
	* output.h: Declare them.

	* config/darwin.h (SELECT_RTX_SECTION): Move ...
	* config/darwin.c (machopic_select_rtx_section): ... here.
	* config/darwin-protos.h: Update.

	* config/nextstep.h (SELECT_RTX_SECTION): Move ...
	* config/nextstep.c (machopic_select_rtx_section): ... here.
	(nextstep_select_section): Rename variable to avoid macro clash.
	* config/nextstep-protos.h: Update.

	* config/elfos.h, config/svr3.h, config/arm/aof.h, config/c4x/c4x.h,
	config/i386/dgux.h, config/i386/osfrose.h, config/i386/sco5.h,
	config/i386/svr3gas.h, config/i860/paragon.h, config/ia64/aix.h,
	config/m32r/m32r.h, config/m68k/dpx2.h, config/m68k/lynx.h,
	config/m68k/m68k.h, config/m68k/tower-as.h, config/m88k/dgux.h,
	config/mcore/mcore-pe.h, config/mips/mips.h, config/mmix/mmix.h,
	config/pa/pa-linux.h, config/pa/pa.h, config/romp/romp.h,
	config/rs6000/lynx.h, config/rs6000/sysv4.h, config/s390/linux.h,
	config/sparc/sysv4.h, config/xtensa/elf.h, config/xtensa/linux.h
	(SELECT_RTX_SECTION): Remove.

	* config/darwin.h, config/elfos.h, config/nextstep.h,
	config/ia64/aix.h, config/ia64/sysv4.h, config/alpha/alpha.c,
	config/mips/mips.c, config/romp/romp.c, config/rs6000/sysv4.h,
	config/rs6000/xcoff.h, config/s390/s390.c, config/sparc/aout.h,
	config/sparc/lynx.h, config/xtensa/xtensa.c
	(TARGET_ASM_SELECT_RTX_SECTION): New.

	* config/alpha/elf.h (SELECT_RTX_SECTION): Move ...
	* config/alpha/alpha.c (alpha_elf_select_rtx_section): ... here.
	* config/ia64/sysv4.h (SELECT_RTX_SECTION): Move ...
	* config/ia64/ia64.c (ia64_select_rtx_section): ... here.
	(ia64_aix_select_rtx_section): New.
	* config/mips/iris6.h (READONLY_DATA_SECTION_ASM_OP): Undef before
	redefining.
	* config/mips/mips.c (mips_select_rtx_section): Make static.
	Support ELF SHF_MERGE features.
	* config/mips/mips-protos.h: Update.
	* config/rs6000/xcoff.h (SELECT_RTX_SECTION): Move ...
	* config/rs6000/rs6000.c (rs6000_xcoff_select_rtx_section): ... here.
	(rs6000_elf_select_rtx_section): Rename from rs6000_select_rtx_section;
	make static, fall back to default_elf_select_rtx_section.
	* config/rs6000/rs6000-protos.h: Update.
	* config/sparc/sparc.h (SELECT_RTX_SECTION): Move ...
	* config/sparc/sparc.c (sparc_aout_select_rtx_section): ... here.
	* config/sparc/sunos4.h (on_exit): Declare only if IN_LIBGCC2.
	* config/romp/romp.c (romp_select_rtx_section): New.
	* config/s390/s390.c (s390_select_rtx_section): New.
	* config/xtensa/xtensa.c: Include output.h.  Shuffle local function
	declarations before target macro definition.
	(xtensa_emit_call): Use static buffer.
	(xtensa_select_rtx_section): New.
	* config/xtensa/xtensa.h (MAX_INT_TYPE_SIZE): Remove.
	(IMPLICIT_FIX_EXPR, EASY_DIV_EXPR): Remove.
	(ASM_OUTPUT_POOL_PROLOGUE): Update call to resolve_unique_section.

	* doc/tm.texi (TARGET_ASM_SELECT_RTX_SECTION): Update from
	SELECT_RTX_SECTION docs.

From-SVN: r53600
2002-05-18 16:47:22 -07:00
Richard Henderson
d48bc59acf final.c (HAVE_READONLY_DATA_SECTION): New.
* final.c (HAVE_READONLY_DATA_SECTION): New.
	(shorten_branches): Use it instead of ifdefs.
	* varasm.c (enum in_section): Add in_readonly_data.
	(text_section, data_section): Tidy.
	(readonly_data_section): Use READONLY_DATA_SECTION_ASM_OP if present.

	* config/darwin.h, config/nextstep.h, config/h8300/elf.h,
	config/i860/paragon.h, config/m68k/dpx2.h, config/m68k/hp320.h
	(READONLY_DATA_SECTION): Don't undef.

	* config/alpha/unicosmk.h, config/h8300/elf.h, config/i386/aix386ng.h,
	config/i860/paragon.h, config/m68k/dpx2.h, config/m68k/hp320.h,
	config/rs6000/lynx.h (READONLY_DATA_SECTION_ASM_OP): Undef.

	* config/elfos.h, config/svr3.h, config/alpha/alpha-interix.h,
	config/alpha/elf.h, config/c4x/c4x.h, config/i386/i386-interix.h,
	config/i386/sco5.h, config/i386/svr3gas.h, config/i860/sysv3.h,
	config/m88k/m88k.h, config/pa/pa64-hpux.h (USE_CONST_SECTION): Remove.

	* config/elfos.h, config/netware.h, config/alpha/alpha-interix.h,
	config/alpha/elf.h, config/alpha/vms.h, config/arc/arc.h,
	config/arm/coff.h, config/c4x/c4x.h, config/dsp16xx/dsp16xx.h,
	config/i386/dgux.h, config/i386/i386-interix.h, config/i386/sco5.h,
	config/ia64/hpux.h, config/m32r/m32r.h, config/m68k/tower-as.h,
	config/m88k/m88k.h, config/mcore/mcore-pe.h, config/mips/iris6.h,
	config/mips/mips.h, config/mmix/mmix.h, config/pa/pa64-hpux.h,
	config/sparc/sysv4.h (READONLY_DATA_SECTION_ASM_OP): Rename from
	CONST_SECTION_ASM_OP/READONLY_SECTION_ASM_OP/RDATA_SECTION_ASM_OP.

	* config/elfos.h, config/netware.h, config/1750a/1750a.h,
	config/a29k/a29k.h, config/alpha/alpha-interix.h, config/alpha/alpha.h,
	config/arm/coff.h, config/h8300/h8300.h, config/i386/aix386ng.h,
	config/i386/i386-interix.h, config/i386/osfrose.h, config/mmix/mmix.h,
	config/pa/pa64-hpux.h, config/sparc/litecoff.h
	(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Remove.

	* config/elfos.h, config/netware.h, config/svr3.h,
	config/alpha/alpha-interix.h, config/alpha/alpha.h, config/alpha/elf.h,
	config/arm/coff.h, config/c4x/c4x.h, config/dsp16xx/dsp16xx.h,
	config/h8300/h8300.h, config/i386/i386-interix.h,
	config/i386/osfrose.h, config/i386/svr3gas.h, config/mmix/mmix.h,
	config/pa/pa64-hpux.h (READONLY_DATA_SECTION): Remove.

	* config/elfos.h, config/netware.h, config/svr3.h,
	config/alpha/alpha-interix.h, config/alpha/alpha.h, config/alpha/elf.h,
	config/c4x/c4x.h, config/i386/aix386ng.h, config/i386/i386-interix.h,
	config/i386/sco5.h, config/i386/svr3gas.h, config/mmix/mmix.h,
	config/pa/pa64-hpux.h (CONST_SECTION_FUNCTION): Remove.

	* config/lynx.h, config/svr3.h, config/alpha/elf.h, config/alpha/vms.h,
	config/c4x/c4x.h, config/dsp16xx/dsp16xx.h, config/i386/sco5.h,
	config/i386/svr3gas.h, config/i860/sysv3.h, config/i860/sysv4.h,
	config/ia64/sysv4.h, config/m32r/m32r.h, config/m88k/m88k.h,
	config/mcore/mcore-elf.h, config/mcore/mcore-pe.h, config/mips/elf.h,
	config/mips/elf64.h, config/mips/iris6.h, config/mips/linux.h,
	config/mips/mips.h, config/mips/rtems64.h, config/mips/vxworks.h,
	config/rs6000/sysv4.h, config/v850/v850.h
	(EXTRA_SECTIONS): Remove in_const/in_rdata.
	(EXTRA_SECTION_FUNCTIONS): Remove accompanying function.

	* config/svr3.h, config/c4x/c4x.h, config/i386/dgux.h,
	config/i386/sco5.h, config/i386/svr3gas.h, config/ia64/aix.h,
	config/m88k/dgux.h, config/mcore/mcore-pe.h, config/mmix/mmix.h,
	config/sparc/sysv4.h (SELECT_RTX_SECTION): Use readonly_data_section.
	* config/alpha/alpha.c (alpha_start_function): Likewise.
	(alpha_write_linkage): Likewise.
	* config/m32r/m32r.c (m32r_select_section): Likewise.
	* config/m88k/m88k.c (m88k_select_section): Likewise.
	* config/mips/mips.c (mips_select_rtx_section): Likewise.
	* config/rs6000/rs6000.c (rs6000_select_rtx_section): Likewise.
	(rs6000_elf_select_section): Likewise.
	* config/v850/v850.c (v850_select_section): Likewise.

	* config/1750a/1750a.h, config/i860/sysv3.h
	(READONLY_DATA_SECTION_ASM_OP): New.
	READONLY_DATA_SECTION_ASM_OP.
	* config/i386/interix.c, config/i386/winnt.c
	(i386_pe_unique_section): Always use .rdata prefix.
	* config/pa/som.h (readonly_data): Always switch to read-only section.
	(READONLY_DATA_SECTION): Predicate on flag_pic.
	* config/we32k/we32k.h (READONLY_DATA_SECTION): Remove parenthesis.
	* doc/tm.texi (READONLY_DATA_SECTION_ASM_OP): New.
	(READONLY_DATA_SECTION): Update.

From-SVN: r53593
2002-05-18 12:27:52 -07:00
Jason Merrill
2724afa4a2 fix typo
From-SVN: r53589
2002-05-18 10:54:19 -04:00
Richard Henderson
ae46c4e08a hooks.c (hook_tree_bool_false): New.
* hooks.c (hook_tree_bool_false): New.
	* hooks.h: Declare it.
	* target-def.h (TARGET_ASM_SELECT_SECTION): New.
	(TARGET_ASM_UNIQUE_SECTION, TARGET_IN_SMALL_DATA_P): New.
	* target.h (select_section, unique_section): New.
	(in_small_data_p): New.
	* varasm.c (resolve_unique_section): Use hooks instead of macros.
	(variable_section, output_constant_def_contents): Likewise.
	(default_select_section, default_unique_section): New.
	(categorize_decl_for_section, default_elf_select_section): New.
	* output.h: Declare them.

	* config/darwin.h (ALIAS_SECTION, try_section_alias): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/darwin.c (machopic_select_section): ... here.
	* config/darwin-protos.h: Update.

	* config/nextstep.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/nextstep.c (nextstep_select_section): ... here.
	* config/nextstep-protos.h: Update.

	* config/elfos.h (UNIQUE_SECTION, SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/svr3.h (SELECT_SECTION): Remove.

	* config/alpha/alpha.c (unicosmk_unique_section): Make static.
	(TARGET_ASM_UNIQUE_SECTION) [UNICOS]: New.
	(TARGET_IN_SMALL_DATA_P, alpha_in_small_data_p): New.
	(alpha_encode_section_info): Use it.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/elf.h (DO_SELECT_SECTION): Remove.
	(SELECT_SECTION, UNIQUE_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/alpha/unicosmk.h (UNIQUE_SECTION): Remove.

	* config/arm/pe.h (UNIQUE_SECTION): Remove.
	(TARGET_ASM_UNIQUE_SECTION): New.

	* config/avr/avr.c (TARGET_ASM_UNIQUE_SECTION): New.
	(avr_unique_section): Rename from unique_section; make static.
	* config/avr/avr-protos.h: Update.
	* config/avr/avr.h (UNIQUE_SECTION): Remove.

	* config/c4x/c4x.h (SELECT_SECTION): Remove.

	* config/i386/cygwin.h (UNIQUE_SECTION): Remove.
	(TARGET_ASM_UNIQUE_SECTION): New.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/win32.h: Likewise.
	* config/i386/djgpp.h (UNIQUE_SECTION): Remove.
	* config/i386/i386.c (ix86_asm_file_end): Use target hook not macro.
	* config/i386/sco5.h (SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/i386/svr3gas.h (SELECT_SECTION): Remove.

	* config/i860/paragon.h: Undef TARGET_ASM_SELECT_SECTION
	instead of SELECT_SECTION.
	* config/m68k/dpx2.h: Likewise.
	* config/rs6000/lynx.h: Likewise.

	* config/ia64/aix.h (SELECT_SECTION, UNIQUE_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): New.
	* config/ia64/ia64.c (TARGET_IN_SMALL_DATA_P): New.
	(ia64_in_small_data_p): New.
	(ia64_encode_section_info): Use it.  Reorganize overlarge conditional.
	(ia64_aix_select_section, ia64_aix_unique_section): New.
	* config/ia64/sysv4.h (DO_SELECT_SECTION): Remove.
	(SELECT_SECTION, UNIQUE_SECTION): Remove.

	* config/m32r/m32r.h (SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/m32r/m32r.c (m32r_select_section): Take align argument.
	* config/m32r/m32r-protos.h: Update.

	* config/m88k/m88k.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/m88k/m88k.c (m88k_select_section): ... here.

	* config/mcore/mcore-pe.h (SELECT_SECTION): Remove.
	* config/mcore/mcore.h (UNIQUE_SECTION): Remove.
	* config/mcore/mcore.c (TARGET_ASM_UNIQUE_SECTION): New.
	(mcore_unique_section): Make static.
	* config/mcore/mcore-protos.h: Update.

	* config/mips/elf.h (UNIQUE_SECTION): Remove.
	(TARGET_ASM_UNIQUE_SECTION): New.
	* config/mips/elf64.h: Likewise.
	* config/mips/iris6gld.h: Likewise.
	* config/mips/linux.h: Likewise.
	* config/mips/mips-protos.h: Update.
	* config/mips/mips.c (mips_select_section): Add align argument.
	* config/mips/mips.h (SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.

	* config/mmix/mmix.h (SELECT_SECTION, UNIQUE_SECTION): Remove.
	* config/mmix/mmix.c (mmix_select_section): Remove.
	(mmix_unique_section): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/pa/pa.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/pa/pa.c (pa_select_section): ... here.
	* config/pa/pa64-hpux.h (UNIQUE_SECTION): Remove.

	* config/rs6000/rs6000.c (rs6000_elf_select_section): Rename
	from rs6000_select_section and make static.
	(rs6000_elf_unique_section): Similarly.
	(rs6000_xcoff_select_section): From xcoff.h.
	(rs6000_xcoff_unique_section): Likewise.
	* config/rs6000/rs6000-protos.h: Update.
	* config/rs6000/sysv4.h (SELECT_SECTION, UNIQUE_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): New.
	* config/rs6000/xcoff.h: Likewise.

	* config/sparc/aout.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/sparc/sparc.c (sparc_aout_select_section): ... here.

	* config/v850/v850.h (SELECT_SECTION): Move ...
	* config/v850/v850.c (v850_select_section): ... here.
	(TARGET_ASM_SELECT_SECTION): New.

	* config/vax/vms.h (SELECT_SECTION): Move ...
	* config/vax/vax.c (vms_select_section): ... here.
	(TARGET_ASM_SELECT_SECTION): New.

	* doc/tm.texi: Update SELECT_SECTION and UNIQUE_SECTION docs
	for the target hooks.

From-SVN: r53550
2002-05-17 00:43:41 -07:00
Richard Henderson
34fb9ba554 varasm.c (merge_weak): Remove special case for extern and common.
* varasm.c (merge_weak): Remove special case for extern and common.

        * gcc.dg/weak-5.c (vfoo1c, vfoo1g): Warn here.

From-SVN: r53498
2002-05-15 17:14:24 -07:00
Richard Henderson
14285ace88 varasm.c (merge_weak): Error for any weakening after definition.
* varasm.c (merge_weak): Error for any weakening after definition.
        Adjust weakening after use warning to catch more cases.
        (assemble_alias): Set TREE_USED and TREE_ASM_WRITTEN consistently.
        * config/alpha/alpha.c (alpha_encode_section_info): Do not abort.

        * gcc.dg/weak-5.c (vfoo1c): No warning here.
        (vfoo1f): Warning here.
        (vfoo1l): Don't redefine the alias.

From-SVN: r53491
2002-05-15 09:50:44 -07:00
Jan Hubicka
194734e9e5 invoke.texi (-malign-double): Re-add lost warning.
* invoke.texi (-malign-double): Re-add lost warning.

	* i386-protos.h (x86_output_mi_thunk): Declare.
	* unix.h (ASM_OUTPUT_MI_THUNK): Move offline to ...
	* i386.c (x86_output_mi_thunk): ... here; handle 64bits.

	* dwarf2out.c (output_call_frame_info): Do not skip unwind info
	when flag_asynchronous_unwind_tables is set.

	* flags.h (flag_reorder_functions): Declare.
	* function.c (prepare_function_start): Initialize frequnecy.
	* params.def (HOT_BB_COUNT_FRACTION, HOT_BB_FREQUENCY_FRACTION): New paramters.
	* Makefile.in (predict.o): Add dependency on target.h and params.h
	* defaults.h (HOT_TEXT_SECTION_NAME,
	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): New macros.
	* predict.c (choose_function_section): New function.
	(estimate_bb_frequencies): Use it.
	* toplev.c (flag_reorder_functions): New global variable.
	(lang_independent_options): New.
	(parse_options_and_default_flags): Set.
	* varasm.c (assemble_start_function): Bypass functdion alignment
	for never executed functions.
	* invoke.texi (-freorder-blocks, -freorder-functions): Document.
	(param hot-bb-count-fraction, hot-bb-frequency-fraction): New.
	* tm.texi (HOT_TEXT_SECTION_NAME, UNLIKELY_EXECUTED_TEXT_SECTION_NAME):
	Document.

	Thu Jan  3 21:52:09 CET 2002  Jan Hubicka  <jh@suse.cz>

	* predict.c: Inlude profile.h
	(MIN_COUNT): Rename to MIN_COUNT_FRACTION
	(maybe_hot_bb_p, probably_cold_bb_p, probably_never_executed_bb_p):
	Use the information about maximal counter in the program.

	Thu Dec 20 22:14:00 CET 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (maybe_hot_bb_p, probably_cold_bb_p,
	probably_never_executed_bb_p): New functions.
	* cfgcleanup.c (outgoing_edges_match): Use them.
	* predict.c (MIN_COUNT, MIN_FREQUENCY): New macros.
	(maybe_hot_bb_p, probably_cold_bb_p,
	probably_never_executed_bb_p): New functions.

	* function.h (function): Add new field function_frequency.
	* predict.c (compute_function_frequency): New function.
	(estimate_probability): Call it.

From-SVN: r53478
2002-05-15 09:00:30 +00:00
Andreas Schwab
d88a8ff585 Fix typo in last change.
From-SVN: r53451
2002-05-14 08:41:39 +00:00
Andreas Schwab
1b18fc2c4e varasm.c (resolve_unique_section): Add third parameter flag_function_or_data_sections and use it instead of...
* varasm.c (resolve_unique_section): Add third parameter
	flag_function_or_data_sections and use it instead of
	flag_function_sections.
	(assemble_start_function): Pass flag_function_sections.
	(asm_emit_uninitialised): Pass flag_data_sections.
	(assemble_variable): Likewise.

From-SVN: r53449
2002-05-14 08:35:59 +00:00
Zack Weinberg
5692c7bc60 emit-rtl.c (global_rtl): Update comment.
* emit-rtl.c (global_rtl): Update comment.
	(const_double_htab, const_double_htab_hash,
	const_double_htab_hash, lookup_const_double): New.
	(const_int_htab_hash, const_int_htab_eq): Remove const
	qualifiers, which cause tons of warnings with RTL checking on.
	(gen_rtx_CONST_DOUBLE): Deleted.
	(const_double_from_real_value): New function - bears some
	resemblance to the former immed_real_const_1.
	(immed_double_const): Moved here from varasm.c and
	simplified.
	(gen_rtx_REG): Make REGNO unsigned to squelch warnings.
	(gen_rtx_SUBREG): Use gen_rtx_raw_SUBREG.
	(gen_rtx): Use immed_double_const.
	(init_emit_once): Initialize the const_double_htab.  Use
	REAL_VALUE_FROM_INT where possible.  Can now use
	CONST_DOUBLE_FROM_REAL_VALUE when setting up const_tiny_rtx.
	* varasm.c (struct varasm_status): Remove x_const_double_chain.
	(const_double_chain, immed_real_const, clear_const_double_mem): Delete.
	(immed_double_const, immed_real_const_1): Moved to emit-rtl.c.
	(init_varasm_status, mark_varasm_status): Don't touch
	x_const_double_chain.

	* output.h: Delete prototype for clear_const_double_mem.
	* real.h: Make REAL_VALUE_TYPE a macro again.  Remove leading
	'0' slot from all CONST_DOUBLE_FORMAT definitions.  Prototype
	const_double_from_real_value, not immed_real_const_1, and use
	it to define CONST_DOUBLE_FROM_REAL_VALUE.  Define new macro
	CONST_DOUBLE_ATOF.
	* rtl.h (CONST_DOUBLE_CHAIN): Kill.
	(CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH): Adjust.
	(gen_rtx_CONST_DOUBLE, immed_real_const): Delete prototypes.
	(gen_rtx_REG): Second arg is unsigned.

	* gengenrtl.c (special_rtx): Take out CONST_DOUBLE.
	(excluded_rtx): New, return true for CONST_DOUBLE.
	(genmacro): Write nothing for excluded codes.
	* combine.c (combine_simplify_rtx): Use CONST_DOUBLE_FROM_REAL_VALUE.
	* expr.c (expand_expr): Likewise.
	* ggc-common.c (ggc_mark_rtx_children_1): Don't mark the
	CONST_DOUBLE_CHAIN.
	* toplev.c (rest_of_compilation): Don't call
	clear_const_double_mem.

	* config/rs6000/rs6000.c (rs6000_float_const): Delete.
	(rs6000_hash_constant): Remove CONST_DOUBLE special case.
	(toc_hash_eq): Remove CONST_DOUBLE and LABEL_REF special cases.
	* config/rs6000/rs6000-protos.h: Don't prototype rs6000_float_const.
	* config/c4x/c4x.md, config/rs6000/rs6000.md: Use CONST_DOUBLE_ATOF.
	* config/dsp16xx/dsp16xx.md, config/mips/mips.md,
	config/pa/pa.md: Use CONST_DOUBLE_FROM_REAL_VALUE.
	* config/sparc/sparc.md, config/sparc/sparc.c: Use immed_double_const.

From-SVN: r53409
2002-05-13 04:50:20 +00:00
Mark Mitchell
f90bf7ca71 re PR target/6569 (sparc-sun-solaris2.7 C testsuite regression in compile/20011119-2.c)
PR c/6569.
	* varasm.c (mark_weak): New function.
	(merge_weak): Use it.  Do not call declare_weak.
	(declare_weak): Use merge_weak.

	PR c/6569
	* gcc.dg/weak-3.c: Update location of warning messages.
	* gcc.dg/weak-5.c: Likewise.

From-SVN: r53293
2002-05-08 14:37:55 +00:00
Kazu Hirata
c26fbbca7a dwarf2out.c: Fix formatting.
* dwarf2out.c: Fix formatting.
	* varasm.c: Likewise.

From-SVN: r53160
2002-05-04 14:54:13 +00:00
Franz Sirl
a81eed1000 re PR bootstrap/6514 (3.1 irix6.5 bootstrap failure in libstdc++-v3/src/misc-inst.cc)
2002-05-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR bootstrap/6514
	* varasm.c (globalize_decl): Compare DECL_ASSEMBLER_NAME to check
	for duplicates. Always loop over whole list.

From-SVN: r53006
2002-05-01 17:56:56 +00:00
Hans-Peter Nilsson
ec493bcb3a varasm.c (output_constant_def): Correct test for not calling ENCODE_SECTION_INFO for INTEGER_CST.
* varasm.c (output_constant_def): Correct test for not calling
	ENCODE_SECTION_INFO for INTEGER_CST.

From-SVN: r52870
2002-04-29 03:57:30 +00:00
Franz Sirl
45806a3fd4 re PR c/6343 (attribute((weak)) not working on second declaration)
2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR c/6343
	* c-decl.c (duplicate_decls): Call merge_weak.
	* c-pragma.c (apply_pragma_weak): Warn about misuse.
	* output.h (merge_weak): Prototype merge_weak.
	* varasm.c (merge_weak): New function.
	(declare_weak): Make sure we don't give an error on VAR_DECLs.
	Mark RTL with SYMBOL_REF_WEAK.

cp:
	* decl.c (duplicate_decls): Call merge_weak.

testsuite:
	* gcc.dg/weak-[2-7].c: New tests.

From-SVN: r52844
2002-04-28 18:31:34 +00:00
Neil Booth
b0c4822985 Makefile.in (convert.o, [...]): Update.
* Makefile.in (convert.o, calls.o, expmed.o): Update.
	* attribs.c (handle_mode_attribute, handle_vector_size_attribute):
	Use new hooks.
	* builtin-types.def (BT_PTRMODE): Update.
	* c-common.c (type_for_size): Rename c_common_type_for_size.
	(type_for_mode): Similarly.
	(shorten_compare, pointer_int_sum, c_common_nodes_and_builtins):
	Use new hook.
	* c-bommon.h (c_common_type_for_size, c_common_type_for_mode): New.
	* c-decl.c (finish_enum, build_enumerator): Use new hooks.
	* c-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* c-typeck.c (common_type, comptypes, default_conversion):
	Use new hooks.
	* calls.c: Include langhooks.h.
	(emit_library_call_value_1): Use new hooks.  Avoid redundant
	calls.
	* convert.c: Include langhooks.h
	(convert_to_pointer, convert_to_integer): Use new hooks.
	* except.c (init_eh): Similarly.
	* expmed.c: Include langhooks.h.
	(expand_mult_add): Use new hooks.
	* expr.c (store_expr, store_constructor, expand_expr, do_jump,
	try_casesi): Similarly.
	* fold-const.c (optimize_bit_field_compare, make_range,
	decode_field_reference, fold_truthop, fold): Similarly.
	* function.c (assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack): Similarly.
	* langhooks-def.h (LANG_HOOKS_TYPE_FOR_MODE,
	LANG_HOOKS_TYPE_FOR_SIZE): New.
	(LANG_HOOKS_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): New hooks.
	* stmt.c (expand_decl_cleanup, emit_case_nodes): Use new hooks.
	* tree.c (get_unwidened, get_narrower): Similarly.
	* tree.h (type_for_mode, type_for_size): Remove.
	* varasm.c (force_const_mem): Use new hooks.
ada:
	* gigi.h (type_for_size, type_for_mode): Rename.
	* misc.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* trans.c (tree_transform): Update.
	* utils.c (gnat_init_decl_processing, init_gigi_decls,
	builtin_function, float_type_for_size, signed_or_unsigned_type,
	build_vms_descriptor, unchecked_convert): Update.
	(type_for_mode, type_for_size): Rename.
	* utils2.c (nonbinary_modular_operation): Update.
cp:
	* cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
	* decl.c (finish_enum): Similarly.
	* error.c (dump_type): Similarly.
	* lex.c (cxx_init): Similarly.
	* mangle.c (write_builtin_type): Similarly.
	* typeck.c (comptypes): Similarly.
f:
	* com.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	(type_for_mode, type_for_size): Rename.
	(signed_or_unsigned_type, signed_type, truthvalue_conversion,
	unsigned_type):	Use new hooks.
java:
	* Make-lang.in (builtins.o): Update.
	* boehm.c (get_boehm_type_descriptor): Update.
	* builtins.c: Include langhooks.h.
	* decl.c (java_init_decl_processing): Update.
	* java-tree.h (java_type_for_mode, java_type_for_size): New.
	* lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.
	* typeck.c (type_for_mode, type_for_size): Update.
objc:
	* objc-act.c (handle_impent): Update.
	* objc-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.

From-SVN: r51571
2002-03-29 21:46:27 +00:00
Richard Henderson
1bd6476f2e varasm.c (asm_emit_uninitialised): Revert 2002-03-14 change.
* varasm.c (asm_emit_uninitialised): Revert 2002-03-14 change.
        Do resolve_unique_section before shared data clause.

        * gcc.dg/weak-1.c: Use -fno-common.

From-SVN: r51289
2002-03-24 16:44:36 -08:00
Zack Weinberg
b216cd4ae3 real.h: Don't define REAL_INFINITY or REAL_IS_NOT_DOUBLE.
* real.h: Don't define REAL_INFINITY or REAL_IS_NOT_DOUBLE.
	Always make REAL_VALUE_TYPE a struct containing an array of
	HOST_WIDE_INT, not a double.  Tidy up the code deciding how
	big it is.  Don't declare or use union real_extract.

	* emit-rtl.c (init_emit_once), varasm.c (immed_real_const_1,
	decode_rtx_const, output_constant_pool), config/a29k/a29k.c
	(print_operand), config/arm/arm.c (output_move_double),
	config/arm/arm.md (consttable_4, consttable_8),
	config/romp/romp.c (output_fpops), config/s390/s390.h
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY), config/xtensa/xtensa.c
	(xtensa_output_literal): Don't use union real_extract.

	* config/dsp16xx/dsp16xx.c (print_operand), config/i860/i860.c
	(sfmode_constant_to_ulong), config/ns32k/merlin.h
	(PRINT_OPERAND), config/ns32k/ns32k.c (print_operand),
	config/pdp11/pdp11.h (PRINT_OPERAND), config/we32k/we32k.h
	(PRINT_OPERAND): Don't use local version of union
	real_extract.

	* config/convex/convex.c (check_float_value), config/vax/vax.c
	(vax_float_literal), config/m88k/m88k.md (divdf3),
	config/dsp16xx/dsp16xx.md (fixuns_trunchfhi2),
	config/pdp11/pdp11.c (output_move_quad): Don't do host
	arithmetic on target floating point quantities.

	* config/a29k/a29k.md, config/dsp16xx/dsp16xx.c
	(output_dsp16xx_float_const): Don't test HOST_FLOAT_FORMAT.

	* fold-const.c (fold), simplify-rtx.c (simplify_binary_real):
	Use MODE_HAS_INFINITIES rather than #ifdef REAL_INFINITY.

	* real.c (earith): Test INFINITY rather than REAL_INFINITY;
	NANS implies INFINITY, so can drop #ifdef NANS inside #ifndef
	INFINITY.
	* print-rtl.c (print_rtx): Disable code which needs
	floating-point emulator.
	* libgcc2.c: Include float.h and use DBL_MANT_DIG,
	FLT_MANT_DIG, to define DF_SIZE and SF_SIZE, rather than
	depending on HOST_FLOAT_FORMAT to be defined properly.

	* ch/grant.c, cp/error.c: Always use REAL_VALUE_TO_DECIMAL;
	don't test REAL_IS_NOT_DOUBLE.

	* config/1750a/1750a.c (get_double, float_label): Delete.
	(print_operand): Delete huge commented-out chunk.  Use
	REAL_VALUE_TO_DECIMAL.
	* config/1750a/1750a-protos.h: Delete prototypes of deleted
	functions.
	* config/convex/convex.h: Always set TARGET_FLOAT_FORMAT to
	IEEE_FLOAT_FORMAT.
	* config/i370/i370.h (PRINT_OPERAND [TARGET_HLASM version]):
	Use REAL_VALUE_TO_DECIMAL as ELF version does.
	* config/m88k/m88k.c (real_power_of_2_operand,
	legitimize_operand): Take the REAL_VALUE_TYPE and/or union
	real_extract out of the union; run the input through
	REAL_VALUE_TO_TARGET_DOUBLE, then plug the pair of longwords
	from that into the union.
	* config/pdp11/pdp11.c (output_move_double): Rearrange
	parentheses to make automatic indenter happy.

	* doc/tm.texi (Cross-compilation): Rename node to "Floating
	Point" and rewrite to describe current situation.  Also adjust
	documentation of REAL_VALUE_TO_TARGET_SINGLE and friends to
	match code.
	* doc/rtl.texi: Adjust cross reference.

From-SVN: r51210
2002-03-23 01:10:56 +00:00
Richard Henderson
02a7a3fda1 * varasm.c (output_constant_def): Fix stupid typo.
From-SVN: r51059
2002-03-19 18:12:18 -08:00
Olivier Hainque
ed4fbfa016 varasm.c (output_constant_def): Don't call ENCODE_SECTION_INFO for INTEGER_CST.
* varasm.c (output_constant_def): Don't call ENCODE_SECTION_INFO
	for INTEGER_CST.

From-SVN: r51052
2002-03-19 17:51:04 -05:00
Jason Merrill
f9d09ae5bb varasm.c (globalize_decl): Get the name from the RTL, not DECL_ASSEMBLER_NAME.
* varasm.c (globalize_decl): Get the name from the RTL, not
        DECL_ASSEMBLER_NAME.

From-SVN: r51043
2002-03-19 16:38:43 -05:00
Jason Merrill
1540944868 varasm.c (assemble_variable): Call resolve_unique_section before checking DECL_SECTION_NAME.
* varasm.c (assemble_variable): Call resolve_unique_section before
        checking DECL_SECTION_NAME.  Use zeros for a decl with DECL_INITIAL
        of error_mark_node.

From-SVN: r50824
2002-03-15 13:44:14 -05:00
Richard Henderson
ecb0eecefb c-decl.c: Include c-pragma.h.
* c-decl.c: Include c-pragma.h.
        (start_decl, start_function): Invoke maybe_apply_pragma_weak.
        (finish_function): Tidy.
        * c-pragma.c: Include c-common.h.
        (pending_weaks, apply_pragma_weak, maybe_apply_pragma_weak): New.
        (handle_pragma_weak): Use them.
        (init_pragma): Register pending_weaks.
        * c-pragma.h (maybe_apply_pragma_weak): Declare.
        * print-tree.c (print_node): Print DECL_WEAK.
        * varasm.c (mark_weak_decls): Remove.
        (remove_from_pending_weak_list): Remove.
        (add_weak): Remove.
        (asm_emit_uninitialised): Call globalize_decl for weak commons.
        (weak_decls): Make a tree_list.
        (declare_weak): Cons weak_decls directly.
        (globalize_decl): Remove weak_decls elements directly.
        (weak_finish): Simplify weak_decls walk.  Don't weaken unused
        symbols.  Don't pretend to handle aliases.
        (init_varasm_once): Update weak_decls registry.
	* Makefile.in: Update dependencies.

        * cp/decl.c: Include c-pragma.h.
        (start_decl, start_function): Invoke maybe_apply_pragma_weak.
	* cp/Make-lang.in: Update dependencies.

	* gcc.dg/weak-1.c: New.

From-SVN: r50797
2002-03-14 23:11:14 -08:00
Jason Merrill
19c5b1cf0d varasm.c (globalize_decl): New fn.
* varasm.c (globalize_decl): New fn.
        (assemble_start_function): Use it.
        (asm_emit_uninitialized): Use it.
        (assemble_alias): Use it.
        (assemble_variable): Use it.

From-SVN: r50736
2002-03-13 09:20:17 -05:00
Richard Henderson
b14707c32c attribs.c (handle_alias_attribute): Don't call assemble_alias.
* attribs.c (handle_alias_attribute): Don't call assemble_alias.
        (handle_visibility_attribute): Don't call assemble_visibility.
        * toplev.c (rest_of_decl_compilation): Invoke make_decl_rtl even
        without asmspec.  Invoke assemble_alias when needed.
        * varasm.c (maybe_assemble_visibility): New.
        (assemble_start_function, assemble_variable, assemble_alias): Use it.

From-SVN: r50237
2002-03-02 20:50:53 -08:00
Richard Henderson
b20032503b varasm.c (make_decl_rtl): Remove call to REDO_SECTION_INFO_P; invoke ENCODE_SECTION_INFO with first call flag.
* varasm.c (make_decl_rtl): Remove call to REDO_SECTION_INFO_P;
	invoke ENCODE_SECTION_INFO with first call flag.

	* config/darwin-protos.h, config/darwin.c, config/darwin.h,
	config/a29k/a29k.h, config/alpha/alpha-protos.h, config/alpha/alpha.c,
	config/alpha/alpha.h, config/arc/arc.h, config/arm/arm-protos.h,
	config/arm/arm.h, config/arm/pe.c, config/arm/pe.h,
	config/avr/avr-protos.h, config/avr/avr.c, config/avr/avr.h,
	config/c4x/c4x-protos.h, config/c4x/c4x.c, config/c4x/c4x.h,
	config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.h,
	config/d30v/d30v.h, config/h8300/h8300.h, config/i370/i370.h,
	config/i386/cygwin.h, config/i386/i386-interix.h, config/i386/i386.h,
	config/i386/osfrose.h, config/i386/win32.h, config/i386/winnt.c,
	config/ia64/ia64-protos.h, config/ia64/ia64.c, config/ia64/ia64.h,
	config/m32r/m32r-protos.h, config/m32r/m32r.c, config/m32r/m32r.h,
	config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.h, config/m88k/m88k.h,
	config/mcore/mcore-protos.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mips/mips.h, config/ns32k/ns32k.h,
	config/pa/pa.h, config/romp/romp.h, config/rs6000/linux64.h,
	config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
	config/rs6000/sysv4.h, config/rs6000/xcoff.h, config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h,
	config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vms.h,
	config/xtensa/xtensa.h, doc/tm.texi: ENCODE_SECTION_INFO now takes
	FIRST argument.  As needed, examine it and do nothing.

	* config/darwin.h, config/alpha/alpha.h, config/arm/pe.h,
	config/i386/cygwin.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h,
	config/mcore/mcore.h: Remove REDO_SECTION_INFO_P.

	* config/arm/t-pe (pe.o): Add dependencies.

From-SVN: r50236
2002-03-02 20:23:21 -08:00
Kaveh R. Ghazi
27b41650c1 Makefile.in (CRTSTUFF_CFLAGS): Add -fno-zero-initialized-in-bss.
* Makefile.in (CRTSTUFF_CFLAGS): Add -fno-zero-initialized-in-bss.
	* doc/invoke.texi (-fno-zero-initialized-in-bss): Document.
	* flags.h (flag_zero_initialized_in_bss): Declare.
	* toplev.c (flag_zero_initialized_in_bss): New flag.
	(lang_independent_options): Add flag_zero_initialized_in_bss.
	* tree.c (initializer_zerop): New function.
	* tree.h (initializer_zerop): Declare.
	* varasm.c (assemble_variable): If we can emit bss, put zero
	initializers in the bss section.

From-SVN: r50218
2002-03-02 03:52:17 +00:00
Alan Modra
79c4e63fcb tm.texi (ASM_WEAKEN_DECL): Document.
* doc/tm.texi (ASM_WEAKEN_DECL): Document.
	(ASM_WEAKEN_LABEL): Mention ASM_WEAKEN_DECL.
	(SUPPORTS_WEAK): Likewise.
	* output.h (add_weak): Add tree param.
	* varasm.c (add_weak): Likewise.  Save decl.
	(struct weak_syms): Add decl field.
	(mark_weak_decls): New function.
	(init_varasm_once): ggc_add_root mark_weak_decls.
	(assemble_start_function): Use ASM_WEAKEN_DECL.
	(assemble_variable): Likewise.
	(assemble_alias): Likewise.
	(declare_weak): Pass decl to add_weak.
	(weak_finish): Use ASM_WEAKEN_DECL. Try to find decl.
	(remove_from_pending_weak_list): Declare and define for
	ASM_WEAKEN_DECL.
	* c-pragma.c (handle_pragma_weak): Adjust add_weak call.
	* c-pragma.h (HANDLE_PRAGMA_WEAK): Define if ASM_WEAKEN_DECL too.
	* defaults.h (SUPPORTS_WEAK): Likewise.
	* config/rs6000/linux64.h (ASM_DECLARE_FUNCTION_NAME): Don't emit
	.weak for code sym.  Do emit .size for descriptor sym.
	(ASM_DECLARE_FUNCTION_SIZE): Define.
	* config/rs6000/rs6000.h (ASM_WEAKEN_DECL): Define.
	(ASM_OUTPUT_DEF_FROM_DECLS): Don't emit .weak here.  Don't output
	.lglobl unless TARGET_XCOFF.  Formatting fixes.
	* config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Don't emit
	.weak for code sym.
	(HANDLE_PRAGMA_WEAK): Remove.
	(ASM_WEAKEN_LABEL): Remove.
	* config/rs6000/aix.h (HANDLE_SYSV_PRAGMA): Define.

Co-Authored-By: David Edelsohn <edelsohn@gnu.org>

From-SVN: r50181
2002-03-01 16:30:38 +10:30
Jakub Jelinek
47bd70b56a attribs.c (c_common_attribute_table): Add visibility.
* attribs.c (c_common_attribute_table): Add visibility.
	(handle_visibility_attribute): New function.
	* varasm.c (assemble_visibility): New function.
	* output.h (assemble_visibility): Add prototype.
	* tree.h (MODULE_LOCAL_P): Define.
	* crtstuff.c (__dso_handle): Use visibility attribute.
	* config/i386/i386.h (ENCODE_SECTION_INFO): Set SYMBOL_REF_FLAG
	for MODULE_LOCAL_P symbols too.
	* config/ia64/ia64.c (ia64_encode_section_info): Handle
	MODULE_LOCAL_P symbols the same way as local symbols.
	Add SDATA_NAME_FLAG_CHAR even if decl was explicitely forced
	into .sdata/.sbss by the user.
	* doc/extend.texi (Function Attributes): Document visibility
	attribute.

	* gcc.dg/ia64-visibility-1.c: New test.

From-SVN: r50061
2002-02-26 22:17:22 +01:00
Jakub Jelinek
149d6f9edd re PR debug/4461 (Invalid dawrf2 debug code)
PR debug/4461
	* varasm.c (get_pool_constant_mark): New.
	* rtl.h (get_pool_constant_mark): Add prototype.
	* dwarf2out.c (mem_loc_descriptor): A pool constant cannot
	be represented if it has not been output.

	* gcc.dg/debug/20020220-1.c: New test.

From-SVN: r49921
2002-02-21 00:19:24 +01:00
Aldy Hernandez
69ef87e2bc i386.md ("mmx_uavgv8qi3"): Use const_vector.
2002-02-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/i386/i386.md ("mmx_uavgv8qi3"): Use const_vector.
	("mmx_uavgv4hi3"): Same.
	("pmulhrwv4hi3"): Same.

	* tree-inline.c (walk_tree): Handle vectors.

	* c-common.c (constant_expression_warning): Handle vectors.
	(overflow_warning): Same.

	* sched-deps.c (sched_analyze_2): Handle vectors.

	* rtlanal.c (rtx_unstable_p): Handle vectors.
	(rtx_varies_p): Same.
	(count_occurrences): Same.
	(regs_set_between_p): Same.
	(modified_between_p): Same.
	(modified_in_p): Same.
	(volatile_insn_p): Same.
	(volatile_refs_p): Same.
	(side_effects_p): Same.
	(may_trap_p): Same.
	(inequality_comparisons_p): Same.
	(replace_regs): Same.
	(computed_jump_p_1): Same.

	* rtl.c (DEF_MACHMODE): Change all definitions to accept 8th
	argument.
	(inner_mode_array): New.
	(copy_rtx): Handle vectors.
	(copy_most_rtx): Same.
	(rtx_equal_p): Same.
	(get_mode_alignment): Adjust for vectors.

	* resource.c (mark_referenced_resources): Handle vectors.
	(mark_set_resources): Same.

	* reload1.c (eliminate_regs): Handle vectors.
	(elimination_effects): Same.
	(scan_paradoxical_subregs): Same.

	* reload.c (subst_reg_equivs): Handle vectors.

	* regrename.c (scan_rtx): Handle vectors.

	* regclass.c (reg_scan_mark_refs): Handle vectors.

	* recog.c (find_single_use_1): Handle vectors.

	* local-alloc.c (equiv_init_varies_p): Handle vectors.
	(contains_replace_regs): Same.
	(memref_referenced_p): Same.

	* integrate.c (copy_rtx_and_substitute): Handle vectors.
	(subst_constants): Same.

	* genattrtab.c (attr_copy_rtx): Handle vectors.
	(encode_units_mask): Same.
	(clear_struct_flag): Same.
	(count_sub_rtxs): Same.

	* gcse.c (want_to_gcse_p): Handle vectors.
	(oprs_unchanged_p): Same.
	(hash_expr_1): Same.
	(oprs_not_set_p): Same.
	(expr_killed_p): Same.
	(compute_transp): Same.
	(store_ops_ok): Same.

	* function.c (purge_addressof_1): Do not allow paradoxical subregs
	of vectors.
	(fixup_var_refs_1): Same.
	(instantiate_virtual_regs_1): Same.

	* fold-const.c (operand_equal_p): Handle vectors.
	(fold): Same.
	(rtl_expr_nonnegative_p): Same.

	* flow.c (mark_used_regs): Handle vectors.

	* df.c (df_uses_record): Handle vectors.

	* cselib.c (cselib_subst_to_values): Handle vectors.
	(cselib_mem_conflict_p): Same.
	(hash_rtx): Same.

	* cse.c (canon_reg): Handle vectors.
	(fold_rt): Same.
	(cse_process_notes): Same.
	(count_reg_usage): Same.
	(canon_hash): Same.

	* alias.c (nonlocal_mentioned_p): Add case for CONST_VECTOR.

	* combine.c (mark_used_regs_combine): Add case for CONST_VECTOR.

	* emit-rtl.c (init_emit_once): Generate const0_rtx for vectors.
	(gen_rtx): Handle CONST_VECTOR.
	(gen_const_vector_0): New.
	(copy_rtx_if_shared): CONST_VECTORs can be shared.
	(reset_used_flags): Same.
	(copy_insn_1): Same.
	(initializer_constant_valid_p): Handle VECTOR_CST.

	* doc/c-tree.texi (Expression trees): Document VECTOR_CST.

	* doc/rtl.texi (Constants): Document const_vector.
	(CONST0_RTX): Update for vectors.
	(RTL sharing): Same.

	* print-tree.c (print_node): Add case for VECTOR_CST.

	* tree.h (TREE_VECTOR_CST_ELTS): New.
	(struct tree_vector): New.
	(union tree_node): Add vector node.
	(build_vector): Add prototype.

	* tree.def (VECTOR_CST): New.

	* tree.c (build_vector): New.

	* expmed.c (make_tree): Handle CONST_VECTOR.

	* rtl.h (CONSTANT_P): CONST_VECTORs are constants too.
	(CONST_VECTOR_ELT): New.
	(CONST_VECTOR_NUNITS): New.

	* machmode.h (GET_MODE_INNER): New.
	(DEF_MACHMODE): Accept 8th arg.

	* machmode.def: Add 8th argument for vector inner mode.
	Add inner vector modes for vectors.

	* rtl.def (VEC_CONST): Remove.
	(CONST_VECTOR): New.

	* expr.c (clear_storage): Allow vectors.
	(is_zeros_p): Handle VECTOR_CST.

	* varasm.c (output_constant_pool): Handle vectors.
	(rtx_const): Add veclo and vechi fields.
	(kind): Add RTX_VECTOR.
	(decode_rtx_const): Add case for vector.

	* config/rs6000/rs6000-protos.h: Add zero_constant.

	* config/rs6000/rs6000.c (rs6000_emit_move): Handle vector
	constants.  Force easy vector constants into memory.
	(easy_vector_constant): New.
	(emit_easy_vector_constant): New.
	(rs6000_legitimize_reload_address): Do not generate bad reloads on
	darwin.

	* config/rs6000/rs6000.md ("altivec_lvx"): Reflect what
	instruction does.
	("altivec_lvxl"): Same.
	(altivec_lvebx): Same.
	(altivec_lvehx): Same.
	(altivec_lvewx): Same.
	("*movv4si_const0"): New.
	("*movv4sf_const0"): New.
	("*movv8hi_const0"): New.
	("*movv16qi_const0"): New.

From-SVN: r49853
2002-02-19 02:53:41 +00:00
Stan Shebs
e6834654ca c-typeck.c (digest_init): Handle vectors.
* c-typeck.c (digest_init): Handle vectors.
        (really_start_incremental_init): Same.
        (pop_init_level): Same.
        (process_init_element): Same.

        * varasm.c (output_constant): Same.

        * expr.c (clear_storage): Same.
        (store_constructor): Same.

        * gcc.dg/altivec-3.c: New.

From-SVN: r49715
2002-02-12 22:26:12 +00:00