Commit Graph

756 Commits

Author SHA1 Message Date
Jakub Jelinek
6d3e3e6aa9 re PR other/4372 (#pragma weak pthread* inclusion causes applications to crash without a linker error when one forgets to link with -lpthread)
PR other/4372
	* varasm.c (assemble_alias): Use %q+D in the error
	message instead of %J and %qD.

From-SVN: r106735
2005-11-10 14:14:05 +01:00
Alexandre Oliva
a0203ca711 re PR other/4372 (#pragma weak pthread* inclusion causes applications to crash without a linker error when one forgets to link with -lpthread)
PR other/4372
* tree.h (IDENTIFIER_TRANSPARENT_ALIAS): New.
(TREE_DEPRECATED): Adjust comment.  Check for a DECL.
* c-common.c (handle_weakref_attribute): New.
(c_common_attribute_table): Add weakref.
* configure.ac (HAVE_GAS_WEAKREF): Check for weakref support
in the assembler.
* configure, config.in: Rebuilt.
* defaults.h (ASM_OUTPUT_WEAKREF): Define if HAVE_GAS_WEAKREF.
* doc/extend.texi: Document weakref attribute.
* varasm.c (ultimate_transparent_alias_target): New
(assemble_name): Use it.
(weak_finish_1): Split out of...
(weak_finish): ... and deal with weakrefs in...
(weakref_targets): ... new list.
(globalize_decl): Clean up weakref_targets.
(do_assemble_alias): Handle weakrefs.
(finish_aliases_1): Do not reject weakrefs to external symbols.
(assemble_alias): Handle weakrefs.

From-SVN: r106703
2005-11-09 20:13:41 +00:00
Eric Botcazou
43f237b43f re PR rtl-optimization/24460 (Profiled bootstrap broken)
PR rtl-optimization/24460
	* dwarf2out.c (have_switched_text_sections): New boolean variable.
	(dwarf2out_switch_text_section): Set it to true instead of
	incrementing separate_line_info_table_in_use.
	(output_loc_list): Additionally test have_switched_text_sections.
	(output_ranges): Likewise.
	(dwarf2out_finish): Likewise.
	* varasm.c (assemble_start_function): Do not call
	insert_section_boundary_note.
	(assemble_end_function): If flag_reorder_blocks_and_partition,
	switch to the function's section before emitting the .size directive.
	* bb-reorder.c (insert_section_boundary_note): Staticify.
	(rest_of_handle_reorder_blocks): Call insert_section_boundary_note.
	* output.h (insert_section_boundary_note): Delete.

Co-Authored-By: Caroline Tice <ctice@apple.com>

From-SVN: r105916
2005-10-26 07:03:30 +00:00
Alexandre Oliva
cdcba1ea35 re PR middle-end/24295 (Xorg broken, #pragma weak foo = bar no longer causes bar to be referenced)
gcc/ChangeLog:
PR middle-end/24295
* cgraphunit.c (cgraph_varpool_remove_unreferenced_decls): Mark
alias targets.
* varasm.c (find_decl_and_mark_needed): After cgraph global info
is ready, stop marking functions, but still mark variables.
gcc/testsuite/ChangeLog:
PR middle-end/24295
* g++.old-deja/g++.abi/vtable2.C: Do not introduce external
declarations with the same names as thunks' alias targets, use
aliases instead.
* gcc.dg/attr-alias-3.c: New test.
* gcc.dg/weak/weak-14.c, gcc.dg/weak/weak-14a.c: New test.

From-SVN: r105688
2005-10-20 19:30:23 +00:00
Danny Smith
43d9ad1dbd re PR target/21275 (gcc 4.0.0 crash with mingw when using stdout in global var)
PR middle-end/21275
	PR middle-end/21766
	* target.h (struct gcc_target): Add valid_dllimport_attribute_p
	target hook.
	(struct cxx): Add adjust_class_at_definition target hook.
	* target-def.h: (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): New define,
	defaulting to hook_bool_tree_true. Add to TARGET_INITIALIZER
	(TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): New define, defaulting to
	hook_void_tree. Add to TARGET_CXX.
	* tree.h (struct decl_with_vis): Rename non_addr_const_p field to
	dllimport_flag.
	(DECL_NON_ADDR_CONSTANT_P): Replace with DECL_DLLIMPORT_P macro.
	* tree.c (merge_dllimport_decl_attributes): Check DECL_DLLIMPORT_P
	instead of attribute. Check for dllexport override.  Warn if
	inconsistent dll linkage. Don't lose old dllimport if decl has
	had address referenced.   Tweak lookup of dllimport atribute.
	(handle_dll_attribute): Check targetm.valid_dllimport_attribute_p
	for target specific rules.  Don't add dllimport attribute if
	DECL_DECLARED_INLINE_P.  Set DECL_DLLIMPORT_P when adding
	dllimport attribute.
	(staticp): Replace DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P.
	* varasm.c (initializer_constant_valid_p): Replace
	DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P

	PR target/21801
	PR target/23589
	* config.gcc (i[34567]86-*-cygwin*): Add winnt-cxx.o to
	'cxx_target_objs', winnt-stubs,o to 'extra_objs'.
	(i[34567]86-*-mingw32*): Likewise.

	* doc/tm.texi (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Document.
	(TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Document.

	* config/i386/winnt.c (i386_pe_dllimport_p): Factor out
	C++-specific code. Change return value to bool.
	(i386_pe_dllimport_p): Likewise.
	(associated_type): Simplify and make language-independent
	(i386_pe_encode_section_info): Replace override of ambiguous
	dllimport symbol refs with a gcc_assert.
	(i386_pe_valid_dllimport_attribute_p): Define.
	* config/i386/winnt-cxx.c: New file. Define C++ versions of
	i386_pe_type_dllimport_p, i386_pe_type_dllexport_p,
	i386_pe_adjust_class_at_definition.
	* config/i386/winnt-stubs.c: New file. Define stub versions of
	lang-specific functions.
	* config/i386/i386-protos.h: Declare winnt-[cxx|stubs].c functions
	i386_pe_type_dllimport_p, i386_pe_type_dllexport_p,
	i386_pe_adjust_class_at_definition.
	(i386_pe_valid_dllimport_attribute_p): Declare.
	* config/i386/cygming.h (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Define.
	(TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Define.
	* config/i386/t-cygming: Add rules for winnt-cxx.o, winnt-stubs.o.

	PR target/19704
	* config/i386/i386.c (ix86_function_ok_for_sibcall): Replace test for
	dllimport attribute with test of DECL_DLLIMPORT_P.


cp
	PR target/21801
	PR target/23589
	* class.c (finish_struct_1): Call
	targetm.cxx.adjust_class_at_definition.


testsuite
	* gcc.dg/dll-2.c: Add tests for warnings.
	* gcc.dg/dll-3.c: Likewise.
	* gcc.dg/dll-4.c: Likewise.

	* g++.dg/ext/dllimport1.C: Adjust tests for warnings.
	* g++.dg/ext/dllimport2.C: Likewise.
	* g++.dg/ext/dllimport3.C: Likewise.
	* g++.dg/ext/dllimport7.C: Likewise.
	* g++.dg/ext/dllimport8.C: Likewise.
	* g++.dg/ext/dllimport9.C: Likewise.

From-SVN: r105332
2005-10-12 20:54:50 +00:00
Richard Guenther
e2953e417a re PR c++/23799 (ICE: no-op convert from 8 to 4 bytes in initializer)
2005-10-12  Richard Guenther  <rguenther@suse.de>

	PR c++/23799
	* varasm.c (output_constant): Correct typo from previous
	patch by DJ.

From-SVN: r105290
2005-10-12 08:55:59 +00:00
DJ Delorie
3eb0d7c515 varasm.c (output_constant): Limit error to expanding conversions.
* varasm.c (output_constant): Limit error to expanding
conversions.

From-SVN: r105099
2005-10-07 14:44:26 -04:00
Andrew Pinski
11e3f4b6f7 re PR middle-end/23125 (OpenBSD's zic.c causes g++ but not gcc to segfault)
2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/23125
        * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
        instead of change_decl_assembler_name.
2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/23125
        * c-decl.c (finish_decl): Use set_user_assembler_name even for
        register variables.
        * varasm.c (make_decl_rtl): If a register variable does not
        have a set user assmbler name, error out.
        Decode the asmspec is now name+1 bypassing '*'.
2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/23125
        * gcc.dg/register-var-3.c: New test.

From-SVN: r104942
2005-10-04 06:39:17 -07:00
Eric Botcazou
f7952e0ac2 varasm.c (output_constant): Do not abort on conversions to union types between different sizes.
* varasm.c (output_constant): Do not abort on conversions to union
	types between different sizes.

From-SVN: r104404
2005-09-18 17:11:11 +00:00
Eric Botcazou
69fcfd68ce varasm.c (output_constant): Do not abort on VIEW_CONVERT_EXPRs between different sizes.
* varasm.c (output_constant): Do not abort on VIEW_CONVERT_EXPRs
	between different sizes.

From-SVN: r104368
2005-09-17 08:30:23 +00:00
Kazu Hirata
57b51d4d63 gimplify.c, [...]: Fix comment typos.
* gimplify.c, ipa-prop.h, varasm.c, config/vxlib.c,
	config/vxworks.h, config/crx/crx.c, config/ms1/ms1.c,
	config/ms1/ms1.md, config/rs6000/rs6000.c: Fix comment typos.
	Follow spelling conventions.
	* doc/invoke.texi: Follow spelling conventions.

From-SVN: r103925
2005-09-06 02:05:07 +00:00
DJ Delorie
056061d8da varasm.c (output_constant): Let the target resolve conversions of addresses to non-default pointer sizes.
* varasm.c (output_constant): Let the target resolve
conversions of addresses to non-default pointer sizes.

From-SVN: r103750
2005-09-01 19:26:36 -04:00
J"orn Rennecke
dd0ae678ee * varasm.c (decode_reg_name): Skip empty aqdditional register names.
From-SVN: r103222
2005-08-17 20:25:12 +01:00
Jan Hubicka
7dcbf65993 output.h (enum section_category): Export from varasm.c
* output.h (enum section_category): Export from varasm.c
	(categorize_decl_for_section): Likewise.
	* varasm.c (enum section_category): Kill.
	(categorize_decl_for_section): Make global.
	* i386-protos.h (x86_output_aligned_bss, x86_elf_aligned_common):
	Declare.
	* i386.c (ix86_section_threshold): New static variable.
	(ix86_in_large_data_p, ix86_encode_section_info,
	x86_64_elf_unique_section,
	x86_64_elf_select_section): New functions.
	(TARGET_ENCODE_SECTION_INFO): Define
	(override_options): Enable medium model for PIC.
	(ix86_expand_prologue): Expand gen_set_got_rex64.
	(legitimate_constant_p): Handle new UNSPECs.
	(legitimate_pic_address_disp_p): Likewise.
	(legitimize_pic_address): Lower MEDIUM model addressing.
	* i386.h (PIC_OFFSET_TABLE_REGNUM): Set for medium model PIC.
	(enum cmodel): Add MEDIUM_PIC.
	(SYMBOL_REF_FAR_ADDR_P): New macro.
	(SYMBOL_FLAG_FAR_ADDR): New flag.
	* i386.md (movdi): Support medium model.
	(set_got_rex64): New pattern.
	* i386.opt (mlarge-data-threshold): New flag.
	* predicates.md (zext_operand/sext_operand): Deal with medium model.
	* x86-64.h (ASM_OUTPUT_ALIGNED_BSS): Use x86_output_aligned_bss.
	(ASM_OUTPUT_ALIGNED_COMMON, TARGET_ASM_SELECT_SECTION,
	TARGET_ASM_UNIQUE_SECTION): New.

	* invoke.texi (-mlarge_data_threshold): Document

From-SVN: r102606
2005-07-31 09:12:34 +00:00
Steven Bosscher
e4598783b4 re PR c++/22003 (-freorder-blocks-and-partition and thunks)
PR c++/22003
	* varasm.c (assemble_start_function): Don't do anything that may
	require a CFG if the current function is a thunk.

From-SVN: r102444
2005-07-27 21:02:55 +00:00
Mark Mitchell
9881e3e5e8 re PR debug/21828 (debug info omitted for uninitialized variables)
PR debug/21828
	* toplev.c (check_global_declarations): Do not mark undefined
	variables as DECL_IGNORED_P.
	* varasm.c (first_global_object_name): GTY it.
	(weak_global_object_name): Likewise.
	(notice_global_symbol): Use ggc_strdup, not xstrdup, when creating
	a string to go into {weak,first}_global_object_name.

	PR debug/21828
	* gcc.dg/debug/dwarf2/dwarf-uninit.c: New test.

From-SVN: r102287
2005-07-22 17:40:37 +00:00
Giovanni Bajo
4038c495fc Make CONSTRUCTOR use VEC to store initializers.
* c-common.c (complete_array_type): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* c-pretty-print.c (pp_c_initializer_list): Use pp_c_constructor_elts.
	(pp_c_constructor_elts): New function.
	* c-pretty-print.h (pp_c_constructor_elts): Declare.
	* c-typeck.c (build_function_call, build_c_cast, digest_init,
	struct constructor_stack, struct initializer_stack,
	constructor_elements, push_init_level, pop_init_level,
	add_pending_init, find_init_member, output_init_element): Update to
	cope with VEC in CONSTRUCTOR_ELTS.
	* coverage.c (build_fn_info_value, build_ctr_info_value,
	build_gcov_info): Likewise.
	* expr.c (categorize_ctor_elements_1, store_constructor,
	expand_expr_real_1): Likewise.
	* fold-const.c (fold_ternary): Likewise.
	* gimplify.c (gimplify_init_ctor_preeval, zero_sized_field_decl,
	gimplify_init_constructor, gimplify_expr): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-inline.c (copy_tree_r): Add code to duplicate a CONSTRUCTOR
	node.
	* tree-pretty-print.c (dump_generic_node): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* tree-sra.c (generate_element_init_1): Likewise.
	* tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree-vect-generic.c (expand_vector_piecewise): Likewise.
	* tree-vect-transform.c (vect_get_vec_def_for_operand):
	(get_initial_def_for_reduction): Likewise.
	* tree-vn.c (set_value_handle, get_value_handle): CONSTURCTOR uses
	value handle in annotations.
	* tree.c (tree_node_kind, tree_code_size, make_node_stat,
	tree_node_structure): Add support for constr_kind.
	(build_vector_from_ctor, build_constructor_single,
	build_constructor_from_list): New functions.
	(build_constructor): Update to take a VEC instead of a TREE_LIST.
	(simple_cst_equal, iterative_hash_expr, initializer_zerop, walk_tree):
	Update to cope with VEC in CONSTRUCTOR_ELTS.
	* tree.def (CONSTRUCTOR): Make it a tcc_exceptional node.
	* tree.h (FOR_EACH_CONSTRUCTOR_VALUE, FOR_EACH_CONSTRUCTOR_ELT,
	CONSTRUCTOR_APPEND_ELT): New macros.
	(struct constructor_elt, struct	tree_constructor): New data types.
	(union tree_node): Add tree_constructor field.
	* treestruct.def: Define TS_CONSTRUCTOR.
	* varasm.c (const_hash_1, compare_constant, copy_constant,
	compute_reloc_for_constant, output_addressed_constants,
	initializer_constant_valid_p, output_constant,
	array_size_for_constructor, output_constructor): Update to cope with
	VEC in CONSTRUCTOR_ELTS.
	* vec.h (VEC_empty, VEC_copy): New macros.

ada/
	Make CONSTRUCTOR use VEC to store initializers.
	* decl.c (gnat_to_gnu_entity): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* trans.c (extract_values): Likewise.
	* utils.c (convert, remove_conversions): Likewise.
	* utils2.c (contains_save_expr_p, build_binary_op, build_unary_op,
	gnat_build_constructor): Likewise.

cp/
	Make CONSTRUCTOR use VEC to store initializers.
	* call.c (convert_default_arg): Update call to digest_init.
	* class.c (dump_class_hierarchy, dump_array): Update to cope with
	VEC in CONSTRUCTOR_ELTS.
	* cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
	(finish_compound_literal, digest_init): Update declaration.
	* decl.c (struct reshape_iter): New data type.
	(reshape_init_array): Rename to...
	(reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
	(reshape_init): Rewrite from scratch. Split parts into...
	(reshape_init_array, reshape_init_vector, reshape_init_class,
	reshape_init_r): New functions.
	(check_initializer): Update call to reshape_init. Remove obsolete
	code.
	(initialize_artificial_var, cp_complete_array_type): Update to cope
	with VEC in CONSTRUCTOR_ELTS.
	* decl2.c (grokfield): Update calls to digest_init.
	(mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
	* error.c (dump_expr_init_vec): New function.
	(dump_expr): Use dump_expr_init_vec.
	* init.c (build_zero_init, build_vec_init): Update to cope with VEC
	in CONSTRUCTOR_ELTS.
	(expand_default_init): Update call to digest_init.
	* parser.c  (cp_parser_postfix_expression): Use a VEC for the
	initializers.
	(cp_parser_initializer_list): Build a VEC of initializers.
	* pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
	in CONSTRUCTOR_ELTS.
	* rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
	ptm_initializer, class_initializer, get_pseudo_ti_init): Use
	build_constructor_from_list instead of build_constructor.
	* semantics.c (finish_compound_literal): Update call to digest_init.
	* tree.c (stabilize_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* typeck.c (build_ptrmemfunc1): Likewise.
	* typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
	Likewise.
	(store_init_value): Use build_constructor_from_list and update call
	to digest_init.
	(digest_init): Rewrite.
	(process_init_constructor): Rewrite from scratch. Split into...
	(process_init_constructor_array, picflag_from_initializer,
	process_init_constructor_record, process_init_constructor_union):
	New functions.
	(PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE):
	New macros.
	(build_functional_cast): Use build_constructor_from_list instead of
	build_constructor.

fortran/
	Make CONSTRUCTOR use VEC to store initializers.
	* trans-array.c (gfc_build_null_descriptor,
	gfc_trans_array_constructor_value, gfc_conv_array_initializer):
	Update to cope with VEC in CONSTRUCTOR_ELTS.
	* trans-common.c (create_common): Likewise.
	* trans-expr.c (gfc_conv_structure): Likewise.
	* trans-stmt.c (gfc_trans_character_select): Use
	build_constructor_from_list instead of build_constructor.

java/
	Make CONSTRUCTOR use VEC to store initializers.
	* check-init.c (check_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* class.c (make_field_value, make_method_value, get_dispatch_table,
	make_class_data, emit_symbol_table, emit_catch_table,
	emit_assertion_table): Use build_constructor_from_list instead of
	build_constructor.
	* constants.c (build_constants_constructor): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Update to cope with
	VEC in CONSTRUCTOR_ELTS.
	* java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE,
	PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead
	of a TREE_LIST.
	* jcf-write.c (generate_bytecode_insns): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* parse.y (build_new_array_init): Use build_constructor_from_list
	instead of build_constructor.
	(patch_new_array_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	(array_constructor_check_entry): Likewise.

objc/
	Make CONSTRUCTOR use VEC to store initializers.
	* objc-act.c (objc_build_constructor): Use build_constructor_from_list
	instead of build_constructor.

testsuite/
	Make CONSTRUCTOR use VEC to store initializers.
	* g++.dg/ext/complit3.C: Check for specific error messages.
	* g++.dg/init/brace2.C: Update error message.
	* g++.dg/warn/Wbraces2.C: Likewise.

From-SVN: r102182
2005-07-20 01:19:59 +00:00
Gabriel Dos Reis
3c25d6a8c1 * varasm.c (assemble_variable): Fix format specifier thinko.
From-SVN: r101550
2005-07-03 14:14:28 +00:00
Joseph Myers
ea40ba9c04 c-common.h (GCC_DIAG_STYLE): Define.
* c-common.h (GCC_DIAG_STYLE): Define.
	* c-tree.h (GCC_DIAG_STYLE): Do not define.  Change minimum GCC
	version for format checking to 4.1.
	* c-format.c: Include toplev.h after c-common.h.
	(enum format_type): Add gcc_tdiag_format_type.
	(gcc_tdiag_length_specs, gcc_tdiag_flag_pairs,
	gcc_tdiag_flag_specs, gcc_tdiag_char_table): New.
	(format_types_orig): Add gcc_tdiag.
	(init_dynamic_diag_info): Support gcc_tdiag formats.
	(handle_format_attribute): Likewise.
	* toplev.h (NO_FRONT_END_DIAG, ATTRIBUTE_GCC_FE_DIAG): Remove.
	(GCC_DIAG_STYLE): Default to __gcc_tdiag__.  Change minimum GCC
	version for format checking to 4.1.
	(warning0, warning, error, pedwarn, sorry): Use
	ATTRIBUTE_GCC_DIAG.
	* config/rs6000/rs6000.c (altivec_expand_builtin), varasm.c
	(finish_aliases_1): Do not use %qE.
	* config/arm/arm.c, config/i386/i386.c, config/mmix/mmix.c,
	config/pdp11/pdp11.c, stor-layout.c, tree-eh.c, tree-ssa.c:
	Correct format bugs.
	* config/v850/v850-protos.h (v850_output_aligned_bss): Change size
	parameter to unsigned HOST_WIDE_INT.
	* config/v850/v850.c (v850_output_aligned_bss): Likewise.

cp:
	* cp-tree.h (GCC_DIAG_STYLE): #undef before defining.  Change
	minimum GCC version for format checking to 4.1.

testsuite:
	* gcc.dg/format/gcc_diag-1.c: Update.

From-SVN: r101543
2005-07-03 01:38:49 +01:00
Joseph Myers
dee158440e toplev.c (default_tree_printer): Handle setting location with '+' flag.
2005-07-02  Zack Weinberg  <zack@codesourcery.com>
            Joseph S. Myers  <joseph@codesourcery.com>

	* toplev.c (default_tree_printer): Handle setting location with
	'+' flag.
	* c-objc.common.c (c_tree_printer): Likewise.
	* c-format.c (gcc_diag_flag_specs): Add '+'.
	(gcc_cdiag_char_table): Allow '+' flag for tree formats.
	(format_types_orig): Allow '+' flag for gcc_diag and gcc_cdiag
	formats.
	* c-common.c, c-decl.c, c-objc-common.c, c-pragma.c,
	config/arm/pe.c, config/i386/winnt.c, config/ia64/ia64.c,
	config/mcore/mcore.c, config/sh/symbian.c, config/sol2.c,
	config/v850/v850.c, function.c, stor-layout.c, toplev.c,
	tree-inline.c, tree-optimize.c, tree.c, varasm.c: Use '+' flag
	instead of %J or %H.  Use 'q' flag for quoting.  Avoid '.' at end
	of diagnostics.  Use %q+D not %s for a decl.  Do not pass excess
	format arguments where %J is used without %D.

cp:
	* error.c (location_of): Add comment.
	(locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
	* cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
	* call.c, class.c, decl.c, decl2.c, friend.c, init.c,
	name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
	typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
	or cp_pedwarn_at.  Mark up some diagnostic strings with N_.

java:
	* class.c, decl.c, expr.c: Use '+' flag instead of %J.  Use 'q'
	flag for quoting.

objc:
	* objc-act.c: Use '+' flag instead of %J.  Use 'q' flag for
	quoting.

testsuite:
	* gcc.dg/format/gcc_diag-1.c: Update.

From-SVN: r101532
2005-07-02 11:55:32 +01:00
Steven Bosscher
c2f7fa15c0 coretypes.h (tls_model): Add TLS_MODEL_NONE as 0.
* coretypes.h (tls_model): Add TLS_MODEL_NONE as 0.
	* tree.h (struct tree_decl): New field `tls_model'.
	(DECL_TLS_MODEL): New.
	(DECL_THREAD_LOCAL_P): Rename from DECL_THREAD_LOCAL, make it
	a predicate.
	* rtl.h (decl_default_tls_model): Add prototype for it.
	* varasm.c (decl_tls_model): Rewritten and renamed to ...
	(decl_default_tls_model): ... this.
	(default_encode_section_info): Use DECL_TLS_MODEL instead of
	decl_tls_model.
	(assemble_variable): Replace DECL_THREAD_LOCAL with
	DECL_THREAD_LOCAL_P.
	(default_section_type_flags_1): Likewise.
	(categorize_decl_for_section): Likewise.
	* tree.c (staticp): Likewise.
	(recompute_tree_invarant_for_addr_expr): Likewise.
	* drawf2out (loc_descriptor_from_tree_1): Likewise.
	* c-decl.c (diagnose_mismatched_decls): Likewise.
	with DECL_THREAD_LOCAL_P.
	(start_decl): Likewise.
	* print-tree.c (print_node): Likewise.  Print the TLS model.
	(grokdeclarator): Set the default DECL_TLS_MODEL here.
	* c-common.c (handle_tls_model_attribute): Rewrite to set the
	TLS model up based on the attribute.  Never add the attribute
	to the decl's attributes list.
	* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Replace
	DECL_THREAD_LOCAL with DECL_THREAD_LOCAL_P.

cp/
	* decl.c (start_decl): Replace DECL_THREAD_LOCAL with
	DECL_THREAD_LOCAL_P.
	(cp_finish_decl): Likewise.
	(grokvardecl): Set the default DECL_TLS_MODEL here.

From-SVN: r101465
2005-06-30 12:17:52 +00:00
Caroline Tice
affb0e06f4 re PR rtl-optimization/21956 (useless symbols in object files)
2005-06-29  Caroline Tice  <ctice@apple.com>

        Fix PR 21956
        * varasm.c (assemble_start_function):  Add "L" to beginning of
        local labels, so assembler & linker treat them as local.

From-SVN: r101432
2005-06-29 10:47:31 -07:00
Kelley Cook
366ccddb2b Update FSF address.
From-SVN: r101317
2005-06-25 02:02:01 +00:00
Richard Kenner
0d26b2ff45 re PR middle-end/20593 (Simple array of string access miscompiled on x86 and x86_64 and PPC)
2005-06-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

        PR middle-end/20593
        * varasm.c (compute_reloc_for_constant): Treat VIEW_CONVER_EXPR
        the same as the other cast operands.
        (output_addressed_constants): Likewise.

From-SVN: r101248
2005-06-22 06:38:19 -07:00
Richard Henderson
60ff97f497 varasm.c (initialize_cold_section_name): Fix alloca buffer overflow.
* varasm.c (initialize_cold_section_name): Fix alloca buffer overflow.
        (assemble_start_function): Fix strcmp confusion.

From-SVN: r100733
2005-06-07 17:15:53 -07:00
DJ Delorie
5c498b10af common.opt (-Wattributes): New.
* common.opt (-Wattributes): New.  Default true.
* doc/invoke.texi (-Wno-attributes): Document.

* attribs.c (decl_attributes): Move warning control from if() to
warning(OPT_*).
* c-common.c (handle_packed_attribute): Likewise.
(handle_nocommon_attribute): Likewise.
(handle_common_attribute): Likewise.
(handle_noreturn_attribute): Likewise.
(handle_noinline_attribute): Likewise.
(handle_always_inline_attribute): Likewise.
(handle_used_attribute): Likewise.
(handle_unused_attribute): Likewise.
(handle_const_attribute): Likewise.
(handle_transparent_union_attribute): Likewise.
(handle_constructor_attribute): Likewise.
(handle_destructor_attribute): Likewise.
(handle_mode_attribute): Likewise.
(handle_alias_attribute): Likewise.
(handle_visibility_attribute): Likewise.
(handle_tls_model_attribute): Likewise.
(handle_malloc_attribute): Likewise.
(handle_returns_twice_attribute): Likewise.
(handle_pure_attribute): Likewise.
(handle_deprecated_attribute): Likewise.
(handle_vector_size_attribute): Likewise.
(handle_nothrow_attribute): Likewise.
(handle_cleanup_attribute): Likewise.
(handle_warn_unused_result_attribute): Likewise.
(handle_sentinel_attribute): Likewise.
* c-decl.c (diagnose_mismatched_decls): Likewise.
(start_decl): Likewise.
(grokdeclarator): Likewise.
(start_function): Likewise.
* c-format.c (check_function_format): Likewise.
* stor-layout.c (place_field): Likewise.
(finalize_record_size): Likewise.
* tree.c (handle_dll_attribute)): Likewise.
* varasm.c (default_assemble_visibility): Likewise.
* config/darwin.c (darwin_handle_weak_import_attribute): Likewise.
(darwin_assemble_visibility): Likewise.
* config/arc/arc.c (arc_handle_interrupt_attribute): Likewise.
* config/arm/arm.c (arm_handle_fndecl_attribute): Likewise.
(arm_handle_isr_attribute): Likewise.
* config/avr/avr.c (avr_handle_progmem_attribute): Likewise.
(avr_handle_fndecl_attribute): Likewise.
* config/bfin/bfin.c (handle_int_attribute): Likewise.
* config/c4x/c4x.c (c4x_handle_fntype_attribute): Likewise.
* config/h8300/h8300.c (h8300_handle_fndecl_attribute): Likewise.
(h8300_handle_eightbit_data_attribute): Likewise.
(h8300_handle_tiny_data_attribute): Likewise.
* config/i386/i386.c (ix86_handle_cdecl_attribute): Likewise.
(ix86_handle_regparm_attribute): Likewise.
(ix86_handle_struct_attribute): Likewise.
* config/i386/winnt.c (ix86_handle_shared_attribute): Likewise.
(i386_pe_encode_section_info): Likewise.
* config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
* config/ip2k/ip2k.c (ip2k_handle_progmem_attribute): Likewise.
(ip2k_handle_fndecl_attribute): Likewise.
* config/m32r/m32r.c (m32r_handle_model_attribute): Likewise.
* config/m68hc11/m68hc11 (m68hc11_handle_page0_attribute): Likewise.
(m68hc11_handle_fntype_attribute): Likewise.
(m68hc11_encode_section_info): Likewise.
* config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
* config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
* config/ns32k/ns32k.c (ns32k_handle_fntype_attribute): Likewise.
* config/rs6000/rs6000.c (rs6000_handle_longcall_attribute): Likewise.
* config/sh/sh.c (sh_handle_interrupt_handler_attribute): Likewise.
(sh_handle_sp_switch_attribute): Likewise.
(sh_handle_trap_exit_attribute): Likewise.
* config/sh/symbian.c (sh_symbian_dllimport_p): Likewise.
(sh_symbian_handle_dll_attribute): Likewise.
* config/stormy16/stormy16.c (xstormy16_handle_interrupt_attribute): Likewise.
(xstormy16_handle_below100_attribute): Likewise.
* config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.

[testsuite]

* gcc.dg/Wattributes-1.c: New.
* gcc.dg/Wattributes-2.c: New.
* gcc.dg/Wattributes-3.c: New.

[cp]

* decl.c (duplicate_decls): Move warning control from if() to
warning(OPT_*).
* name-lookup.c (parse_using_directive): Likewise.
* parser.c (cp_parser_elaborated_type_specifier): Likewise.
(cp_parser_init_declarator): Likewise.
* tree.c (handle_com_interface_attribute): Likewise.

[java]

* class.c (set_constant_value): Move warning control from if() to
warning(OPT_*).

From-SVN: r100136
2005-05-25 00:18:19 -04:00
Jakub Jelinek
b96917bffe varasm.c (struct constant_descriptor_tree): Add hash field.
* varasm.c (struct constant_descriptor_tree): Add hash field.
	(const_desc_hash): Just return hash field.
	(const_desc_eq): If hash values are different, return 0 immediately.
	(output_constant_def): Compute hash field of temporary key, use
	htab_find_slot_with_hash instead of htab_find_slot.  Set hash in
	newly built constant descriptor.
	(lookup_constant_def): Compute hash field of temporary key, use
	htab_find_with_hash instead of htab_find.

From-SVN: r99813
2005-05-17 08:34:48 +02:00
Caroline Tice
1ad435a5d5 bb-reorder.c (verify_hot_cold_block_grouping): Replace internal_error with gcc_assert.
2005-05-16  Caroline Tice  <ctice@apple.com>

        * bb-reorder.c (verify_hot_cold_block_grouping):  Replace
        internal_error with gcc_assert.
        * dwarf2out.c (dwarf2out_switch_text_section):  Likewise.
        * function.h (struct function): Remove space between "*" and
        struct field names.
        * varasm.c (initialize_cold_section_name):   Add gcc_assert;
        modify to use alloca.
        (unlikely_text_section): Add check for flag_function_sections.
        (assemble_start_function):  Move call to resolve_section, so it
        comes before first call to unlikely_text_section.
        (assemble_end_function):  Add test and call to function_section
        if appropriate.

From-SVN: r99796
2005-05-16 14:37:01 -07:00
Julian Brown
11176d2ab6 configure.ac: Set ld_vers_major, ld_vers_minor and ld_vers_patch for GNU linker.
* configure.ac: Set ld_vers_major, ld_vers_minor and ld_vers_patch for
        GNU linker. Support linker version x.x.x.x.x. Require GNU linker
        20050308/2.16.0 or newer for comdat group.
        * configure: Regenerated.
        * config.in: Regenerated.
        * varasm.c (default_function_rodata_section): Put .rodata section in
        COMDAT group when necessary.
        (default_elf_asm_named_section): Rename HAVE_GAS_COMDAT_GROUP to
        HAVE_COMDAT_GROUP.
        (default_unique_section_1): Don't use .gnu.linkonce when COMDAT is
        available.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
Co-Authored-By: Paul Brook <paul@codesourcery.com>

From-SVN: r99395
2005-05-08 16:58:03 +00:00
Jakub Jelinek
46fb43a7cf re PR c++/20961 (ICE on pragma weak/__attribute__((weak)))
PR c++/20961
	* varasm.c (merge_weak): Remove NEWDECL from WEAK_DECLS chain
	if both NEWDECL and OLDDECL are already weak.

	* g++.dg/ext/weak3.C: New test.

From-SVN: r99306
2005-05-06 11:16:24 +02:00
Caroline Tice
c7466deed4 Correct fixes for various hot/cold partitioning concerns.
2005-04-27  Caroline Tice  <ctice@apple.com>

        * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
        Remove targetm.have_named_sections test.
        (fix_edges_for_rarely_executed_code): Likewise.
        (insert_section_boundary_note): Likewise.
        (reorder_basic_blocks): Check partitioning flag before calling
        verify_hot_cold_block_grouping.
        * dbxout.c (dbxout_function_end): Get hot/cold section labels from
        the function struct rather than global variables.
        * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
        (COLD_END_LABEL): Likewise
        (cold_text_section_label): New static global variable.
        (cold_end_label): Likewise.
        (dwarf2out_switch_text_section): Get hot/cold section labels from
        the function struct rather than global variables; test to make sure
        cfun is defined.
        (output_aranges): Use cold_text_section_label and cold_end_label;
        check partitioning flag before putting out delta.
        (output_ranges): Remove incorrect code attempting to use
        hot/cold labels.
        (output_line_info): Get cold section label from function struct; test
        to make sure cfun is defined.
        (add_location_or_const_value_attribute): Likewise.
        (dwarf2out_var_location): Likewise.
        (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
        write out cold_text_section_label if partition flag is set.
        (dwarf2out_finish): Write out cold_end_label if partition flag is set;
        * function.h (struct function): Add new fields to point to hot/cold
        section labels: hot_section_label, cold_section_label,
        hot_section_end_label and cold_section_end_label; also add new field
        for cold text section name, unlikely_text_section_name.
        * opts.c (decode_options): Turn off partitioning flag if
        !targetm.have_named_sections.
        * output.h (hot_section_label): Remove.
        (hot_section_end_label): Remove.
        (cold_section_end_label): Remove.
        (unlikely_section_label): Remove.
        (unlikely_text_section_name): Remove.
        * passes.c (rest_of_handle_final):  Remove extra blank line.
        * varasm.c (unlikely_section_label): Remove.
        (hot_section_label): Remove.
        (hot_section_end_label): Remove.
        (cold_section_end_label): Remove.
        (unlikely_text_section_name):  Remove.
        (initialize_cold_section_name): Modify to call
        targetm.strip_name_encoding; to store cold section name in current
        function struct, if it exists; and to only use the decl_section_name
        if flag_named_sections is true.
        (unlikely_text_section): Modify to get section name out of current
        function struct, if there is one; otherwise build it from
        UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
        (in_unlikely_text_section): Likewise.
        (named_section): Modify to get/put cold section name in current function
        struct, if there is one.
        (function_section):  Change 'bool unlikely' to 'int reloc'; check
        targetm.have_named_sections before calling named_section.
        (current_function_section): Likewise.
        (assemble_start_function): Modify to get/put unlikely_text_section_name
        in current function struct; modify to get hot/cold section labels
        from function struct; initialize labels using
        ASM_GENERATE_INTERNAL_LABEL;
        test partitioning flag before writing out hot section label.
        (assemble_end_function): Test partitioning flag before writing out
        hot/cold section labels.
        (default_section_type_flags_1):  Get cold text section name from
        function struct if there is one; Set flags correctly for
        cold text section if there is not a current function struct.

From-SVN: r98885
2005-04-27 14:35:20 -07:00
J"orn Rennecke
4c33cb26d4 re PR rtl-optimization/20413 (VOIDmode LABEL_REFs are generated)
2005-04-25  J"orn Rennecke <joern.rennecke@st.com>
	    Stephen Clarke <stevec@superh.com>
	    Roger Sayle <roger@eyesopen.com>

	PR rtl-optimization/20413
	* cfgrtl.c (redirect_edge_and_branch): Use Pmode instead of
	VOIDmode for LABEL_REF.
	* final.c (shorten_branches): Likewise.
	* jump.c (mark_all_labels, redirect_exp_1): Likewise.
	* loop.c (reg_dead_after_loop): Likewise.
	* varasm.c (decode_addr_const): Likewise.
	* doc/rtl.texi: Document mode requirement for LABEL_REF.

Co-Authored-By: Roger Sayle <roger@eyesopen.com>
Co-Authored-By: Stephen Clarke <stevec@superh.com>

From-SVN: r98711
2005-04-25 13:46:12 +01:00
Jakub Jelinek
8634c649cb re PR middle-end/20991 (ICE in cgraph_mark_reachable_node)
PR middle-end/20991
	* cgraph.h (cgraph_local_info): Add vtable_method field.
	* varasm.c (mark_decl_referenced): If cgraph_global_info_ready
	and node is vtable_method, finalized and not reachable, don't do
	anything.

	* class.c: Include cgraph.h.
	(cp_fold_obj_type_ref): Set node->local.vtable_method.
	* Make-lang.in (cgraph.o): Depend on $(CGRAPH_H).

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

From-SVN: r98674
2005-04-25 00:06:37 +02:00
DJ Delorie
d4ee4d2525 diagnostic.c (warning): Accept parameter to classify warning option.
* diagnostic.c (warning): Accept parameter to classify warning option.
(warning0): New, for when a pointer to an error() like function is needed.
* errors.c (warning): Likewise.
* errors.h (warning, warning0): Adjust prototypes.
* toplev.h (warning, warning0): Likewise.

* attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.

* config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
config/darwin.c, config/darwin.h, config/h8300/h8300.c,
config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
config/rs6000/aix52.h, config/rs6000/darwin.h,
config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
config/stormy16/stormy16.c, config/v850/v850-c.c,
config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
callers.

* ada/misc.c: Adjust warning() callers.

* cp/call.c, cp/class.c, cp/cvt.c, cp/decl.c, cp/decl2.c,
cp/except.c, cp/friend.c, cp/init.c, cp/lex.c, cp/mangle.c,
cp/method.c, cp/name-lookup.c, cp/parser.c, cp/repo.c, cp/rtti.c,
cp/tree.c, cp/typeck.c, cp/typeck2.c: Adjust warning() callers.

* fortran/trans-decl.c: Adjust warning() callers.

* java/class.c, java/decl.c, java/expr.c, java/jcf-io.c,
java/jcf-parse.c, java/jv-scan.c, java/parse.y: Adjust warning()
callers.

* objc/objc-act.c: Adjust warning() callers.

* treelang/parse.y: Adjust warning() callers.

From-SVN: r98633
2005-04-23 17:29:07 -04:00
Kazu Hirata
04c7ae4807 * final.c, ipa-inline.c, varasm.c: Fix comment typos.
From-SVN: r98613
2005-04-23 14:23:26 +00:00
Joseph Myers
ebccb65d5a varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN (decl).
* varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
	(decl).

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

From-SVN: r98551
2005-04-22 11:15:09 +01:00
Nathan Sidwell
41806d92af alias.c (true_dependence): Remove 'abort' from comments.
* alias.c (true_dependence): Remove 'abort' from comments. Use
	gcc_assert and gcc_unreachable as appropriate.
	(canon_true_dependence): Likewise.
	* bb-reorder.c (connect_traces): Likewise.
	* c-common.c (c_add_case_label): Likewise.
	* c-decl.c (finish_function): Likewise.
	* caller-save.c (insert_restore, insert_save): Likewise.
	* cfg.c (update_bb_profile_for_threading): Likewise.
	* cfganal.c (flow_active_insn_p): Likewise.
	* cfgexpand.c (add_reg_br_prob_note): Likewise.
	* cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
	cfg_layout_merge_blocks): Likewise.
	* ifcvt.c (cond_exec_process_insns, merge_if_block,
	find_if_block): Likewise.
	* integrate.c (allocate_initial_values): Likewise.
	* jump.c (reverse_condition, reverse_condition_maybe_unordered,
	swap_condition, unsigned_condition, signed_condition,
	mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
	reg_or_subregno): Likewise.
	* lambda-code.c (lambda_compute_auxillary_space,
	lambda_transform_legal_p): Likewise.
	* lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
	* langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
	lhd_incomplete_type_error, lhd_expand_expr,
	lhd_types_compatible_p, lhd_tree_size): Likewise.
	* lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.
	* loop-unroll.c (peel_loop_completely
	unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
	peel_loop_simple, unroll_loop_stupid,
	analyze_iv_to_split_insn): Likewise.
	* loop.c (gen_prefetch, find_and_verify_loops,
	basic_induction_var): Likewise.
	* modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
	* value-prof.c (tree_find_values_to_profile): Likewise.
	* varasm.c (named_section, default_assemble_integer,
	decode_addr_const): Likewise.

From-SVN: r98508
2005-04-21 15:47:33 +00:00
Nathan Sidwell
d4e6fecb8f vec.h: Update API to separate allocation mechanism from type.
* vec.h: Update API to separate allocation mechanism from type.
	(VEC_safe_grow): New.
	* vec.c (calculate_allocation): New.
	(vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
	(vec_gc_free, vec_heap_free): Remove.
	* gengtype-lex.l (DEF_VEC_): Process mult-argument macros.  Adjust.
	(VEC): Likewise.
	(mangle_macro_name): New.
	(struct macro_def): New.
	(struct macro): Add multiple argument values.
	(macro_expans_end): New.
	(push_macro_expansion):  Chain on new macro. Process multiple
	args, create follow on expansion. Return follow on argument.
	(macro_input): Deal with multiple arguments.

	* tree.h: Define VEC(tree,heap) and VEC(tree,gc).
	(struct tree_binfo): Adjust.
	* basic-block.h: Define VEC(edge,gc).
	(struct edge_def): Adjust.
	(struct basic_block_def, struct edge_iterator): Likewise.
	(ei_container, ei_start_1, ei_last_1): Likewise.
	* cfg.c (connect_src, connect_dest): Likewise.
	* cfgrtl.c (force_nonfallthru_and_redirect)
	* dbxout.c (dbxout_type)
	* dwarf2out.c (gen_member_die)
	* lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
	(gcc_tree_to_linear_expression): Adjust.
	(gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
	lbv_to_gcc_expression, lle_to_gcc_expression,
	lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
	perfect_nestify): Likewise.
	* lambda.h (gcc_loopnest_to_lambda_loopnest,
	lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
	* profile.c (instrument_values): Adjust.
	* tree-cfg.c (modified_noreturn_calls): Adjust.
	(remove_fallthru_edge): Likewise.
	* tree-dump.c (dequeue_and_dump): Adjust.
	* tree-flow-inline.h (mark_stmt_modified): Adjust.
	* tree-flow.h (modified_noreturn_calls): Adjust.
	(tree_on_heap): Remove. (yay!)
	(register_new_def): Adjust.
	* tree-into-ssa.c: Define VEC(int,heap).
	(block_defs_stack): Adjust.
	(find_idf, insert_phi_nodes, register_new_def,
	rewrite_initialize_block, rewrite_finalize_block,
	register_new_update_single, rewrite_update_init_block,
	rewrite_update_fini_block, rewrite_blocks,
	ssa_rewrite_finalize_block, ssa_register_new_def,
	ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
	* tree-loop-linear.c (linear_transform_loops): Adjust.
	* tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
	(push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
	* tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
	stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
	vrp_variables_stack): Adjust declarations.
	(tree_ssa_dominator_optimize): Adjust.
	(dom_opt_initialize_block, remove_local_expressions_from_table,
	restore_nonzero_vars_to_original_value,
	restore_vars_to_original_value,
	restore_currdefs_to_original_value, dom_opt_finalize_block,
	record_var_is_nonzero, record_cond, record_const_or_copy_1,
	optimize_stmt, update_rhs_and_lookup_avail_expr,
	lookup_avail_expr, record_range): Likewise.
	* tree-ssa-pre.c: Define VEC(basic_block,heap).
	(compute_antic_aux): Adjust.
	(inserted_exprs, create_expression_by_pieces,
	insert_into_preds_of_block, eliminate, mark_operand_necessary,
	remove_dead_inserted_code, fini_pre): Likewise.
	* tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
	(varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
	ssa_prop_init): Likewise.
	* tree-ssa.c: Define VEC(bitmap,heap).
	(verify_name_tags): Adjust.
	* value-prof.c (rtl_divmod_values_to_profile): Adjust.
	(insn_prefetch_values_to_profile, rtl_find_values_to_profile,
	tree_divmod_values_to_profile, tree_find_values_to_profile,
	value_profile_transformations): Likewise.
	* value-prof.h: Define VEC(histogram_value,heap).
	* varasm.c: Remove alias_pair pointer typedef, define
	VEC(alias_pair,gc).
	(finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.

	* config/pa/pa.c (typedef extern_symbol): Typedef the structure,
	not a pointer to it.  Create an object vector.
	(extern_symbols): Turn into an object vector.
	(pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.

	* cp/cp-tree.h: Adjust for new VEC API.
	Define VEC(tree_pair_s,gc).
	(struct save_scope): Adjust.
	(struct lang_type_class): Adjust.
	(unemitted_tinfo_decls): Adjust.
	* cp/class.c (add_method, resort_type_method_vec,
	finish_struct_methods, struct find_final_overrider_data,
	dfs_find_final_overrider_pre, find_final_overrider,
	get_vcall_index, warn_hidden, walk_subobject_offsets,
	check_methods, fixup_inline_methods, end_of_class,
	warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
	add_vcall_offset): Adjust.
	* cp/decl.c (xref_basetypes, finish_method): Adjust.
	* cp/decl2.c (check_classfn): Adjust.
	* cp/init.c (sort_mem_initializers, push_base_cleanups): Adjust.
	* cp/method.c (do_build_copy_constructor): Adjust.
	* cp/name-lookup.c (new_class_binding, store_binding,
	store_bindings, store_class_bindings): Adjust.
	* cp/name-lookup.h: Define VEC(cxx_saved_binding,gc),
	VEC(cp_class_binding,gc).
	(struct cp_binding_level): Adjust.
	* cp/parser.c: Define VEC(cp_token_position,heap).
	(struct cp_lexer): Adjust.
	(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
	cp_lexer_save_tokens): Adjust.
	* cp/pt.c (retrieve_specialization,
	check_explicit_specialization): Adjust.
	* cp/rtti.c (unemitted_tinfo_decls): Adjust.
	(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
	get_pseudo_ti_desc): Adjust.
	* cp/search.c (dfs_access_in_type, lookup_conversion_operator,
	lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
	dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
	* cp/semantics.c: Define VEC(deferred_access,gc).
	(push_deferring_access_checks): Adjust.
	* cp/typeck2.c (abstract_virtuals_error): Adjust.

From-SVN: r98498
2005-04-21 09:18:28 +00:00
Daniel Jacobowitz
0d620686ce * varasm.c (assemble_start_function): Remove reset of in_section.
From-SVN: r98366
2005-04-19 03:49:17 +00:00
Kazu Hirata
f0e4ea10f9 basic-block.h, [...]: Fix comment typos.
* basic-block.h, tree-ssa-uncprop.c, varasm.c,
	config/i386/sse.md: Fix comment typos.

From-SVN: r98085
2005-04-13 14:34:13 +00:00
Caroline Tice
b3b51ded80 Temporary fix for partitioning problems; real fix coming soon.
From-SVN: r98051
2005-04-12 15:38:06 -07:00
Caroline Tice
c3c822d506 Revert patch from April 9.
From-SVN: r98039
2005-04-12 13:39:09 -07:00
Caroline Tice
e5e625da47 Fix problems with labels with hot/cold partitioning.
From-SVN: r97928
2005-04-09 13:41:49 -07:00
Kazu Hirata
f3b569ca7e dominance.c, [...]: Fix comment typos.
* dominance.c, gthr-win32.h, reg-stack.c, tree-ssa-copy.c,
	tree-ssa-operands.c, tree-ssa.c, tree-vrp.c, varasm.c,
	config/alpha/alpha.c, config/arm/arm.c, config/m32r/m32r.h,
	config/rs6000/predicates.md: Fix comment typos.

From-SVN: r97904
2005-04-09 16:43:43 +00:00
Kazu Hirata
830113fd7b * bb-reorder.c, fold-const.c, varasm.c: Fix comment typos.
From-SVN: r97395
2005-04-01 14:36:37 +00:00
Kazu Hirata
aabcd30904 cgraphunit.c, [...]: Fix comment typos.
* cgraphunit.c, dbxout.c, flow.c, gcse.c, gimplify.c,
	lambda-code.c, loop.c, machmode.def, mips-tfile.c,
	modulo-sched.c, passes.c, postreload-gcse.c, tree-eh.c,
	tree-ssa-ccp.c, varasm.c, config/frv/frv.c, config/frv/frv.h,
	config/frv/frv.md, config/i386/i386.c, config/i386/i386.h,
	config/i386/i386.md, config/rs6000/predicates.md,
	config/rs6000/rs6000.c, config/s390/fixdfdi.h,
	config/s390/s390.c, config/stormy16/stormy16.c,
	config/stormy16/stormy16.md, config/vax/vax.md: Fix comment
	typos.

From-SVN: r97362
2005-04-01 03:42:55 +00:00
Caroline Tice
87c8b4bed3 Fix problems with hot/cold partitioning optimization.
From-SVN: r97322
2005-03-31 06:59:59 -08:00
Jan Hubicka
cd9c7bd28b [multiple changes]
2005-03-31  Jan Hubicka  <jh@suse.cz>

	2004-11-02  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_varpool_node_name): New function.
	(dump_cgraph_varpool_node): New function.
	(dump_varpool): New function.
	* cgraphunit.c (cgraph_optimize): Dump varpool.

	2004-10-16  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (decide_is_variable_needed): New function.
	(cgraph_varpool_finalize_decl): Use it.
	* cgraphunit.c (cgraph_optimize): Assemble_pending_decls when not doing
	unit-at-a-time.
	* final.c (output_addr_const): Do not call mark_referenced.
	* passes.c (rest_of_decl_compilation): ifdef out DECL_RTL_SET_P hack;
	always go via cgraph.
	* toplev.c (wrapup_global_declarations): Kill non-unit-at-a-time code.
	(check_global_declarations): Ifdef out code clearing DECL_RTL.
	* tree-optimize.c (execute_inline): Mark functions called.
	* i386.c (output_pic_addr_const): Do not call mark_decl_referenced.

	2004-10-11  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_varpool_first_unanalyzed_node): New global voriable
	(cgraph_varpool_last_needed_node): New static variable.
	(enqueue_needed_varpool_node): Break out from ...; add items to the
	end of queue; update first pointers.
	(cgraph_varpool_mark_needed_node): ... here.
	(cgraph_varpool_finalize_decl): Use enqueue_needed_varpool_node.
	(cgraph_varpool_assemble_pending_decls): Move to cgraphunit.c
	* cgraph.h (cgraph_varpool_node): Add analyzed field.
	(cgraph_varpool_first_unanalyzed_node): Declare.
	* cgraphunit.c: Include output.h.
	(cgraph_varpool_analyze_pending_decls): New function.
	(cgraph_varpool_assemble_pending_decls): Move from cgraph.c; bail out
	for errors, analyze pending decls.
	(cgraph_finalize_compilation_unit): Only analyze decls.
	(cgraph_optimize): Assemble the decls after expanding.

From-SVN: r97287
2005-03-30 22:28:02 +00:00
Richard Henderson
12527dcee3 cgraph.h (struct cgraph_node): Add alias.
* cgraph.h (struct cgraph_node): Add alias.
        * varasm.c (assemble_alias): Set it.
        * cgraphunit.c (cgraph_assemble_pending_functions): Check it and
        avoid calling cgraph_expand_function.

From-SVN: r97284
2005-03-30 14:07:51 -08:00
Jakub Jelinek
1a612e0a6c re PR middle-end/20622 (Alias to nocommon variable fails to assemble on ppc64)
PR middle-end/20622
	* cgraph.h (struct cgraph_varpool_node): Add alias field.
	* cgraph.c (cgraph_varpool_assemble_pending_decls): Don't call
	assemble_variable on aliases.
	* varasm.c (assemble_alias): Set node->alias.
	* toplev.c (wrapup_global_declarations): Don't call
	rest_of_decl_compilation on aliases again.

	* gcc.dg/alias-7.c: New test.

From-SVN: r97161
2005-03-29 17:37:29 +02:00
Eric Botcazou
360ca05451 re PR middle-end/20263 (Incorrect asm for global register vars)
PR middle-end/20263
	* varasm.c (make_decl_rtl) [ASM_DECLARE_REGISTER_GLOBAL]: Use
	the DECL_NAME, not the DECL_ASSEMBLER_NAME.

From-SVN: r97157
2005-03-29 12:08:54 +00:00
Jan Hubicka
5c55c2e8ca re PR middle-end/20635 (ICE in cgraph_mark_reachable_node)
PR middle-end/20635
	* varasm.c (mark_decl_referenced): Do not mark extern inline functions
	as needed.

	* compile/gcc.c-torture/compile/20050328-1.c: New testcase made
	by Jakub Jelinek.

From-SVN: r97133
2005-03-28 14:10:05 +00:00
Mike Stump
b025006799 * varasm.c (default_assemble_visibility): Remove extra ().
From-SVN: r96849
2005-03-22 01:10:54 +00:00
Roger Sayle
749053f5e2 varasm.c (do_assemble_alias): Restore comment describing function.
* varasm.c (do_assemble_alias): Restore comment describing function.
	Annotate the target parameter as potentially unused.

Co-Authored-By: Joseph Myers <joseph@codesourcery.com>

From-SVN: r96768
2005-03-20 21:23:24 +00:00
Jan Hubicka
45676d2b6c re PR middle-end/20225 (ICE during GC)
PR middle-end/20225
	* cgraph.c (cgraph_mark_reachable_node): Assert that it is not called
	too late.
	* varasm.c (find_decl_and_mark_needed): Mark needed only when not
	called too late.

From-SVN: r96685
2005-03-18 14:57:10 +00:00
Richard Henderson
e4d5432a73 re PR middle-end/15700 ([unit-at-a-time] Inlining problem leads to miscompilation of glibc)
PR middle-end/15700
        * varasm.c (struct alias_pair): Rename from struct output_def_pair.
        (alias_pairs): Rename from output_defs.
        (find_decl_and_mark_needed): Split out from assemble_alias.
        (do_assemble_alias): New.
        (assemble_output_def): Remove.
        (finish_aliases_1, finish_aliases_2): New.
        (process_pending_assemble_output_defs): Remove.
        (assemble_alias): Defer aliases for which we don't yet have a
        non-external decl for the target symbol.
        * passes.c (rest_of_decl_compilation): Register variables with cgraph.
        * cgraphunit.c (cgraph_finalize_compilation_unit): Use finish_aliases_1.        * toplev.c (compile_file): Use finish_aliases_2 instead of
        process_pending_assemble_output_defs.
        * tree.h (finish_aliases_1, finish_aliases_2): Declare.
        (process_pending_assemble_output_defs): Remove.

        * gcc.c-torture/compile/20040323-1.c: Don't xfail for solaris.
        (_rtld_global): New.
        * gcc.dg/weak/weak-3.c (ffoox1f, ffoox1g): Define.
        * gcc.dg/weak/weak-9.c (notf1, notf2, notf3, notf4): Define.

        * gcc.dg/alias-3.c: New.
        * gcc.dg/alias-4.c: New.
        * gcc.dg/alias-5.c: New.
        * gcc.dg/alias-6.c: New.

From-SVN: r96564
2005-03-16 09:15:11 -08:00
Daniel Jacobowitz
0bfb33e513 * varasm.c (decl_tls_model): Check flag_shlib instead of flag_pic.
From-SVN: r96378
2005-03-13 17:56:14 +00:00
Nathan Sidwell
fbc848cc8c value-prof.c (rtl_find_values_to_profile): Use gcc_assert and gcc_unreachable.
* value-prof.c (rtl_find_values_to_profile): Use gcc_assert and
	gcc_unreachable.
	(rtl_register_value_prof_hooks,
	tree_value_profile_transformations,
	tree_register_value_prof_hooks): Likewise.
	* var-tracking.c (stack_adjust_offset_pre_post,
	variable_htab_free, variable_union, dataflow_set_different_2,
	count_uses, variable_was_changed, set_frame_base_location,
	set_variable_part, emit_note_insn_var_location, vt_emit_notes,
	vt_add_function_parameters): Likewise.
	* varasm.c (named_section_real, named_section, make_decl_rtl,
	asm_emit_uninitialised, assemble_integer, decode_addr_const,
	const_hash_1, compare_constant, copy_constant, force_const_mem,
	output_constant_pool_2, output_constant_pool_1, output_constant,
	output_constructor, make_decl_one_only, decl_tls_model,
	default_no_named_section, default_elf_select_section_1,
	default_unique_section_1): Likewise.
	* vec.c (vec_gc_o_reserve, vec_heap_o_reserve): Likewise.
	* vmsdbgout.c (addr_const_to_string): Likewise.

From-SVN: r96241
2005-03-10 15:36:42 +00:00
Geoffrey Keating
7df74013f1 varasm.c (named_section): Use xstrdup rather than doing it by hand.
* varasm.c (named_section): Use xstrdup rather than doing it by
	hand.

From-SVN: r95812
2005-03-02 21:33:44 +00:00
Mark Mitchell
9560cbde52 re PR c++/19916 (Segmentation fault in __static_initialization_and_destruction_0)
PR c++/19916
	* varasm.c (initializer_constant_valid_p): Allow conversions
	between OFFSET_TYPEs.  Tidy.

	PR c++/19916
	* g++.dg/init/ptrmem2.C: New test.

From-SVN: r95787
2005-03-02 17:13:09 +00:00
Richard Henderson
237f420bfe rtl.c (rtx_equal_p): No early exit for CONST_VECTOR.
* rtl.c (rtx_equal_p): No early exit for CONST_VECTOR.
        * varasm.c (const_rtx_hash_1): Handle CONST_VECTOR.

From-SVN: r94446
2005-01-30 10:27:23 -08:00
John David Anglin
083b671742 re PR target/16304 (bootstrap failure on AIX 4.3.3: cannot build strstream in libstdc++)
PR target/16304
	* defaults.h (TARGET_DEFERRED_OUTPUT_DEFS): Provide default.
	* toplev.c (compile_file): Call process_pending_assemble_output_defs
	just before targetm.asm_out.file_end.
	* tree.h (process_pending_assemble_output_defs): Declare.
	* varasm.c (assemble_output_def, process_pending_assemble_output_defs):
	New functions.
	(assemble_alias): Defer generation of assembly code for defines when
	TARGET_DEFERRED_OUTPUT_DEFS is true.
	* config/rs6000/aix41.h (TARGET_DEFERRED_OUTPUT_DEFS): Define.
	* config/rs6000/aix43.h (TARGET_DEFERRED_OUTPUT_DEFS): Define.
	* doc/tm.texi (TARGET_DEFERRED_OUTPUT_DEFS): document.

From-SVN: r93726
2005-01-16 15:28:18 +00:00
Eric Botcazou
eebeecacfb re PR middle-end/18820 (ACATS c95300[123] and c980002 fail at runtime)
PR middle-end/18820
	* varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Return
	zero for nested functions needing a static chain or functions
	with a non-constant address.

From-SVN: r93633
2005-01-14 08:03:20 +00:00
Alan Modra
abb8b19a1f varasm.c (default_section_type_flags_1): Don't set SECTION_SMALL.
* varasm.c (default_section_type_flags_1): Don't set SECTION_SMALL.
	* config/ia64/ia64.c (TARGET_SECTION_TYPE_FLAGS): Define.
	(TARGET_RWRELOC): Define.
	(ia64_rwreloc_section_type_flags): Delete.
	(ia64_section_type_flags): New function.
	* config/ia64/hpux.h (TARGET_SECTION_TYPE_FLAGS): Don't define.
	(TARGET_RWRELOC): Define.

From-SVN: r93175
2005-01-11 14:37:28 +10:30
Jan Beulich
826eb7eda5 ia64.c (ia64_in_small_data_p): Also handle the section names resulting from...
gcc/
2005-01-10  Jan Beulich  <jbeulich@novell.com>

	* config/ia64/ia64.c (ia64_in_small_data_p): Also handle the section
	names resulting from -ffunction-sections/-fdata-sections and linkonce
	ones.
	* varasm.c (default_section_type_flags_1): Also set SECTION_SMALL
	based on the section name. Rearrange the section name comparison logic
	slightly so that each section name is compared against at most once.

From-SVN: r93134
2005-01-10 07:42:49 +00:00
Richard Henderson
bedb9fc04b re PR c/19031 (#pragma weak handling changes in 4.0.0)
PR c/19031
        * c-decl.c (pop_file_scope): Call maybe_apply_pending_pragma_weaks.
        * c-lang.c (finish_file): Don't do it here.
        * objc/objc-act.c (objc_finish_file): Likewise.

        * cgraph.c (decl_assembler_name_equal): New.
        (cgraph_node_for_asm, cgraph_varpool_node_for_asm): New.
        (cgraph_varpool_node): Actually link up cgraph_varpool_nodes.
        * cgraph.h (struct cgraph_varpool_node): Add next.
        (cgraph_node_for_asm, cgraph_varpool_node_for_asm): Declare.
        * varasm.c (assemble_alias): Mark the target as needed.

From-SVN: r92803
2005-01-01 23:52:31 -08:00
Richard Henderson
d5606ec91f * varasm.c (force_const_mem): Call set_mem_align.
From-SVN: r92533
2004-12-22 23:13:05 -08:00
Mark Mitchell
57829bc4f0 defaults.h (ASM_OUTPUT_INTERNAL_LABEL): New macro.
* defaults.h (ASM_OUTPUT_INTERNAL_LABEL): New macro.
	* output.h (assemble_name_raw): Declare it.
	* system.h (ASM_OUTPUT_INTERNAL_LABEL): Do not poison it.
	* varasm.c (assemble_name_raw): New function.
	(assemble_name): Use it.
	(default_internal_label): Likewise.
	* config/darwin.c (darwin_asm_output_dwarf_delta): Likewise.
	* doc/tm.texi (ASM_OUTPUT_INTERNAL_LABEL): Document.

From-SVN: r92401
2004-12-20 02:08:57 +00:00
Eric Botcazou
64270ab056 re PR middle-end/15486 (-fdata-sections moves common vars to .bss)
PR middle-end/15486
	* varasm.c (asm_emit_uninitialised): Return early if
	a custom section is requested.
	(assemble_variable): Revert 2002-03-15 patch.

From-SVN: r92365
2004-12-18 21:49:55 +00:00
Nathan Sidwell
08f2586c92 tree.def (SET_TYPE): Remove.
* tree.def (SET_TYPE): Remove.
	(CONSTRUCTOR): Update description.
	* builtins.c (type_to_class) Remove SET_TYPE case.
	* dbxout.c (dbxout_type): Likewise.
	* dwarf2out.c (is_base_type): Likewise.
	(gen_set_type_die): Remove.
	(gen_type_die): Remove SET_TYPE case.
	* expr.c (count_type_elements): Likewise.
	(mostly_zeroes_p): Likewise.
	(store_constructor): Likewise.
	* print_tree.c (print_node): Likewise.
	* stor-layout.c (layout_type): Likewise.
	* tree-browser.c (browse_tree): Likewise.
	* tree-inline.c (remap_type): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree.c (type_contains_plaeholder_1, type_hash_eq,
	variably_modified_type_p, initializer_zerop): Likewise.
	* tree.h (SET_OR_ARRAY_CHECK): Remove.
	(AGGREGATE_TYPE_P): Remove SET_TYPE check.
	(TYPE_DOMAIN): Use ARRAY_TYPE_CHECK.
	* typeclass.h (enum type_class): Remove set_type_class.
	* varasm.c (const_hash_1): Remove SET_TYPE case.
	(compare_constant, copy_constant, output_constant): Likewise.
	* config/i386/i386.c (classify_argument): Likewise.
	* config/ia64/ia64.c (hfa_element_mode): Likewise.
	* config/sparc/sparc.c (sparc_type_code): Likewise.

	* ada/decl.c (gnat_substitute_in_type): Remove SET_TYPE case.

From-SVN: r91931
2004-12-09 10:54:50 +00:00
Zack Weinberg
857e7259c4 re PR middle-end/17982 (stop calling assemble_external before final assembly output time)
PR 17982
	* varasm.c (pending_assemble_externals): New static.
	(assemble_external_real): Meat of assemble_external split out
	to this new function.
	(process_pending_assemble_externals): New function.
	(assemble_external): Use gcc_assert.  If flag_unit_at_a_time
	is true and the basic test passes, merely cons the decl onto
	the pending list to be handled later.
	* tree.h: Declare process_pending_assemble_externals.
	* cgraphunit.c (cgraph_optimize): Call it.

	* config/h8300/h8300.h: Do not define ASM_OUTPUT_EXTERNAL.

From-SVN: r91914
2004-12-08 19:13:35 +00:00
H.J. Lu
0267621529 varasm.c (make_decl_rtl): Add the missing `;'.
2004-12-02  H.J. Lu  <hongjiu.lu@intel.com>

	* varasm.c (make_decl_rtl): Add the missing `;'.

From-SVN: r91658
2004-12-02 11:56:26 -08:00
Andrew Pinski
30513cf6f9 varasm.c (decode_reg_name): Revert change to check for zero length strings.
2004-12-02  Andrew Pinski  <pinskia@physics.uc.edu>

        * varasm.c (decode_reg_name): Revert change to check for zero
        length strings.
        (make_decl_rtl): Make sure that we call decode_reg_name only
        when needed.

From-SVN: r91638
2004-12-02 06:05:50 -08:00
Alan Modra
0050e8620a varasm.c (default_encode_section_info): Don't set SYMBOL_FLAG_SMALL on TLS symbols.
* varasm.c (default_encode_section_info): Don't set SYMBOL_FLAG_SMALL
	on TLS symbols.
	* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Remove TLS
	check.

From-SVN: r91515
2004-11-30 20:19:03 +10:30
Alan Modra
e13971e036 varasm.c (default_elf_select_section_1): Only pass DECL_P decl to named_section.
* varasm.c (default_elf_select_section_1): Only pass DECL_P decl
	to named_section.

From-SVN: r91464
2004-11-29 21:59:09 +10:30
Alan Modra
6654de69a7 re PR target/9571 ([PPC] problems with 'const', -msdata=eabi and sections.)
PR target/9571
	* varasm.c (default_elf_select_section_1): Pass decl to named_section.

From-SVN: r91462
2004-11-29 16:54:30 +10:30
Paul Brook
d31f360428 re PR target/17735 (make stops with "initializer for integer value is too complicated" while building an avr-cross compiler)
PR target/17735
	* varasm.c (default_assemble_integer): Allow pointer-sized values.
	Expand comment.

From-SVN: r90918
2004-11-19 13:12:38 +00:00
Ziemowit Laski
2256aa1cff varasm.c (output_addressed_constants): For CONST_DECLs, output the initializer if present.
[gcc/ChangeLog]
2004-11-12  Ziemowit Laski  <zlaski@apple.com>

       * varasm.c (output_addressed_constants): For CONST_DECLs,
       output the initializer if present.

[gcc/testsuite/ChangeLog]
2004-11-12  Ziemowit Laski  <zlaski@apple.com>

       * objc.dg/const-str-8.m, objc.dg/const-str-9.m:
       New tests.

From-SVN: r90569
2004-11-13 02:08:44 +00:00
Kazu Hirata
903676f62f varasm.c (get_named_section_flags, [...]): Make them static.
* varasm.c (get_named_section_flags, decl_tls_model): Make
	them static.
	* output.h: Remove the prototype for get_named_section_flags.
	* tree.h: Remove the prototype for decl_tls_model.

From-SVN: r90506
2004-11-11 23:15:52 +00:00
Zack Weinberg
40aea05cfa varasm.c (function_section): If DECL is NULL_TREE, don't try to do anything else.
* varasm.c (function_section): If DECL is NULL_TREE, don't try
	to do anything else.  Do not call get_insns if cfun or
	cfun->emit are NULL.

From-SVN: r89777
2004-10-28 20:52:42 +00:00
Andreas Schwab
bab208b486 varasm.c (default_stabs_asm_out_destructor): Mark symbol as unused.
* varasm.c (default_stabs_asm_out_destructor): Mark symbol as
	unused.
	(default_stabs_asm_out_constructor): Likewise.

From-SVN: r89633
2004-10-27 09:22:02 +00:00
Zack Weinberg
93a27b7bad dbxout.c: Include obstack.h.
* dbxout.c: Include obstack.h.
	(ASM_STABS_OP): Take XCOFF_DEBUGGING_INFO into account in
	default definition.
	(ASM_STABD_OP, NO_DBX_MAIN_SOURCE_DIRECTORY, DBX_CONTIN_CHAR):
	Default-define here.
	(DBX_CONTIN_LENGTH): Move definition with others.
	(DBX_FINISH_STABS): New target macro.
	(current_sym_code, current_sym_value, current_sym_addr)
	(current_sym_nchars, CHARS, dbxout_continue)
	(print_int_cst_octal, print_octal, print_wide_int)
	(dbxout_prepare_symbol, dbxout_finish_symbol): Delete.
	(stabstr_ob, stabstr_last_contin_point): New variables.
	(NUMBER_FMT_LOOP): New improper macro.
	(dbxout_int, dbxout_stab_value_zero, dbxout_stab_value_label)
	(dbxout_stab_value_label_diff, dbxout_stab_value_internal_label)
	(dbxout_stab_value_internal_label_diff, dbxout_stabd)
	(dbxout_begin_stabn, dbxout_begin_stabn_sline)
	(dbxout_begin_simple_stabs, dbxout_begin_simple_stabs_desc)
	(dbxout_begin_complex_stabs, dbxout_finish_complex_stabs)
	(stabstr_C, stabstr_S, stabstr_I, stabstr_D, stabstr_U, stabstr_O)
	(stabstr_continue, DECL_ACCESSIBILITY_CHAR)
	New functions and/or proper function-like macros.
	(CONTIN): Use stabstr_continue, unconditionally.
	(get_lang_number): Define unconditionally, with ATTRIBUTE_UNUSED.
	(dbxout_init): Initialize stabstr_ob.  Check
	NO_DBX_MAIN_SOURCE_DIRECTORY.  Only write out the Ltext label
	if it was used.  Use the new interfaces.
	(dbxout_source_file): Remove file argument; always write to
	asm_out_file.  Use the new interfaces.
	(dbxout_type_method_1): Remove second argument which is always
	DECL_ASSEMBLER_NAME of the first argument.  Use the new interfaces.
	(dbxout_type_methods): Remove write-only variables.  Use the
	new interfaces.
	(dbxout_parms): Refactor to remove code duplicated in each of
	several successive if-else-if blocks.  Use the new interfaces.
	(dbxout_function_end, emit_bincl_stab, dbxout_end_source_file)
	(dbxout_source_line, dbxout_finish, dbxout_type_index)
	(dbxout_type_fields, dbxout_range_type, dbxout_type, dbxout_type_name)
	(dbxout_class_name_qualifiers, dbxout_symbol, dbxout_symbol_location)
	(dbxout_symbol_name, dbxout_reg_parms, dbxout_args)
	(dbx_output_lbrac, dbx_output_rbrac, dbxout_block):
	Use the new interfaces.
	* Makefile.in (dbxout.o): Update dependencies.

	* defaults.h: Don't define ASM_STABD_OP.
	* output.h: Prototype new dbxout_* interfaces.
	* system.h: Poison DBX_OUTPUT_GCC_MARKER and DBX_FINISH_SYMBOL.
	* varasm.c: Don't define ASM_STABS_OP.
	(default_stabs_asm_out_constructor, default_stabs_asm_out_destructor):
	Use the new dbxout.c interfaces.  Call sorry if neither
	DBX_DEBUGGING_INFO nor XCOFF_DEBUGGING_INFO is defined.

	* xcoffout.h: Don't define ASM_STABS_OP.
	(DBX_FINISH_SYMBOL): Rewrite and rename DBX_FINISH_STABS.
	(DBX_OUTPUT_MAIN_SOURCE_DIRECTORY, DBX_OUTPUT_GCC_MARKER): Delete.
	(NO_DBX_MAIN_SOURCE_DIRECTORY, NO_DBX_GCC_MARKER): Define.
	(DBX_OUTPUT_MAIN_SOURCE_FILE_END): Change bare block to
	do { ... } while (0) idiom.

	* config/alpha/alpha.c (num_source_filenames): Export.
	* config/alpha/alpha.h (num_source_filenames): Declare.
	(DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
	* config/m32r/m32r.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	Always use .debugsym.  Update commentary.
	* config/mips/mips.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
	* config/rs6000/linux64.h (DBX_OUTPUT_SOURCE_LINE, DBX_OUTPUT_BRAC):
	Use new interfaces.
	* config/rs6000/rs6000.c: If TARGET_MACHO, include gstab.h.
	(macho_branch_islands): Use new interfaces.

	* doc/tm.texi: Update.

From-SVN: r89623
2004-10-27 01:29:42 +00:00
Geoffrey Keating
f1a6626519 Index: gcc/gcc/ChangeLog
2004-10-25  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (LINK_SPEC): Default weak_reference_mismatches
	to 'non-weak'.
	(MAKE_DECL_ONE_ONLY): Set DECL_WEAK.
	(ASM_MAKE_LABEL_LINKONCE): Delete.
	(ASM_WEAKEN_DECL): New.
	(ASM_DECLARE_OBJECT_NAME): Look at DECL_WEAK not DECL_ONE_ONLY.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(TEXT_SECTION_ASM_OP): Add a tab.
	(DATA_SECTION_ASM_OP): Likewise.
	(SECTION_FUNCTION): Add a tab.  Use fputs.  Don't call
	data_section on every section change.
	(EXTRA_SECTIONS): Add a bunch of new extra sections.
	(EXTRA_SECTION_FUNCTIONS): Likewise.
	(USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
	(JCR_SECTION_NAME): Define.
	(TARGET_SECTION_TYPE_FLAGS): Don't define.
	* config/darwin.c (darwin_encode_section_info): A symbol is defined
	in this file if it is not weak.
	(textcoal_section): Delete.
	(datacoal_section): Delete.
	(darwin_make_decl_one_only): Delete.
	(machopic_select_section): Handle functions.
	(darwin_asm_named_section): Add a tab.
	(darwin_section_type_flags): Delete.
	(darwin_unique_section): Delete contents.
	(darwin_emit_unwind_label): Add a tab.  Make decls weak if
	DECL_WEAK is set.
	* config/darwin-protos.h (darwin_section_type_flags): Delete.
	(darwin_make_decl_one_only): Delete.
	(text_coal_section): New.
	(text_unlikely_section): New.
	(text_unlikely_coal_section): New.
	(const_coal_section): New.
	(data_coal_section): New.
	(const_data_coal_section): New.
	* varasm.c (function_section): Honour
	USE_SELECT_SECTION_FOR_FUNCTIONS.
	* dwarf2out.c (output_call_frame_info): Look at DECL_WEAK when
	TARGET_USES_WEAK_UNWIND_INFO is in effect.
	* dbxout.c (dbxout_source_file): Don't change sections while
	a function is being output.

Index: gcc/testsuite/ChangeLog
2004-10-25  Geoffrey Keating  <geoffk@apple.com>

	* objc.dg/image-info.m: Update for changes to section selection.

Index: libjava/ChangeLog
2004-10-25  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.am (DARWIN_CRT_SRC): New.
	(libgcj_la_SOURCES): Use it.
	* configure.ac: Define USING_DARWIN_CRT when on Darwin.
	* darwin.cc: New file.
	* include/jvm.h (_Jv_RegisterClasses): Constify.
	(_Jv_RegisterClasses_Counted): New prototype.
	* java/lang/Class.h: Include stddef.h.
	(_Jv_RegisterClasses): Constify.
	(_Jv_RegisterClasses_Counted): New prototype.
	(Object): Make '_Jv_RegisterClasses_Counted' a friend.
	* java/lang/natClassLoader.cc (_Jv_RegisterClasses): Constify.
	(_Jv_RegisterClasses_Counted): New function.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* gcj/Makefile.in: Regenerate.
	* include/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

Index: libstdc++-v3/ChangeLog
2004-10-25  Geoffrey Keating  <geoffk@apple.com>

	* libsupc++/new_op.cc (new): Make weak.
	* libsupc++/new_opnt.cc (new): Make weak.
	* libsupc++/new_opv.cc (new): Make weak.
	* libsupc++/new_opvnt.cc (new): Make weak.
	* libsupc++/delete_op.cc (delete): Make weak.
	* libsupc++/delete_opnt.cc (delete): Make weak.
	* libsupc++/delete_opv.cc (delete): Make weak.
	* libsupc++/delete_opvnt.cc (delete): Make weak.

From-SVN: r89572
2004-10-26 06:09:05 +00:00
Kazu Hirata
4fe8591b52 varasm.c (get_pool_mode_for_function, [...]): Remove.
* varasm.c (get_pool_mode_for_function, get_pool_offset):
	Remove.
	* rtl.h: Remove the corresponding prototypes.

From-SVN: r89465
2004-10-22 18:48:15 +00:00
Paul Brook
a13fd90532 varasm.c (default_assemble_integer): Return false for values wider than the target word size.
* varasm.c (default_assemble_integer): Return false for values wider
	than the target word size.  Works around GAS bug.

From-SVN: r87827
2004-09-21 23:40:21 +00:00
Jeffrey D. Oldham
6615c44615 alias.c (find_base_decl): Remove unreachable case '3' block.
2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* alias.c (find_base_decl): Remove unreachable case '3' block.
	* expr.c (safe_from_p): Abort if passed a type.
	* tree-gimple.c (recalculate_side_effects): Abort if passed
	anything other than an expression.
	* tree-ssa-pre.c (phi_translate): Return expr immediately if
	is_gimple_min_invariant is true for it.  Reorder cases for clarity.
	Abort on un-handled tree classes.
	(valid_in_set): Likewise.
	* tree.c (tree_code_class_strings): New static data.

	* tree.h (enum tree_code_class): New.
	(tree_code_class_strings): Declare.
	(TREE_CODE_CLASS_STRING, EXCEPTIONAL_CLASS_P, CONSTANT_CLASS_P)
	(REFERENCE_CLASS_P, COMPARISON_CLASS_P, UNARY_CLASS_P, BINARY_CLASS_P)
	(STATEMENT_CLASS_P, EXPRESSION_CLASS_P, IS_TYPE_OR_DECL_P): New macros.
	(TYPE_P, DECL_P, IS_NON_TYPE_CODE_CLASS, IS_EXPR_CODE_CLASS)
	(checking macros, EXPR_LOCATION, SET_EXPR_LOCATION, EXPR_LOCUS): Update.

	* tree.def, c-common.def, objc/objc-tree.def: Use
	tree_code_class enumeration constants instead of code letters.

	* alias.c, builtins.c, c-common.c, c-format.c, c-lang.c, c-pragma.c
	* c-typeck.c, cgraphunit.c, convert.c, dbxout.c, dwarf2out.c
	* emit-rtl.c expr.c, fold-const.c, gimplify.c, lambda-code.c
	* langhooks.c, langhooks.h, predict.c, print-tree.c, reload1.c, stmt.c
	* tree-browser.c, tree-cfg.c, tree-chrec.c, tree-complex.c, tree-dfa.c
	* tree-dump.c, tree-eh.c, tree-gimple.c, tree-inline.c, tree-nested.c
	* tree-outof-ssa.c, tree-pretty-print.c, tree-sra.c, tree-ssa-ccp.c
	* tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-forwprop.c, tree-ssa-live.c
	* tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c
	* tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa-propagate.c
	* tree-ssa.c, tree-ssanames.c, tree-tailcall.c, tree.c, varasm.c
	* config/sol2-c.c, config/arm/arm.c, config/i386/winnt.c
	* config/pa/pa.c, config/pa/pa.h, config/sh/sh.c, objc/objc-lang.c
	Update to match.

	* LANGUAGES: Add note about change.

ada:
	* ada-tree.def: Use tree_code_class enumeration constants
	instead of code letters.
	* ada-tree.h, decl.c, misc.c, trans.c, utils.c, utils2.c:
	Update for new tree-class enumeration constants.

cp:
	* cp-tree.def: Use tree_code_class enumeration constants
	instead of code letters.
	* call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
	* mangle.c, pt.c, semantics.c, tree.c, typeck.c:
	Update for new tree-class enumeration constants.

fortran:
	* f95-lang.c, trans-expr.c, trans.c: Update for new tree-class
	enumeration constants.

java:
	* java-tree.def: Use tree_code_class enumeration constants
	instead of code letters.
	* java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for
	new tree-class enumeration constants.

treelang:
	* treetree.c: Update for new tree-class enumeration constants.

From-SVN: r87675
2004-09-17 21:55:02 +00:00
Mark Mitchell
04a7518894 varasm.c (default_function_rdodata_section): Make sure to pass along a decl for a link-once section.
* varasm.c (default_function_rdodata_section): Make sure to pass
	along a decl for a link-once section.

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

From-SVN: r87569
2004-09-15 22:16:33 +00:00
Joseph Myers
971801fff6 attribs.c, [...]: Use %<, %> and %q for quoting in diagnostics going through pretty-print.c.
gcc:
	* attribs.c, builtins.c, c-format.c, c-pch.c, coverage.c,
	except.c, fold-const.c, function.c, langhooks.c, params.c,
	reload.c, reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
	tree-dump.c, tree-mudflap.c, tree.c, varasm.c: Use %<, %> and %q
	for quoting in diagnostics going through pretty-print.c.  Use ''
	for quoting in other diagnostic text.
	* langhooks.c: Include intl.h.  Mark text locating diagnostics for
	translation.
	* Makefile.in (langhooks.o): Update dependencies.
	* pretty-print.h (pp_printf): Mark as accepting GCC diagnostic
	formats.

gcc/testsuite:
	* g++.dg/ext/member-attr.C, g++.dg/warn/deprecated.C,
	gcc.dg/deprecated.c, gcc.dg/noreturn-1.c, gcc.dg/noreturn-4.c:
	Update expected messages.

libmudflap:
	* testsuite/libmudflap.c/pass35-frag.c: Update expected message.

From-SVN: r87563
2004-09-15 21:48:10 +01:00
Mark Mitchell
c18a5b6cad configure.ac: Check for COMDAT support.
* configure.ac: Check for COMDAT support.  Robustify check for
	SHF_MERGE support.
	* configure: Regenerated.
	* config.in: Likewise.
	* langhooks-def.h (lhd_comdat_group): New function.
	(LANG_HOOKS_COMDAT_GROUP): New macro.
	(LANG_HOOKS_DECLS): Use it.
	* langhooks.c (lhd_comdat_group): Define.
	* langhooks.h (lang_hooks_for_decls): Add comdat_group.
	* output.h (named_section_flags): Make it a macro.
	(named_section_real): New function.
	(default_no_named_section): Add decl parameter.
	(default_elf_asm_named_section): Likewise.
	(default_coff_asm_named_section): Likewise.
	(default_pe_asm_named_section): Likewise.
	* target.h (gcc_target): Adjust type of named_section.
	* varasm.c (named_section_flags): Rename to named_section_real.
	Add decl parameter.
	(default_no_named_section): Add decl parameter.
	(default_elf_asm_named_section): Use COMDAT, if available.  Deal
	with the case that ASM_COMMENT_START is "@".
	(default_coff_asm_named_section): Add decl parameter.
	(default_pe_asm_named_section): Likewise.
	* config/alpha/alpha.c (vms_asm_named_section): Add decl
	parameter.
	(unicosmk_asm_named_section): Likewise.
	* config/arm/arm.c (arm_elf_asm_named_section): Remove.
	* config/arm/elf.h (TARGET_ASM_NAMED_SECTION): Likewise.
	* config/c4x/c4x.c (c4x_asm_named_section): Add decl parameter.
	* config/cris/cris-protos.h (cris_target_asm_named_section):
	Likewise.
	* config/cris/cris.c (cris_target_asm_named_section):
	Likewise.
	* config/h8300/h8300.c (h8300_asm_named_section): Likewise.
	* config/i386/i386-protos.h (i386_pe_asm_named_section):
	Likewise.
	* config/i386/winnt.c (i386_pe_asm_named_section): Likewise.
	* config/m68k/m68k.c (m68k_coff_asm_named_section): Likewise.
	* config/mcore/mcore.c (mcore_asm_named_section): Likewise.
	* config/rs6000/rs6000.c (rs6000_xcoff_asm_named_section):
	Likewise.
	* config/sparc/sparc.c (sparce_elf_asm_named_section): Likewise.

	* cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define.
	* cp-tree.h (cxx_comdat_group): Declare.
	* decl.c (cxx_comdat_group): New function.

From-SVN: r87557
2004-09-15 17:03:22 +00:00
Geoffrey Keating
5f11bc8b45 output.h (unlikely_section_label): Delete declaration.
* output.h (unlikely_section_label): Delete declaration.
	(unlikely_text_section_name): Likewise.
	* varasm.c (unlikely_section_label_printed): Make static.
	(unlikely_section_label): Likewise.
	(unlikely_text_section_name): Likewise.

From-SVN: r87313
2004-09-10 18:54:31 +00:00
Richard Kenner
a4e9ffe591 c-common.c (c_alignof_expr): Use DECL_ALIGN_UNIT and TYPE_ALIGN_UNIT.
* c-common.c (c_alignof_expr): Use DECL_ALIGN_UNIT and TYPE_ALIGN_UNIT.
	(c_sizeof_of_alignof_type): Likewise.
	* expr.c (array_ref_element_size): Likewise.
	(highest_pow2_factor_for_target): Likewise.
	* gimplify.c (canonicalize_addr_expr): Likewise.
	(gimplify_compound_lval): Likewise.
	* stor-layout.c (finalize_record_size, finalize_type_size): Likewise.
	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
	* varasm.c (assemble_variable): Likewise.
	(output_constant_def_contents): Alignments are unsigned.

From-SVN: r86848
2004-08-31 18:46:31 -04:00
Richard Henderson
5cc200fcf0 c-typeck.c (build_unary_op): Don't expand ADDR_EXPR of a COMPONENT_REF to pointer arithmetic.
* c-typeck.c (build_unary_op): Don't expand ADDR_EXPR of a
        COMPONENT_REF to pointer arithmetic.
        * varasm.c (initializer_constant_valid_p): Allow "&(*c).f", for
        constant "c" as a valid constant initializer.  Allow narrowing of
        differences against the same base object, for any base object.

From-SVN: r86794
2004-08-30 11:49:20 -07:00
Andrew Pinski
f17327513a varasm.c (ecode_reg_name): Do nothing if the asmspec is empty.
2004-08-18  Andrew Pinski  <apinski@apple.com>

        * varasm.c (ecode_reg_name): Do nothing if the asmspec is empty.

From-SVN: r86237
2004-08-18 23:16:37 -07:00
Richard Henderson
542a8afa8a emit-rtl.c (gen_const_mem): New.
* emit-rtl.c (gen_const_mem): New.
        * rtl.h (gen_const_mem): Declare.
        * expr.c (do_tablejump): Use it.
        * varasm.c (force_const_mem): Likewise.
        * config/darwin.c (machopic_indirect_data_reference): Likewise.
        (machopic_legitimize_pic_address): Likewise.
        * config/arm/arm.c (legitimize_pic_address): Likewise.
        * config/i386/i386.c (legitimize_pic_address): Likewise.
        (legitimize_tls_address): Likewise.
        * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
        * config/ia64/ia64.md (load_fptr): Likewise.
        * config/m32r/m32r.c (m32r_legitimize_pic_address): Likewise.
        * config/pa/pa.c (legitimize_pic_address): Likewise.
        * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
        (rs6000_emit_move): Likewise.
        * config/s390/s390.c (legitimize_pic_address): Likewise.
        (legitimize_tls_address): Likewise.
        * config/s390/s390.md (casesi): Likewise.
        * config/sh/sh.c (sh_reorg): Likewise.
        * config/sparc/sparc.c (legitimize_pic_address): Likewise.
        * config/v850/v850.md (casesi): Likewise.

        * config/darwin.c (machopic_indirect_call_target): Set MEM_NOTRAP_P.
        * config/sh/sh.c (prepare_move_operands): Remove incorrect
        use of MEM_READONLY_P.

From-SVN: r86207
2004-08-18 14:08:35 -07:00
Caroline Tice
9fb3243411 Hot/cold partitioning update patch.
Hot/cold partitioning update patch.  The problems that this patch
attemptd to address/fix are:

- Fix places where adding in_unlikely_executed_text to the enum data
  type "in_section"  threw off switch case statements.
- Make it work correctly (by turning it off) for functions where user
  specifies "__attribute__ section"
- Make it work correctly (by turning it off) for linkonce sections
- Make it work correctly with -ffunction-sections flag
- Make it output correct cold section labels
- Undo some changes to original assembly code generation
- Turn off hot/cold partitioning in the presence of DWARF debugging (for
  the moment)
- Turn off hot/cold partitioning for architectures that do not support
  named sections
- Use variables rather than constants for cold section labels and names (to
  work correctly with -ffunction-sections, among other things)


2004-08-18  Caroline Tice  <ctice@apple.com>

        * Makefile.in (STAGEFEEDBACK_FLAGS_TO_PASS) Add
        "-freorder-blocks-and-partition" to the flags used in second
        stage of profiledbootstrap.
        * bb-reorder.c (push_to_next_round_p): Add new variable,
        next_round_is_last; set and use variable to make sure, when
        partitioning, that the last trace construction round consists
        of all (and only) cold basic blocks.
        (rotate_loop): Don't copy blocks that end in a section
        crossing jump.
        (copy_bb): Correctly initialize "partition" of duplicated bb.
        (add_unlikely_executed_notes): Add a comment.
        (find_rarely_executed_basic_blocks_and_crossing_edges): Modify
        to make sure, if function contains hot blocks, that the
        successors of ENTRY_BLOCK_PTR are hot; also, only look for
        crossing edges if the architecture supports named sections.
        (mark_bb_for_unlikely_executed_section): Modify to always
        insert the NOTE_INSN_UNLIKELY_EXECUTED_CODE immediately after
        the basic block note insn.
        (fix_crossing_unconditional_branches): Remove extra space.
        (fix_edges_for_rarely_executed_code): Modify to only do
        partitioning work if the architecture supports named sections.
        (reorder_basic_blocks): Modify to only add
        NOTE_INSN_UNLIKELY_EXECUTED_CODE notes if the architecture
        supports named sections.
        * c-common.c (handle_section_attribute): Initialize new global
        variable, user_defined_section_attribute, to true if user has
        specified one.
        * cfgcleanup.c (try_forward_edges): Modify to not attempt to
        forward edges that cross section boundaries.
        * cfglayout.c (fixup_reorder_chain): Modify to only fix up
        partitioning information if the architecture supports named
        sections.
        * cfgrtl.c (target.h): Add statement to include this.
        (rtl_split_block): Make sure newly created bb gets correct
        partition.
        (try_redirect_by_replacing_jump): Make sure redirection isn't
        attempting to cross section boundaries.
        (force_nonfallthru_and_redirect): Only do partition fix up if
        architecture supports named sections.
        (rtl_split_edge): Make sure newly created bb ends up in
        correct partition.
        (commit_one_edge_insertion): Remove code that incorrectly
        updated basic block partition; Make sure partition fix up only
        happens if architecture supports named sections and it's not
        already done.
        (rtl_verify_flow_info_1): Fix if-condition on test/error
        condition that fallthru edges are not allowed to cross section
        boundaries.
        * defaults.h (NORMAL_TEXT_SECTION_NAME): Remove this.
        * final.c (final_scan_insn): Remove redundant test from if-statement;
        change calls to text_section into calls to function_section; add code
        to only to partitioning fix up if architecture supports named
        sections.
        * ifcvt.c (find_if_case_1): Make sure newly created bb has correct
        partition.
        (if_convert): Add targetm.have_named_sections to test.
        * output.h (unlikely_section_label): Extern declaration for new global
        variable.
        (unlikely_text_section_name): Likewise.
        * opts.c (decode_options): If both partitioning and DWARF debugging
        are turned on, issue a warning that this doesn't work, and change
        partitiong to basic block reordering (without hot/cold partitions).
        * passes.c (rest_of_handle_final): Re-set new global variable,
        user_defined_section_attribute, to false.
        (rest_of_compilation): Change options for calling partitioning
        function: Don't call if the user defined the section attribute, and
        don't call if DECL_ONE_ONLY is true for the current function.
        * predict.c (choose_function_section): Return immediately if we
        are doing hot/cold partitioning (i.e. let the basic block partitioning
        determine where the function belongs).
        * reg-stack.c (emit_swap_insn): Add condition to step over
        NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
        * toplev.c (user_defined_section_attribute): New global variable.
        * toplev.h (user_defined_section_attribute): Extern declaration for new
        global variable.
        * varasm.c (unlikely_section_label): New global variable.
        (unlikely_text_section_name): New global variable.
        (unlikely_text_section): Add code to initialize unlikely_text_section_name
        if necessary; modify to use unlikely_text_section_name and
        unlikely_section_label; also to use named_section properly.
        (in_unlikely_text_section):  Modify to work correctly with named_section
        and to use unlikely_text_section_name.
        (named_section):  Add code to work properly with cold section.
        (function_section): Clean up if-statement.
        * config/darwin.c (darwin_asm_named_section): Return to original code,
        removing use of SECTION_FORMAT_STRING.
        * config/arm/pe.h (switch_to_section):  Add case for
        in_unlikely_executed_text to switch statement.
        * config/i386/cygming.h (switch_to_section): Likewise.
        * config/i386/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove.
        (SECTION_FORMAT_STRING): Likewise.
        * config/mcore/mcore.h (switch_to_section): Likewise.
        * config/rs6000/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove.

From-SVN: r86189
2004-08-18 09:22:08 -07:00
Richard Henderson
389fdba06a rtl.h (MEM_READONLY_P): Replace RTX_UNCHANGING_P.
* rtl.h (MEM_READONLY_P): Replace RTX_UNCHANGING_P.
	* alias.c (true_dependence): Update to match new semantics.
	(canon_true_dependence, write_dependence_p): Likewise.
	(anti_dependence, output_dependence): Update write_dependence_p args.
	(unchanging_anti_dependence): Remove.
	* calls.c (purge_mem_unchanging_flag): Remove.
	(fixup_tail_calls): Don't call it.
	(expand_call): Don't add unchanging memory to function usage.
	* expr.c (emit_block_move_via_libcall): Likewise.
	(clear_storage_via_libcall): Don't clobber RTX_UNCHANGING_P mems.
	(get_subtarget): Don't use RTX_UNCHANGING_P.
	(expand_assignment, store_constructor, expand_expr_real_1): Likewise.
	(do_tablejump): Set MEM_READONLY_P, not RTX_UNCHANGING_P.
	* combine.c (get_last_value_validate): Use MEM_READONLY_P.
	* cse.c (insert): Don't use RTX_UNCHANGING_P.
	(cse_insn, canon_hash): Use MEM_READONLY_P.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Use MEM_READONLY_P
	instead of RTX_UNCHANGING_P.
	* explow.c (maybe_set_unchanging): Remove.
	* expr.h (maybe_set_unchanging): Remove.
	* flow.c (insn_dead_p, mark_used_regs): Use anti_dependence.
	* function.c (assign_stack_temp_for_type): Don't use RTX_UNCHANGING_P.
	(assign_parm_setup_reg, expand_function_start): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* ra-rewrite.c (emit_colors): Likewise.
	* regmove.c (copy_src_to_dest, regmove_optimize): Likewise.
	(fixup_match_1): Likewise.
	* reload1.c (reload, alter_reg): Likewise.
	* local-alloc.c (validate_equiv_mem): Check MEM_READONLY_P,
	not RTX_UNCHANGING_P.
	(equiv_init_varies_p): Likewise.
	* loop-invariant.c (check_maybe_invariant): Likewise.
	* resource.c (mark_referenced_resources, mark_set_resources): Likewise.
	* loop.c (note_addr_stored): Likewise.
	(prescan_loop): Likewise. Don't check function usage for clobbered
	unchanging memory.
	* rtlanal.c (rtx_unstable_p): Check MEM_READONLY_P,
        not RTX_UNCHANGING_P.
	(rtx_varies_p, modified_between_p, modified_in_p): Likewise.
	* varasm.c (force_const_mem): Likewise.
	* stmt.c (expand_decl): Don't set RTX_UNCHANGING_P.
	* web.c (entry_register): Likewise.
	* tree-gimple.h (get_base_address): Move decl ...
	* tree.h: ... here.
	* doc/rtl.texi (MEM_READONLY_P): Replace RTX_UNCHANGING_P.

	* config/alpha/alpha.c (alpha_set_memflags_1): Rewrite to be
	called via for_each_rtx.  Copy MEM_SCALAR_P, MEM_NOTRAP_P too.
	(alpha_set_memflags): Update to match.

	* config/darwin.c (machopic_indirect_data_reference): Set
	MEM_READONLY_P instead of RTX_UNCHANGING_P.
	(machopic_indirect_call_target): Likewise.
	(machopic_legitimize_pic_address): Likewise.
	* config/arm/arm.c (legitimize_pic_address, arm_gen_load_multiple,
	arm_gen_store_multiple, arm_gen_movmemqi): Likewise.
	* config/arm/arm.md (load_multiple, store_multiple): Likewise.
	* config/frv/frv.md (symGOT2reg): Likewise.
	* config/i386/i386.c (legitimize_pic_address,
	legitimize_tls_address, ix86_split_to_parts): Likewise.
	* config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
	* config/ia64/ia64.md (load_fptr): Likewise.
	* config/m32r/m32r.c (m32r_legitimize_pic_address): Likewise.
	* config/m68k/m68k.c (legitimize_pic_address): Likewise.
	* config/mcore/mcore.c (block_move_sequence): Likewise.
	* config/mn10300/mn10300.md (symGOT2reg): Likewise.
	* config/pa/pa.c (legitimize_pic_address): Likewise.
	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
	(rs6000_emit_move): Likewise.
	* config/s390/s390.c (legitimize_pic_address): Likewise.
	(legitimize_tls_address): Likewise.
	* config/s390/s390.md (casesi): Likewise.
	* config/sh/sh.c (prepare_move_operands, sh_reorg): Likewise.
	* config/sh/sh.md (symGOT2reg): Likewise.
	* config/sparc/sparc.c (legitimize_pic_address): Likewise.
	* config/v850/v850.md (casesi): Likewise.

	* config/ia64/ia64.c (gen_thread_pointer): Don't set RTX_UNCHANGING_P.
	* config/iq2000/iq2000.c (save_restore_insns): Likewise.
	* config/mips/mips.c (mips_restore_gp): Likewise.
	(mips_save_restore_reg, mips16_gp_pseudo_reg): Likewise.
	* config/sh/sh.c (sh_reorg): Likewise.

From-SVN: r86178
2004-08-18 01:25:01 -07:00
David Edelsohn
07e1528687 varasm.c (MAX_OFILE_ALIGNMENT): Move ...
* varasm.c (MAX_OFILE_ALIGNMENT): Move ...
        * defaults.h (MAX_OFILE_ALIGNMENT): ... here.

From-SVN: r86168
2004-08-17 22:27:18 -04:00
Devang Patel
8e3e233be0 c-common.c (handle_used_attribute): Set DECL_PRESERVE_P.
* c-common.c (handle_used_attribute): Set DECL_PRESERVE_P.
        * print-tree.c (print_node): Print DECL_PRESERVE_P.
        * target-def.h (TARGET_ASM_MARK_DECL_PRESERVED): New #define.
        (TARGET_ASM_OUT): New member, TARGET_ASM_MARK_DECL_PRESERVED
        * target.h (struct gcc_target): New member, mark_decl_preserved.
        * hooks.c (hook_void_charptr): Rename to ...
        (hook_void_constcharptr): ... new name.
        * hooks.h (hook_void_charptr): Rename to ..
        (hook_void_constcharptr): ... new name.
        * tree.h (DECL_PRESERVE_P): New #define.
        (struct tree_decl): New member, preserve_flag.
        * varasm.c (assemble_start_function): Mark decl preserved.
        (assemble_variable): Same.
        * darwin.c (darwin_mark_decl_preserved): New function.
        * darwin.h (TARGET_ASM_MARK_DECL_preserved): New #define.
        * darwin-protos.h (darwin_mark_decl_preserved): New decl.
        * doc/tm.texi (TARGET_ASM_MARK_DECL_PRESERVED): Document.

        testsuite:
        * gcc.dg/darwin-20040809-1.c: New test.

From-SVN: r86076
2004-08-16 13:54:43 -07:00
Jakub Jelinek
ab5c8549a4 re PR c++/16276 ([3.4 only] G++ generates local references to linkonce sections)
PR c++/16276
        * output.h (default_function_rodata_section,
	default_no_function_rodata_section): New prototypes.
	* target.h (struct gcc_target): Add asm_out.function_rodata_section.
	* target-def.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Define.
	(TARGET_ASM_OUT): Add it.
        * varasm.c (default_function_rodata_section,
	default_no_function_rodata_section): New functions.
        * final.c (final_scan_insn): Call
	targetm.asm_out.function_rodata_section instead of
	readonly_data_section.
	* config/darwin.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Define.
	* config/mcore/mcore.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/ip2k/ip2k.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/rs6000/xcoff.h (TARGET_ASM_FUNCTION_RODATA_SECTION):
	Likewise.
	* config/alpha/alpha.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/i386/cygming.h (TARGET_ASM_FUNCTION_RODATA_SECTION):
	Likewise.
	* config/i386/i386-interix.h (TARGET_ASM_FUNCTION_RODATA_SECTION):
	Likewise.
	* config/arm/pe.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/avr/avr.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* doc/tm.texi (TARGET_ASM_FUNCTION_RODATA_SECTION): Document.

        * g++.old-deja/g++.other/comdat4.C: New test.
        * g++.old-deja/g++.other/comdat4-aux.cc: New.

From-SVN: r85873
2004-08-12 15:57:04 +02:00
Caroline Tice
c295317dfb Hot/cold partitioning update, sub-patch: fix alignment problems
2004-08-10  Caroline Tice  <ctice@apple.com

        * varasm.c (unlikely_section_label): New global variable.
        (unlikely_text_section_name): New global variable.
        (text_section):  Remove alignment statement.
        (unlikely_text_section): Remove alignment statement; use
        unlikely_section_label rather than hard-coded string.
        (assemble_start_function): Initialize unlikely_section_label and
        unlikely_text_section_name;  make sure cold section is properly
        aligned at start of function; output unlikely_section_label if
        appropriate.

From-SVN: r85771
2004-08-10 14:49:49 -07:00